X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osmclient%2Fv1%2Fclient.py;h=ba765e1d9c1fcbb3f0368cdb36a07ea980a47b6e;hb=f6a4f77b98e5f05b74938b44bcbb2ed148e4941a;hp=cfaf15a7342f42a28e00173f158f2ce2a7d037be;hpb=4c7e237e45bc6fe209006b4837a8e6b031e78e1c;p=osm%2Fosmclient.git diff --git a/osmclient/v1/client.py b/osmclient/v1/client.py index cfaf15a..ba765e1 100644 --- a/osmclient/v1/client.py +++ b/osmclient/v1/client.py @@ -27,6 +27,7 @@ from osmclient.v1 import package from osmclient.v1 import vca from osmclient.v1 import utils from osmclient.common import http +from osmclient.common import package_tool class Client(object): @@ -35,6 +36,7 @@ class Client(object): self, host=None, so_port=8008, + so_project='default', ro_host=None, ro_port=9090, upload_port=8443, @@ -50,6 +52,8 @@ class Client(object): self._host = host self._so_port = so_port + self._so_project = so_project + http_client = http.Http( 'https://{}:{}/'.format( self._host, @@ -58,6 +62,8 @@ class Client(object): ['Accept: application/vnd.yand.data+json', 'Content-Type: application/json']) + self._so_version = self.get_so_version(http_client) + if ro_host is None: ro_host = host ro_http_client = http.Http('http://{}:{}/'.format(ro_host, ro_port)) @@ -65,17 +71,26 @@ class Client(object): ['Accept: application/vnd.yand.data+json', 'Content-Type: application/json']) - upload_client = http.Http( - 'https://{}:{}/composer/upload?api_server={}{}'.format( + upload_client_url = 'https://{}:{}/composer/upload?api_server={}{}'.format( self._host, upload_port, 'https://localhost&upload_server=https://', - self._host)) + self._host) + + if self._so_version == 'v3': + upload_client_url = 'https://{}:{}/composer/upload?api_server={}{}&project_name={}'.format( + self._host, + upload_port, + 'https://localhost&upload_server=https://', + self._host, + self._so_project) - self.vnf = vnf.Vnf(http_client, **kwargs) - self.vnfd = vnfd.Vnfd(http_client, **kwargs) + upload_client = http.Http(upload_client_url) + + self.vnf = vnf.Vnf(http_client, client=self, **kwargs) + self.vnfd = vnfd.Vnfd(http_client, client=self, **kwargs) self.ns = ns.Ns(http=http_client, client=self, **kwargs) - self.nsd = nsd.Nsd(http_client, **kwargs) + self.nsd = nsd.Nsd(http_client, client=self, **kwargs) self.vim = vim.Vim( http=http_client, ro_http=ro_http_client, @@ -86,5 +101,28 @@ class Client(object): upload_http=upload_client, client=self, **kwargs) - self.vca = vca.Vca(http_client, **kwargs) + self.vca = vca.Vca(http_client, client=self, **kwargs) self.utils = utils.Utils(http_client, **kwargs) + self.package_tool = package_tool.PackageTool(client=self) + + @property + def so_rbac_project_path(self): + if self._so_version == 'v3': + return 'project/{}/'.format(self._so_project) + else: + return '' + + def get_so_version(self, http_client): + try: + resp = http_client.get_cmd('api/operational/version') + if not resp or 'rw-base:version' not in resp: + return 'v2' + + if resp['rw-base:version']['version'].split('.')[0] == '5': + # SO Version 5.x.x.x.x translates to OSM V3 + return 'v3' + return 'v2' + except Exception: + return 'v2' + +