X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fopenstack%2Fclient.py;h=215d33305412e2a24ddaf547faa59181b5f69428;hb=a902bbbbc55175e14894371722fdbcb72e1983fc;hp=59003394507db699fd9b5652c85e86e257b3469f;hpb=6f0af19745f1c9856fdc8fd7fca9498c350efc61;p=sfa.git diff --git a/sfa/openstack/client.py b/sfa/openstack/client.py index 59003394..215d3330 100644 --- a/sfa/openstack/client.py +++ b/sfa/openstack/client.py @@ -1,5 +1,7 @@ from sfa.util.sfalogging import logger +from keystoneclient.v2_0 import client as keystone_client from glance import client as glance_client +from novaclient.v1_1 import client as nova_client from sfa.util.config import Config @@ -20,21 +22,71 @@ def parse_novarc(filename): return opts -class GlanceClient: - def __init__(self, config): +class KeystoneClient: + def __init__(self, username=None, password=None, tenant=None, url=None, config=None): if not config: config = Config() opts = parse_novarc(config.SFA_NOVA_NOVARC) + if username: + opts['OS_USERNAME'] = username + if password: + opts['OS_PASSWORD'] = password + if tenant: + opts['OS_TENANT_NAME'] = tenant + if url: + opts['OS_AUTH_URL'] = url + self.opts = opts + self.client = keystone_client.Client(username=opts.get('OS_USERNAME'), + password=opts.get('OS_PASSWORD'), + tenant_name=opts.get('OS_TENANT_NAME'), + auth_url=opts.get('OS_AUTH_URL')) + + def connect(self, *args, **kwds): + self.__init__(*args, **kwds) + + def __getattr__(self, name): + return getattr(self.client, name) + +class GlanceClient: + def __init__(self, config=None): + if not config: + config = Config() + opts = parse_novarc(config.SFA_NOVA_NOVARC) self.client = glance_client.get_client(host='0.0.0.0', username=opts.get('OS_USERNAME'), password=opts.get('OS_PASSWORD'), tenant=opts.get('OS_TENANT_NAME'), auth_url=opts.get('OS_AUTH_URL')) - def __getattr__(self, name): return getattr(self.client, name) +class NovaClient: + def __init__(self, username=None, password=None, tenant=None, url=None, config=None): + if not config: + config = Config() + opts = parse_novarc(config.SFA_NOVA_NOVARC) + if username: + opts['OS_USERNAME'] = username + if password: + opts['OS_PASSWORD'] = password + if tenant: + opts['OS_TENANT_NAME'] = tenant + if url: + opts['OS_AUTH_URL'] = url + self.opts = opts + self.client = nova_client.Client(username=opts.get('OS_USERNAME'), + api_key=opts.get('OS_PASSWORD'), + project_id=opts.get('OS_TENANT_NAME'), + auth_url=opts.get('OS_AUTH_URL'), + region_name='', + extensions=[], + service_type='compute', + service_name='', + ) - - + def connect(self, *args, **kwds): + self.__init__(*args, **kwds) + + def __getattr__(self, name): + return getattr(self.client, name)