Merge branch 'v2.0'
[osm/UI.git] / python-osmclient / osmclient / scripts / osm.py
1 import click
2 from osmclient.common import OsmAPI
3 from prettytable import PrettyTable
4 import pprint
5 import textwrap
6
7 @click.group()
8 @click.option('--hostname',default=None,envvar='OSM_HOSTNAME',help='hostname of server. Also can set OSM_HOSTNAME in environment')
9 @click.pass_context
10 def cli(ctx,hostname):
11 if hostname is None:
12 print("either hostname option or OSM_HOSTNAME environment variable needs to be specified")
13 exit(1)
14 ctx.obj=OsmAPI.OsmAPI(hostname)
15
16 @cli.command(name='ns-list')
17 @click.pass_context
18 def ns_list(ctx):
19 ctx.obj.list_ns_instance()
20
21 @cli.command(name='nsd-list')
22 @click.pass_context
23 def nsd_list(ctx):
24 ctx.obj.list_ns_catalog()
25
26 @cli.command(name='vnfd-list')
27 @click.pass_context
28 def vnfd_list(ctx):
29 ctx.obj.list_vnf_catalog()
30
31 @cli.command(name='vnf-list')
32 @click.pass_context
33 def vnf_list(ctx):
34 resp=ctx.obj.list_vnfr()
35 table=PrettyTable(['vnf name','id','operational status','config Status','mgmt interface','nsr id'])
36 if resp is not None:
37 for vnfr in resp['vnfr:vnfr']:
38 if not 'mgmt-interface' in vnfr:
39 vnfr['mgmt-interface'] = {}
40 vnfr['mgmt-interface']['ip-address'] = None
41 table.add_row([vnfr['name'],vnfr['id'],vnfr['operational-status'],vnfr['config-status'],vnfr['mgmt-interface']['ip-address'],vnfr['nsr-id-ref']])
42 table.align='l'
43 print(table)
44
45 @cli.command(name='vnf-monitoring-show')
46 @click.argument('vnf_name')
47 @click.pass_context
48 def vnf_monitoring_show(ctx,vnf_name):
49 resp=ctx.obj.get_vnf_monitoring(vnf_name)
50 table=PrettyTable(['vnf name','monitoring name','value','units'])
51 if resp is not None:
52 for monitor in resp:
53 table.add_row([vnf_name,monitor['name'],monitor['value-integer'],monitor['units']])
54 table.align='l'
55 print(table)
56
57 @cli.command(name='ns-monitoring-show')
58 @click.argument('ns_name')
59 @click.pass_context
60 def ns_monitoring_show(ctx,ns_name):
61 resp=ctx.obj.get_ns_monitoring(ns_name)
62 table=PrettyTable(['vnf name','monitoring name','value','units'])
63 if resp is not None:
64 for key,val in resp.items():
65 for monitor in val:
66 table.add_row([key,monitor['name'],monitor['value-integer'],monitor['units']])
67 table.align='l'
68 print(table)
69
70 @cli.command(name='ns-create')
71 @click.argument('nsd_name')
72 @click.argument('ns_name')
73 @click.argument('vim_account')
74 @click.option('--admin_status',default='ENABLED',help='administration status')
75 @click.option('--ssh_keys',default=None,help='comma separated list of keys to inject to vnfs')
76 @click.option('--vim_network_prefix',default=None,help='vim network name prefix')
77 @click.pass_context
78 def ns_create(ctx,nsd_name,ns_name,vim_account,admin_status,ssh_keys,vim_network_prefix):
79 ctx.obj.instantiate_ns(nsd_name,ns_name,vim_network_prefix=vim_network_prefix,ssh_keys=ssh_keys,account=vim_account)
80
81 @cli.command(name='ns-delete')
82 @click.argument('ns_name')
83 @click.pass_context
84 def ns_delete(ctx,ns_name):
85 ctx.obj.terminate_ns(ns_name)
86
87 '''
88 @cli.command(name='keypair-list')
89 @click.pass_context
90 def keypair_list(ctx):
91 resp=ctx.obj.list_key_pair()
92 table=PrettyTable(['key Name','key'])
93 for kp in resp:
94 table.add_row([kp['name'],kp['key']])
95 table.align='l'
96 print(table)
97 '''
98
99 @cli.command(name='upload-package')
100 @click.argument('filename')
101 @click.pass_context
102 def upload_package(ctx,filename):
103 ctx.obj.upload_package(filename)
104
105 @cli.command(name='ns-show')
106 @click.argument('ns_name')
107 @click.pass_context
108 def ns_show(ctx,ns_name):
109 ctx.obj.show_ns(ns_name)
110
111 @cli.command(name='ns-scaling-show')
112 @click.argument('ns_name')
113 @click.pass_context
114 def show_ns_scaling(ctx,ns_name):
115 ctx.obj.show_ns_scaling(ns_name)
116
117 @cli.command(name='nsd-delete')
118 @click.argument('nsd_name')
119 @click.pass_context
120 def nsd_delete(ctx,nsd_name):
121 ctx.obj.delete_nsd(nsd_name)
122
123 @cli.command(name='vnfd-delete')
124 @click.argument('vnfd_name')
125 @click.pass_context
126 def nsd_delete(ctx,vnfd_name):
127 ctx.obj.delete_vnfd(vnfd_name)
128
129 @cli.command(name='config-agent-list')
130 @click.pass_context
131 def config_agent_list(ctx):
132 table=PrettyTable(['name','account-type','details'])
133 for account in ctx.obj.get_config_agents():
134 table.add_row([account['name'],account['account-type'],account['juju']])
135 table.align='l'
136 print(table)
137
138 @cli.command(name='config-agent-delete')
139 @click.argument('name')
140 @click.pass_context
141 def config_agent_delete(ctx,name):
142 ctx.obj.delete_config_agent(name)
143
144 @cli.command(name='config-agent-add')
145 @click.argument('name')
146 @click.argument('account_type')
147 @click.argument('server')
148 @click.argument('user')
149 @click.argument('secret')
150 @click.pass_context
151 def config_agent_add(ctx,name,account_type,server,user,secret):
152 ctx.obj.add_config_agent(name,account_type,server,user,secret)
153
154 '''
155 @cli.command(name='vim-create')
156 @click.argument('name')
157 @click.argument('user')
158 @click.argument('password')
159 @click.argument('auth_url')
160 @click.argument('tenant')
161 @click.argument('mgmt_network')
162 @click.argument('floating_ip_pool')
163 @click.option('--account_type',default='openstack')
164 @click.pass_context
165 def vim_create(ctx,name,user,password,auth_url,tenant,mgmt_network,floating_ip_pool,account_type):
166 ctx.obj.add_vim_account(name,user,password,auth_url,tenant,mgmt_network,floating_ip_pool,account_type)
167 '''
168
169 @cli.command(name='vim-list')
170 @click.pass_context
171 def vim_list(ctx):
172 resp=ctx.obj.list_vim_accounts()
173 table=PrettyTable(['ro-account','datacenter name','uuid'])
174 for roaccount in resp:
175 for datacenter in roaccount['datacenters']:
176 table.add_row([roaccount['name'],datacenter['name'],datacenter['uuid']])
177 table.align='l'
178 print(table)
179
180 @cli.command(name='vcs-list')
181 @click.pass_context
182 def vcs_list(ctx):
183 resp=ctx.obj.get_vcs_info()
184 table=PrettyTable(['component name','state'])
185 for component in resp:
186 table.add_row([component['component_name'],component['state']])
187 table.align='l'
188 print(table)
189
190 if __name__ == '__main__':
191 cli()