X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osmclient%2Fsol005%2Fclient.py;h=482cd737159fed1b58fcc53183a7994205698be0;hb=e79f0cafb1e4f8b065708187c6dd0f58b56a2aeb;hp=b8627b94bf315e819944a632178ddc73bb33d8b5;hpb=f157128052e59df5c37489926f7d5755714c3cbf;p=osm%2Fosmclient.git diff --git a/osmclient/sol005/client.py b/osmclient/sol005/client.py index b8627b9..482cd73 100644 --- a/osmclient/sol005/client.py +++ b/osmclient/sol005/client.py @@ -18,35 +18,46 @@ OSM SOL005 client API """ -#from osmclient.v1 import vnf #from osmclient.v1 import vca from osmclient.sol005 import vnfd from osmclient.sol005 import nsd +from osmclient.sol005 import nst +from osmclient.sol005 import nsi from osmclient.sol005 import ns +from osmclient.sol005 import vnf from osmclient.sol005 import vim +from osmclient.sol005 import wim from osmclient.sol005 import package from osmclient.sol005 import http from osmclient.sol005 import sdncontroller +from osmclient.sol005 import project as projectmodule +from osmclient.sol005 import user as usermodule +from osmclient.sol005 import role +from osmclient.sol005 import pdud +from osmclient.sol005 import k8scluster +from osmclient.sol005 import repo from osmclient.common.exceptions import ClientException +from osmclient.common import package_tool import json + class Client(object): def __init__( self, host=None, so_port=9999, - so_project='admin', - ro_host=None, - ro_port=9090, + user='admin', + password='admin', + project='admin', **kwargs): - self._user = 'admin' - self._password = 'admin' - #self._project = so_project - self._project = 'admin' + self._user = user + self._password = password + self._project = project self._auth_endpoint = '/admin/v1/tokens' self._headers = {} + self._token = None if len(host.split(':')) > 1: # backwards compatible, port provided as part of host @@ -56,51 +67,52 @@ class Client(object): self._host = host self._so_port = so_port - if ro_host is None: - ro_host = host - ro_http_client = http.Http('http://{}:{}/'.format(ro_host, ro_port)) - ro_http_client.set_http_header( - ['Accept: application/vnd.yand.data+json', - 'Content-Type: application/json']) - self._http_client = http.Http( 'https://{}:{}/osm'.format(self._host,self._so_port)) self._headers['Accept'] = 'application/json' self._headers['Content-Type'] = 'application/yaml' - http_header = ['{}: {}'.format(key,val) - for (key,val) in self._headers.items()] - self._http_client.set_http_header(http_header) - - token = self.get_token() - if not token: - raise ClientException( - 'Authentication error: not possible to get auth token') - self._headers['Authorization'] = 'Bearer {}'.format(token) - http_header.append('Authorization: Bearer {}'.format(token)) + http_header = ['{}: {}'.format(key, val) + for (key, val) in list(self._headers.items())] self._http_client.set_http_header(http_header) self.vnfd = vnfd.Vnfd(self._http_client, client=self) self.nsd = nsd.Nsd(self._http_client, client=self) + self.nst = nst.Nst(self._http_client, client=self) self.package = package.Package(self._http_client, client=self) self.ns = ns.Ns(self._http_client, client=self) + self.nsi = nsi.Nsi(self._http_client, client=self) self.vim = vim.Vim(self._http_client, client=self) + self.wim = wim.Wim(self._http_client, client=self) self.sdnc = sdncontroller.SdnController(self._http_client, client=self) + self.vnf = vnf.Vnf(self._http_client, client=self) + self.project = projectmodule.Project(self._http_client, client=self) + self.user = usermodule.User(self._http_client, client=self) + self.role = role.Role(self._http_client, client=self) + self.pdu = pdud.Pdu(self._http_client, client=self) + self.k8scluster = k8scluster.K8scluster(self._http_client, client=self) + self.repo = repo.Repo(self._http_client, client=self) + self.package_tool = package_tool.PackageTool(client=self) ''' - self.vnf = vnf.Vnf(http_client, client=self, **kwargs) self.vca = vca.Vca(http_client, client=self, **kwargs) self.utils = utils.Utils(http_client, **kwargs) ''' def get_token(self): - postfields_dict = {'username': self._user, - 'password': self._password, - 'project-id': self._project} - http_code, resp = self._http_client.post_cmd(endpoint=self._auth_endpoint, - postfields_dict=postfields_dict) - if http_code not in (200, 201, 202, 204): - raise ClientException(resp) - token = json.loads(resp) if resp else None - if token is not None: - return token['_id'] - return None + if self._token is None: + postfields_dict = {'username': self._user, + 'password': self._password, + 'project_id': self._project} + http_code, resp = self._http_client.post_cmd(endpoint=self._auth_endpoint, + postfields_dict=postfields_dict) + if http_code not in (200, 201, 202, 204): + message ='Authentication error: not possible to get auth token\nresp:\n{}'.format(resp) + raise ClientException(message) + + token = json.loads(resp) if resp else None + self._token = token['id'] + if self._token is not None: + self._headers['Authorization'] = 'Bearer {}'.format(self._token) + http_header = ['{}: {}'.format(key, val) + for (key, val) in list(self._headers.items())] + self._http_client.set_http_header(http_header)