Feature 8178 VNF Repositories
[osm/osmclient.git] / osmclient / sol005 / client.py
index 3ceb1b3..00c50cb 100644 (file)
@@ -36,6 +36,7 @@ from osmclient.sol005 import role
 from osmclient.sol005 import pdud
 from osmclient.sol005 import k8scluster
 from osmclient.sol005 import repo
+from osmclient.sol005 import osmrepo
 from osmclient.common import package_tool
 import json
 import logging
@@ -55,11 +56,12 @@ class Client(object):
         self._user = user
         self._password = password
         self._project = project
+        self._project_domain_name = kwargs.get("project_domain_name")
+        self._user_domain_name = kwargs.get("user_domain_name")
         self._logger = logging.getLogger('osmclient')
         self._auth_endpoint = '/admin/v1/tokens'
         self._headers = {}
         self._token = None
-
         if len(host.split(':')) > 1:
             # backwards compatible, port provided as part of host
             self._host = host.split(':')[0]
@@ -69,7 +71,7 @@ class Client(object):
             self._so_port = so_port
 
         self._http_client = http.Http(
-            'https://{}:{}/osm'.format(self._host,self._so_port))
+            'https://{}:{}/osm'.format(self._host,self._so_port), **kwargs)
         self._headers['Accept'] = 'application/json'
         self._headers['Content-Type'] = 'application/yaml'
         http_header = ['{}: {}'.format(key, val)
@@ -92,6 +94,7 @@ class Client(object):
         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.osmrepo = osmrepo.OSMRepo(self._http_client, client=self)
         self.package_tool = package_tool.PackageTool(client=self)
         '''
         self.vca = vca.Vca(http_client, client=self, **kwargs)
@@ -104,8 +107,13 @@ class Client(object):
             postfields_dict = {'username': self._user,
                                'password': self._password,
                                'project_id': self._project}
+            if self._project_domain_name:
+                postfields_dict["project_domain_name"] = self._project_domain_name
+            if self._user_domain_name:
+                postfields_dict["user_domain_name"] = self._user_domain_name
             http_code, resp = self._http_client.post_cmd(endpoint=self._auth_endpoint,
-                                                         postfields_dict=postfields_dict)
+                                                         postfields_dict=postfields_dict,
+                                                         skip_query_admin=True)
 #            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)
@@ -120,6 +128,22 @@ class Client(object):
                 self._http_client.set_http_header(http_header)
 
     def get_version(self):
-        _, resp = self._http_client.get2_cmd(endpoint="/version")
-        resp = json.loads(resp)
-        return "{} {}".format(resp.get("version"), resp.get("date"))
+        _, resp = self._http_client.get2_cmd(endpoint="/version", skip_query_admin=True)
+        #print(http_code, resp)
+        try:
+            resp = json.loads(resp)
+            version = resp.get("version")
+            date = resp.get("date")
+        except ValueError:
+            version = resp.split()[2]
+            date = resp.split()[4]
+        return "{} {}".format(version, date)
+
+    def set_default_params(self, **kwargs):
+        host = kwargs.pop('host', None)
+        if host != None:
+            self._host=host
+        port  = kwargs.pop('port', None)
+        if port != None:
+            self._so_port=port
+        self._http_client.set_query_admin(**kwargs)