Fixed osm version for pre-7.0 version
[osm/osmclient.git] / osmclient / sol005 / client.py
index 6281ffe..5e28797 100644 (file)
@@ -34,9 +34,11 @@ 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 user as usermodule
 from osmclient.sol005 import role
 from osmclient.sol005 import pdud
-from osmclient.common.exceptions import ClientException
+from osmclient.sol005 import k8scluster
+from osmclient.sol005 import repo
 from osmclient.common import package_tool
 import json
 from osmclient.common import package_tool
 import json
+import logging
 
 
 class Client(object):
 
 
 class Client(object):
@@ -53,10 +55,12 @@ class Client(object):
         self._user = user
         self._password = password
         self._project = project
         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
         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]
         if len(host.split(':')) > 1:
             # backwards compatible, port provided as part of host
             self._host = host.split(':')[0]
@@ -66,7 +70,7 @@ class Client(object):
             self._so_port = so_port
 
         self._http_client = http.Http(
             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)
         self._headers['Accept'] = 'application/json'
         self._headers['Content-Type'] = 'application/yaml'
         http_header = ['{}: {}'.format(key, val)
@@ -87,23 +91,30 @@ class Client(object):
         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.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.vca = vca.Vca(http_client, client=self, **kwargs)
         self.utils = utils.Utils(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)
 
     def get_token(self):
 
     def get_token(self):
+        self._logger.debug("")
         if self._token is None:
             postfields_dict = {'username': self._user,
                                'password': self._password,
                                'project_id': self._project}
         if self._token is None:
             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,
             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)
+                                                         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)
 
             token = json.loads(resp) if resp else None
             self._token = token['id']
 
             token = json.loads(resp) if resp else None
             self._token = token['id']
@@ -113,3 +124,24 @@ class Client(object):
                 http_header = ['{}: {}'.format(key, val)
                                for (key, val) in list(self._headers.items())]
                 self._http_client.set_http_header(http_header)
                 http_header = ['{}: {}'.format(key, val)
                                for (key, val) in list(self._headers.items())]
                 self._http_client.set_http_header(http_header)
+
+    def get_version(self):
+        _, 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)