in before like below we use the openstacksdk (0.9.19) like below
def __init__(self, auth_url, project, username, password):
self.res_serv_map = {}
for serv in self.serv_reslist_map:
for res in self.serv_reslist_map[serv]:
self.res_serv_map[res] = serv
self.connection_map = {}
param = {
'auth_url': auth_url,
'project_name': project,
'user_domain_name': 'default',
'project_domain_name': 'default',
'username': username,
'password': password}
conn = connection.Connection(**param)
self.connection_map[region] = conn
(Pdb) p conn.__dict__.items()
[('profile', {'clustering': {'region_name': None, 'service_name': None, 'interface': None, 'version': 'v1', 'service_type': 'clustering', 'requires_project_id': False, 'api_version': None}, 'volume': {'region_name': None, 'service_name': None, 'interface': None, 'version': 'v2', 'service_type': 'volume', 'requires_project_id': True, 'api_version': None}, 'compute': {'region_name': None, 'service_name': None, 'interface': None, 'version': 'v2', 'service_type': 'compute', 'requires_project_id': False, 'api_version': None}, 'network': {'region_name': None, 'service_name': None, 'interface': None, 'version': 'v2', 'service_type': 'network', 'requires_project_id': False, 'api_version': None}, 'database': {'region_name': None, 'service_name': None, 'interface': None, 'version': 'v1', 'service_type': 'database', 'requires_project_id': False, 'api_version': None}, 'alarming': {'region_name': None, 'service_name': None, 'interface': None, 'version': 'v2', 'service_type': 'alarming', 'requires_project_id': False, 'api_version': None}, 'image': {'region_name': None, 'service_name': None, 'interface': None, 'version': 'v2', 'service_type': 'image', 'requires_project_id': False, 'api_version': None}, 'key-manager': {'region_name': None, 'service_name': None, 'interface': None, 'version': 'v1', 'service_type': 'key-manager', 'requires_project_id': False, 'api_version': None}, 'metering': {'region_name': None, 'service_name': None, 'interface': None, 'version': 'v2', 'service_type': 'metering', 'requires_project_id': False, 'api_version': None}, 'baremetal': {'region_name': None, 'service_name': None, 'interface': None, 'version': 'v1', 'service_type': 'baremetal', 'requires_project_id': False, 'api_version': None}, 'workflowv2': {'region_name': None, 'service_name': None, 'interface': None, 'version': 'v2', 'service_type': 'workflowv2', 'requires_project_id': False, 'api_version': None}, 'load-balancer': {'region_name': None, 'service_name': None, 'interface': None, 'version': 'v2', 'service_type': 'load-balancer', 'requires_project_id': False, 'api_version': None}, 'orchestration': {'region_name': None, 'service_name': None, 'interface': None, 'version': 'v1', 'service_type': 'orchestration', 'requires_project_id': True, 'api_version': None}, 'object-store': {'region_name': None, 'service_name': None, 'interface': None, 'version': 'v1', 'service_type': 'object-store', 'requires_project_id': False, 'api_version': None}, 'messaging': {'region_name': None, 'service_name': None, 'interface': None, 'version': 'v1', 'service_type': 'messaging', 'requires_project_id': False, 'api_version': None}, 'identity': {'region_name': None, 'service_name': None, 'interface': None, 'version': 'v3', 'service_type': 'identity', 'requires_project_id': False, 'api_version': None}}), ('load_balancer', <openstack.load_balancer.v2._proxy.Proxy object at 0x7f7d439c8b50>), ('block_store', <openstack.block_store.v2._proxy.Proxy object at 0x7f7d43ac1bd0>), ('compute', <openstack.compute.v2._proxy.Proxy object at 0x7f7d43ad5a90>), ('network', <openstack.network.v2._proxy.Proxy object at 0x7f7d43aa1b90>), ('database', <openstack.database.v1._proxy.Proxy object at 0x7f7d43a62650>), ('alarm', <openstack.telemetry.alarm.v2._proxy.Proxy object at 0x7f7d43a62f10>), ('workflow', <openstack.workflow.v2._proxy.Proxy object at 0x7f7d439c1950>), ('telemetry', <openstack.telemetry.v2._proxy.Proxy object at 0x7f7d43a23ed0>), ('authenticator', <keystoneauth1.identity.generic.password.Password object at 0x7f7d43d29e90>), ('cluster', <openstack.cluster.v1._proxy.Proxy object at 0x7f7d43b2b6d0>), ('session', <openstack.session.Session object at 0x7f7d43bac710>), ('identity', <openstack.identity.v3._proxy.Proxy object at 0x7f7d43997750>), ('bare_metal', <openstack.bare_metal.v1._proxy.Proxy object at 0x7f7d43a31ad0>), ('orchestration', <openstack.orchestration.v1._proxy.Proxy object at 0x7f7d439e1850>), ('message', <openstack.message.v1._proxy.Proxy object at 0x7f7d43980610>), ('image', <openstack.image.v2._proxy.Proxy object at 0x7f7d43a1a810>), ('key_manager', <openstack.key_manager.v1._proxy.Proxy object at 0x7f7d43a1ac90>), ('object_store', <openstack.object_store.v1._proxy.Proxy object at 0x7f7d439ee610>)]
as above we can get the 'network' 'image' 'compute' and so on. so we can use
proxy = getattr(conn, serv)
return getattr(proxy, 'create_%s' % _type)(**params)
to use these methonds.
but in the new version openstacksdk (0.11.3), we use the code as below, we can not get
these paras, can any one tell me why? why? why?
def __init__(self, auth_url, project, username, password,
project_id, user_domain_id):
self.res_serv_map = {}
for serv in self.serv_reslist_map:
for res in self.serv_reslist_map[serv]:
self.res_serv_map[res] = serv
self.connection_map = {}
auth = {
'auth_url': auth_url,
'project_name': project,
'user_domain_name': 'default',
'project_domain_name': 'default',
'username': username,
'password': password,
'project_id': project_id,
'user_domain_id': user_domain_id}
for region in ('CentralRegion', 'RegionOne', 'RegionTwo'):
conn = connection.Connection(region_name = region,
auth = auth)
(Pdb) p conn.__dict__.items()
[('session', <keystoneauth1.session.Session object at 0x7ff8864cd0d0>), ('_proxies', {}), ('task_manager', <openstack.task_manager.TaskManager object at 0x7ff8864cd050>), ('config', <openstack.config.cloud_region.CloudRegion object at 0x7ff886d65bd0>)]