0a17948205ad7b4b948c30ad6e205978d1587d5d
[osm/osmclient.git] / osmclient / scripts / osm.py
1 # Copyright ETSI Contributors and Others.
2 # 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.
15
16 import click
17 from osmclient import client
18 from osmclient.common.exceptions import ClientException
19 from 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 )
43 import yaml
44 import logging
45 from requests import RequestException
46
47
48 @click.group(
49 context_settings=dict(help_option_names=["-h", "--help"], max_content_width=160)
50 )
51 @click.option(
52 "--hostname",
53 default="127.0.0.1",
54 envvar="OSM_HOSTNAME",
55 help="hostname of server. " + "Also can set OSM_HOSTNAME in environment",
56 )
57 @click.option(
58 "--user",
59 default=None,
60 envvar="OSM_USER",
61 help="user (defaults to admin). " + "Also can set OSM_USER in environment",
62 )
63 @click.option(
64 "--password",
65 default=None,
66 envvar="OSM_PASSWORD",
67 help="password (defaults to admin). " + "Also can set OSM_PASSWORD in environment",
68 )
69 @click.option(
70 "--project",
71 default=None,
72 envvar="OSM_PROJECT",
73 help="project (defaults to admin). " + "Also can set OSM_PROJECT in environment",
74 )
75 @click.option(
76 "-v",
77 "--verbose",
78 count=True,
79 help="increase verbosity (-v INFO, -vv VERBOSE, -vvv DEBUG)",
80 )
81 @click.option(
82 "-o",
83 "--output",
84 help="adapt output format (table, yaml, csv, json, jsonpath)",
85 )
86 @click.option("--all-projects", default=None, is_flag=True, help="include all projects")
87 @click.option(
88 "--public/--no-public",
89 default=None,
90 help="flag for public items (packages, instances, VIM accounts, etc.)",
91 )
92 @click.option(
93 "--project-domain-name",
94 "project_domain_name",
95 default=None,
96 envvar="OSM_PROJECT_DOMAIN_NAME",
97 help="project domain name for keystone authentication (default to None). "
98 + "Also can set OSM_PROJECT_DOMAIN_NAME in environment",
99 )
100 @click.option(
101 "--user-domain-name",
102 "user_domain_name",
103 default=None,
104 envvar="OSM_USER_DOMAIN_NAME",
105 help="user domain name for keystone authentication (default to None). "
106 + "Also can set OSM_USER_DOMAIN_NAME in environment",
107 )
108 @click.pass_context
109 def cli_osm(ctx, **kwargs):
110 global logger
111 hostname = kwargs.pop("hostname", None)
112 if hostname is None:
113 print(
114 (
115 "either hostname option or OSM_HOSTNAME "
116 + "environment variable needs to be specified"
117 )
118 )
119 exit(1)
120 # Remove None values
121 kwargs = {k: v for k, v in kwargs.items() if v is not None}
122 ctx.obj = client.Client(version=1, host=hostname, **kwargs)
123 logger = logging.getLogger("osmclient")
124
125
126 # pylint: disable=no-value-for-parameter
127 def cli():
128 try:
129 cli_osm.add_command(alarms.alarm_list)
130 cli_osm.add_command(alarms.alarm_show)
131 cli_osm.add_command(alarms.alarm_update)
132 cli_osm.add_command(alarms.ns_alarm_create)
133
134 cli_osm.add_command(k8scluster.k8scluster_add)
135 cli_osm.add_command(k8scluster.k8scluster_delete)
136 cli_osm.add_command(k8scluster.k8scluster_list)
137 cli_osm.add_command(k8scluster.k8scluster_show)
138 cli_osm.add_command(k8scluster.k8scluster_update)
139
140 cli_osm.add_command(metrics.ns_metric_export)
141
142 cli_osm.add_command(k8scluster.k8scluster_delete)
143 cli_osm.add_command(k8scluster.k8scluster_list)
144 cli_osm.add_command(k8scluster.k8scluster_show)
145 cli_osm.add_command(k8scluster.k8scluster_update)
146
147 cli_osm.add_command(netslice_instance.nsi_create1)
148 cli_osm.add_command(netslice_instance.nsi_create2)
149 cli_osm.add_command(netslice_instance.nsi_delete1)
150 cli_osm.add_command(netslice_instance.nsi_delete2)
151 cli_osm.add_command(netslice_instance.nsi_list1)
152 cli_osm.add_command(netslice_instance.nsi_list2)
153 cli_osm.add_command(netslice_instance.nsi_show1)
154 cli_osm.add_command(netslice_instance.nsi_show2)
155
156 cli_osm.add_command(netslice_ops.nsi_op_list1)
157 cli_osm.add_command(netslice_ops.nsi_op_list2)
158 cli_osm.add_command(netslice_ops.nsi_op_show1)
159 cli_osm.add_command(netslice_ops.nsi_op_show2)
160
161 cli_osm.add_command(netslice_template.nst_create1)
162 cli_osm.add_command(netslice_template.nst_create2)
163 cli_osm.add_command(netslice_template.nst_delete1)
164 cli_osm.add_command(netslice_template.nst_delete2)
165 cli_osm.add_command(netslice_template.nst_list1)
166 cli_osm.add_command(netslice_template.nst_list2)
167 cli_osm.add_command(netslice_template.nst_show1)
168 cli_osm.add_command(netslice_template.nst_show2)
169 cli_osm.add_command(netslice_template.nst_update1)
170 cli_osm.add_command(netslice_template.nst_update2)
171
172 cli_osm.add_command(nfpkg.nfpkg_create)
173 cli_osm.add_command(nfpkg.nfpkg_delete)
174 cli_osm.add_command(nfpkg.nfpkg_list)
175 cli_osm.add_command(nfpkg.nfpkg_show)
176 cli_osm.add_command(nfpkg.nfpkg_update)
177 cli_osm.add_command(nfpkg.vnfd_create1)
178 cli_osm.add_command(nfpkg.vnfd_create2)
179 cli_osm.add_command(nfpkg.vnfd_delete1)
180 cli_osm.add_command(nfpkg.vnfd_delete2)
181 cli_osm.add_command(nfpkg.vnfd_list1)
182 cli_osm.add_command(nfpkg.vnfd_list2)
183 cli_osm.add_command(nfpkg.vnfd_show1)
184 cli_osm.add_command(nfpkg.vnfd_show2)
185 cli_osm.add_command(nfpkg.vnfd_update1)
186 cli_osm.add_command(nfpkg.vnfd_update2)
187
188 cli_osm.add_command(ns.ns_create)
189 cli_osm.add_command(ns.ns_delete)
190 cli_osm.add_command(ns.ns_list)
191 cli_osm.add_command(ns.ns_show)
192
193 cli_osm.add_command(nslcm_ops.ns_op_list)
194 cli_osm.add_command(nslcm_ops.ns_op_show)
195
196 cli_osm.add_command(nslcm.ns_action)
197 cli_osm.add_command(nslcm.vnf_scale)
198 cli_osm.add_command(nslcm.ns_update)
199 cli_osm.add_command(nslcm.ns_heal)
200 cli_osm.add_command(nslcm.vnf_heal)
201
202 cli_osm.add_command(nspkg.nsd_create1)
203 cli_osm.add_command(nspkg.nsd_create2)
204 cli_osm.add_command(nspkg.nsd_delete1)
205 cli_osm.add_command(nspkg.nsd_delete2)
206 cli_osm.add_command(nspkg.nsd_list1)
207 cli_osm.add_command(nspkg.nsd_list2)
208 cli_osm.add_command(nspkg.nsd_show1)
209 cli_osm.add_command(nspkg.nsd_show2)
210 cli_osm.add_command(nspkg.nsd_update1)
211 cli_osm.add_command(nspkg.nsd_update2)
212
213 cli_osm.add_command(other.get_version)
214
215 cli_osm.add_command(packages.descriptor_translate)
216 cli_osm.add_command(packages.package_build)
217 cli_osm.add_command(packages.package_create)
218 cli_osm.add_command(packages.package_translate)
219 cli_osm.add_command(packages.package_validate)
220 cli_osm.add_command(packages.upload_package)
221
222 cli_osm.add_command(pdus.pdu_create)
223 cli_osm.add_command(pdus.pdu_delete)
224 cli_osm.add_command(pdus.pdu_list)
225 cli_osm.add_command(pdus.pdu_show)
226 cli_osm.add_command(pdus.pdu_update)
227
228 cli_osm.add_command(rbac.project_create)
229 cli_osm.add_command(rbac.project_delete)
230 cli_osm.add_command(rbac.project_list)
231 cli_osm.add_command(rbac.project_show)
232 cli_osm.add_command(rbac.project_update)
233
234 cli_osm.add_command(rbac.role_create)
235 cli_osm.add_command(rbac.role_delete)
236 cli_osm.add_command(rbac.role_list)
237 cli_osm.add_command(rbac.role_show)
238 cli_osm.add_command(rbac.role_update)
239
240 cli_osm.add_command(rbac.user_create)
241 cli_osm.add_command(rbac.user_delete)
242 cli_osm.add_command(rbac.user_list)
243 cli_osm.add_command(rbac.user_show)
244 cli_osm.add_command(rbac.user_update)
245
246 cli_osm.add_command(repo.repo_add)
247 cli_osm.add_command(repo.repo_delete)
248 cli_osm.add_command(repo.repo_list)
249 cli_osm.add_command(repo.repo_show)
250 cli_osm.add_command(repo.repo_update)
251
252 cli_osm.add_command(repo.repo_index)
253 cli_osm.add_command(repo.nfpkg_repo_list1)
254 cli_osm.add_command(repo.nfpkg_repo_list2)
255 cli_osm.add_command(repo.nfpkg_repo_list2)
256 cli_osm.add_command(repo.nspkg_repo_list)
257 cli_osm.add_command(repo.nspkg_repo_list2)
258 cli_osm.add_command(repo.nsd_repo_show)
259 cli_osm.add_command(repo.nsd_repo_show2)
260 cli_osm.add_command(repo.vnfd_show1)
261 cli_osm.add_command(repo.vnfd_show2)
262
263 cli_osm.add_command(sdnc.sdnc_create)
264 cli_osm.add_command(sdnc.sdnc_delete)
265 cli_osm.add_command(sdnc.sdnc_list)
266 cli_osm.add_command(sdnc.sdnc_show)
267 cli_osm.add_command(sdnc.sdnc_update)
268
269 cli_osm.add_command(subscriptions.subscription_create)
270 cli_osm.add_command(subscriptions.subscription_delete)
271 cli_osm.add_command(subscriptions.subscription_list)
272 cli_osm.add_command(subscriptions.subscription_show)
273
274 cli_osm.add_command(vca.vca_add)
275 cli_osm.add_command(vca.vca_delete)
276 cli_osm.add_command(vca.vca_list)
277 cli_osm.add_command(vca.vca_show)
278 cli_osm.add_command(vca.vca_update)
279
280 cli_osm.add_command(vim.vim_create)
281 cli_osm.add_command(vim.vim_delete)
282 cli_osm.add_command(vim.vim_list)
283 cli_osm.add_command(vim.vim_show)
284 cli_osm.add_command(vim.vim_update)
285
286 cli_osm.add_command(vnf.nf_list)
287 cli_osm.add_command(vnf.vnf_list1)
288 cli_osm.add_command(vnf.vnf_show)
289
290 cli_osm.add_command(wim.wim_create)
291 cli_osm.add_command(wim.wim_delete)
292 cli_osm.add_command(wim.wim_list)
293 cli_osm.add_command(wim.wim_show)
294 cli_osm.add_command(wim.wim_update)
295
296 cli_osm()
297 exit(0)
298 except RequestException as exc:
299 print(exc)
300 print(
301 'Maybe "--hostname" option or OSM_HOSTNAME environment variable needs to be specified'
302 )
303 except ClientException as exc:
304 print("ERROR: {}".format(exc))
305 except (FileNotFoundError, PermissionError) as exc:
306 print("Cannot open file: {}".format(exc))
307 except yaml.YAMLError as exc:
308 print("Invalid YAML format: {}".format(exc))
309 exit(1)
310 # TODO capture other controlled exceptions here
311 # TODO remove the ClientException captures from all places, unless they do something different
312
313
314 if __name__ == "__main__":
315 cli()