blob: e5be118821a0caf875293aa5edc3ab83fb2f5c62 [file] [log] [blame]
garciadeblas00bc0352022-03-29 00:11:30 +02001# Copyright ETSI Contributors and Others.
Mike Marchettie84eb312017-05-04 15:06:26 -04002# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
Mike Marchettie84eb312017-05-04 15:06:26 -040015
Mike Marchetti4c7e2372017-05-08 16:07:20 -040016import click
garciadeblas017c4fb2018-02-13 11:58:29 +010017from osmclient import client
garciadeblas00bc0352022-03-29 00:11:30 +020018from osmclient.common.exceptions import ClientException
19from osmclient.cli_commands import (
20 alarms,
21 k8scluster,
22 metrics,
23 netslice_instance,
24 netslice_ops,
25 netslice_template,
26 nfpkg,
27 ns,
28 nslcm_ops,
29 nslcm,
30 nspkg,
31 other,
32 packages,
33 pdus,
34 rbac,
35 repo,
36 sdnc,
37 subscriptions,
38 vca,
39 vim,
40 vnf,
41 wim,
42)
garciadeblas017c4fb2018-02-13 11:58:29 +010043import yaml
garciadeblas78e9a1b2018-11-06 05:02:45 +010044import pycurl
garciadeblas98424342019-09-17 16:49:57 +020045import os
garciadeblas6bc001c2019-11-21 12:02:05 +010046import logging
garciadeblase7c24982021-11-01 22:04:32 +010047
48
beierlm95686bb2021-03-23 16:26:45 -040049@click.group(
50 context_settings=dict(help_option_names=["-h", "--help"], max_content_width=160)
51)
52@click.option(
53 "--hostname",
54 default="127.0.0.1",
55 envvar="OSM_HOSTNAME",
56 help="hostname of server. " + "Also can set OSM_HOSTNAME in environment",
57)
beierlm95686bb2021-03-23 16:26:45 -040058@click.option(
59 "--user",
60 default=None,
61 envvar="OSM_USER",
62 help="user (defaults to admin). " + "Also can set OSM_USER in environment",
63)
64@click.option(
65 "--password",
66 default=None,
67 envvar="OSM_PASSWORD",
68 help="password (defaults to admin). " + "Also can set OSM_PASSWORD in environment",
69)
70@click.option(
71 "--project",
72 default=None,
73 envvar="OSM_PROJECT",
74 help="project (defaults to admin). " + "Also can set OSM_PROJECT in environment",
75)
76@click.option(
77 "-v",
78 "--verbose",
79 count=True,
80 help="increase verbosity (-v INFO, -vv VERBOSE, -vvv DEBUG)",
81)
82@click.option("--all-projects", default=None, is_flag=True, help="include all projects")
83@click.option(
84 "--public/--no-public",
85 default=None,
86 help="flag for public items (packages, instances, VIM accounts, etc.)",
87)
88@click.option(
89 "--project-domain-name",
90 "project_domain_name",
91 default=None,
92 envvar="OSM_PROJECT_DOMAIN_NAME",
93 help="project domain name for keystone authentication (default to None). "
94 + "Also can set OSM_PROJECT_DOMAIN_NAME in environment",
95)
96@click.option(
97 "--user-domain-name",
98 "user_domain_name",
99 default=None,
100 envvar="OSM_USER_DOMAIN_NAME",
101 help="user domain name for keystone authentication (default to None). "
102 + "Also can set OSM_USER_DOMAIN_NAME in environment",
103)
Mike Marchetti81600192017-04-19 12:42:34 -0400104@click.pass_context
tiernoc7393b82020-02-13 17:30:28 +0000105def cli_osm(ctx, **kwargs):
garciadeblas6bc001c2019-11-21 12:02:05 +0100106 global logger
tiernoc7393b82020-02-13 17:30:28 +0000107 hostname = kwargs.pop("hostname", None)
Mike Marchetti81600192017-04-19 12:42:34 -0400108 if hostname is None:
beierlm95686bb2021-03-23 16:26:45 -0400109 print(
110 (
111 "either hostname option or OSM_HOSTNAME "
112 + "environment variable needs to be specified"
113 )
114 )
Mike Marchetti81600192017-04-19 12:42:34 -0400115 exit(1)
tiernoc7393b82020-02-13 17:30:28 +0000116 # Remove None values
117 kwargs = {k: v for k, v in kwargs.items() if v is not None}
beierlm95686bb2021-03-23 16:26:45 -0400118 sol005 = os.getenv("OSM_SOL005", True)
garciadeblas017c4fb2018-02-13 11:58:29 +0100119 ctx.obj = client.Client(host=hostname, sol005=sol005, **kwargs)
beierlm95686bb2021-03-23 16:26:45 -0400120 logger = logging.getLogger("osmclient")
Mike Marchetti4c7e2372017-05-08 16:07:20 -0400121
Mike Marchetti81600192017-04-19 12:42:34 -0400122
garciadeblas00bc0352022-03-29 00:11:30 +0200123# pylint: disable=no-value-for-parameter
tiernoc077d232019-12-19 10:44:16 +0000124def cli():
Felipe Vicensb7463a42019-10-25 16:42:41 +0200125 try:
garciadeblas00bc0352022-03-29 00:11:30 +0200126 cli_osm.add_command(alarms.alarm_list)
127 cli_osm.add_command(alarms.alarm_show)
128 cli_osm.add_command(alarms.alarm_update)
129 cli_osm.add_command(alarms.ns_alarm_create)
130
131 cli_osm.add_command(k8scluster.k8scluster_add)
132 cli_osm.add_command(k8scluster.k8scluster_delete)
133 cli_osm.add_command(k8scluster.k8scluster_list)
134 cli_osm.add_command(k8scluster.k8scluster_show)
135 cli_osm.add_command(k8scluster.k8scluster_update)
136
137 cli_osm.add_command(metrics.ns_metric_export)
138
139 cli_osm.add_command(k8scluster.k8scluster_delete)
140 cli_osm.add_command(k8scluster.k8scluster_list)
141 cli_osm.add_command(k8scluster.k8scluster_show)
142 cli_osm.add_command(k8scluster.k8scluster_update)
143
144 cli_osm.add_command(netslice_instance.nsi_create1)
145 cli_osm.add_command(netslice_instance.nsi_create2)
146 cli_osm.add_command(netslice_instance.nsi_delete1)
147 cli_osm.add_command(netslice_instance.nsi_delete2)
148 cli_osm.add_command(netslice_instance.nsi_list1)
149 cli_osm.add_command(netslice_instance.nsi_list2)
150 cli_osm.add_command(netslice_instance.nsi_show1)
151 cli_osm.add_command(netslice_instance.nsi_show2)
152
153 cli_osm.add_command(netslice_ops.nsi_op_list1)
154 cli_osm.add_command(netslice_ops.nsi_op_list2)
155 cli_osm.add_command(netslice_ops.nsi_op_show1)
156 cli_osm.add_command(netslice_ops.nsi_op_show2)
157
158 cli_osm.add_command(netslice_template.nst_create1)
159 cli_osm.add_command(netslice_template.nst_create2)
160 cli_osm.add_command(netslice_template.nst_delete1)
161 cli_osm.add_command(netslice_template.nst_delete2)
162 cli_osm.add_command(netslice_template.nst_list1)
163 cli_osm.add_command(netslice_template.nst_list2)
164 cli_osm.add_command(netslice_template.nst_show1)
165 cli_osm.add_command(netslice_template.nst_show2)
166 cli_osm.add_command(netslice_template.nst_update1)
167 cli_osm.add_command(netslice_template.nst_update2)
168
169 cli_osm.add_command(nfpkg.nfpkg_create)
170 cli_osm.add_command(nfpkg.nfpkg_delete)
171 cli_osm.add_command(nfpkg.nfpkg_list)
172 cli_osm.add_command(nfpkg.nfpkg_show)
173 cli_osm.add_command(nfpkg.nfpkg_update)
174 cli_osm.add_command(nfpkg.vnfd_create1)
175 cli_osm.add_command(nfpkg.vnfd_create2)
176 cli_osm.add_command(nfpkg.vnfd_delete1)
177 cli_osm.add_command(nfpkg.vnfd_delete2)
178 cli_osm.add_command(nfpkg.vnfd_list1)
179 cli_osm.add_command(nfpkg.vnfd_list2)
180 cli_osm.add_command(nfpkg.vnfd_show1)
181 cli_osm.add_command(nfpkg.vnfd_show2)
182 cli_osm.add_command(nfpkg.vnfd_update1)
183 cli_osm.add_command(nfpkg.vnfd_update2)
184
185 cli_osm.add_command(ns.ns_create)
186 cli_osm.add_command(ns.ns_delete)
187 cli_osm.add_command(ns.ns_list)
188 cli_osm.add_command(ns.ns_show)
189
190 cli_osm.add_command(nslcm_ops.ns_op_list)
191 cli_osm.add_command(nslcm_ops.ns_op_show)
192
193 cli_osm.add_command(nslcm.ns_action)
194 cli_osm.add_command(nslcm.vnf_scale)
195 cli_osm.add_command(nslcm.ns_update)
196 cli_osm.add_command(nslcm.ns_heal)
197 cli_osm.add_command(nslcm.vnf_heal)
198
199 cli_osm.add_command(nspkg.nsd_create1)
200 cli_osm.add_command(nspkg.nsd_create2)
201 cli_osm.add_command(nspkg.nsd_delete1)
202 cli_osm.add_command(nspkg.nsd_delete2)
203 cli_osm.add_command(nspkg.nsd_list1)
204 cli_osm.add_command(nspkg.nsd_list2)
205 cli_osm.add_command(nspkg.nsd_show1)
206 cli_osm.add_command(nspkg.nsd_show2)
207 cli_osm.add_command(nspkg.nsd_update1)
208 cli_osm.add_command(nspkg.nsd_update2)
209
210 cli_osm.add_command(other.get_version)
211
212 cli_osm.add_command(packages.descriptor_translate)
213 cli_osm.add_command(packages.package_build)
214 cli_osm.add_command(packages.package_create)
215 cli_osm.add_command(packages.package_translate)
216 cli_osm.add_command(packages.package_validate)
217 cli_osm.add_command(packages.upload_package)
218
219 cli_osm.add_command(pdus.pdu_create)
220 cli_osm.add_command(pdus.pdu_delete)
221 cli_osm.add_command(pdus.pdu_list)
222 cli_osm.add_command(pdus.pdu_show)
223 cli_osm.add_command(pdus.pdu_update)
224
225 cli_osm.add_command(rbac.project_create)
226 cli_osm.add_command(rbac.project_delete)
227 cli_osm.add_command(rbac.project_list)
228 cli_osm.add_command(rbac.project_show)
229 cli_osm.add_command(rbac.project_update)
230
231 cli_osm.add_command(rbac.role_create)
232 cli_osm.add_command(rbac.role_delete)
233 cli_osm.add_command(rbac.role_list)
234 cli_osm.add_command(rbac.role_show)
235 cli_osm.add_command(rbac.role_update)
236
237 cli_osm.add_command(rbac.user_create)
238 cli_osm.add_command(rbac.user_delete)
239 cli_osm.add_command(rbac.user_list)
240 cli_osm.add_command(rbac.user_show)
241 cli_osm.add_command(rbac.user_update)
242
243 cli_osm.add_command(repo.repo_add)
244 cli_osm.add_command(repo.repo_delete)
245 cli_osm.add_command(repo.repo_list)
246 cli_osm.add_command(repo.repo_show)
247 cli_osm.add_command(repo.repo_update)
248
249 cli_osm.add_command(repo.repo_index)
250 cli_osm.add_command(repo.nfpkg_repo_list1)
251 cli_osm.add_command(repo.nfpkg_repo_list2)
252 cli_osm.add_command(repo.nfpkg_repo_list2)
253 cli_osm.add_command(repo.nspkg_repo_list)
254 cli_osm.add_command(repo.nspkg_repo_list2)
255 cli_osm.add_command(repo.nsd_repo_show)
256 cli_osm.add_command(repo.nsd_repo_show2)
257 cli_osm.add_command(repo.vnfd_show1)
258 cli_osm.add_command(repo.vnfd_show2)
259
260 cli_osm.add_command(sdnc.sdnc_create)
261 cli_osm.add_command(sdnc.sdnc_delete)
262 cli_osm.add_command(sdnc.sdnc_list)
263 cli_osm.add_command(sdnc.sdnc_show)
264 cli_osm.add_command(sdnc.sdnc_update)
265
266 cli_osm.add_command(subscriptions.subscription_create)
267 cli_osm.add_command(subscriptions.subscription_delete)
268 cli_osm.add_command(subscriptions.subscription_list)
269 cli_osm.add_command(subscriptions.subscription_show)
270
271 cli_osm.add_command(vca.vca_add)
272 cli_osm.add_command(vca.vca_delete)
273 cli_osm.add_command(vca.vca_list)
274 cli_osm.add_command(vca.vca_show)
275 cli_osm.add_command(vca.vca_update)
276
277 cli_osm.add_command(vim.vim_create)
278 cli_osm.add_command(vim.vim_delete)
279 cli_osm.add_command(vim.vim_list)
280 cli_osm.add_command(vim.vim_show)
281 cli_osm.add_command(vim.vim_update)
282
283 cli_osm.add_command(vnf.nf_list)
284 cli_osm.add_command(vnf.vnf_list1)
285 cli_osm.add_command(vnf.vnf_show)
286
287 cli_osm.add_command(wim.wim_create)
288 cli_osm.add_command(wim.wim_delete)
289 cli_osm.add_command(wim.wim_list)
290 cli_osm.add_command(wim.wim_show)
291 cli_osm.add_command(wim.wim_update)
292
293 cli_osm()
tiernobd39b092020-01-21 09:27:09 +0000294 exit(0)
tiernoc077d232019-12-19 10:44:16 +0000295 except pycurl.error as exc:
296 print(exc)
beierlm95686bb2021-03-23 16:26:45 -0400297 print(
298 'Maybe "--hostname" option or OSM_HOSTNAME environment variable needs to be specified'
299 )
tiernoc077d232019-12-19 10:44:16 +0000300 except ClientException as exc:
301 print("ERROR: {}".format(exc))
tiernobd39b092020-01-21 09:27:09 +0000302 except (FileNotFoundError, PermissionError) as exc:
303 print("Cannot open file: {}".format(exc))
304 except yaml.YAMLError as exc:
305 print("Invalid YAML format: {}".format(exc))
306 exit(1)
tiernoc077d232019-12-19 10:44:16 +0000307 # TODO capture other controlled exceptions here
308 # TODO remove the ClientException captures from all places, unless they do something different
Felipe Vicensb7463a42019-10-25 16:42:41 +0200309
310
beierlm95686bb2021-03-23 16:26:45 -0400311if __name__ == "__main__":
tiernoc077d232019-12-19 10:44:16 +0000312 cli()