5d1a5f91caf7baa7b28893d041e03940a99f1e78
[pti/o2.git] / o2ims / adapter / clients / ocloud_sa_client.py
1 # Copyright (C) 2021 Wind River Systems, Inc.\r
2 #\r
3 #  Licensed under the Apache License, Version 2.0 (the "License");\r
4 #  you may not use this file except in compliance with the License.\r
5 #  You may obtain a copy of the License at\r
6 #\r
7 #      http://www.apache.org/licenses/LICENSE-2.0\r
8 #\r
9 #  Unless required by applicable law or agreed to in writing, software\r
10 #  distributed under the License is distributed on an "AS IS" BASIS,\r
11 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
12 #  See the License for the specific language governing permissions and\r
13 #  limitations under the License.\r
14 \r
15 # client talking to Stx standalone\r
16 \r
17 from o2ims.service.client.base_client import BaseClient\r
18 from typing import List\r
19 # Optional,  Set\r
20 from o2ims.domain import stx_object as ocloudModel\r
21 from o2ims import config\r
22 \r
23 # from dcmanagerclient.api import client\r
24 from cgtsclient.client import get_client\r
25 import logging\r
26 logger = logging.getLogger(__name__)\r
27 \r
28 \r
29 class StxSaOcloudClient(BaseClient):\r
30     def __init__(self, driver=None):\r
31         super().__init__()\r
32         self.driver = driver if driver else StxSaClientImp()\r
33 \r
34     # def list(self) -> List[ocloudModel.StxGenericModel]:\r
35     #     return self._list()\r
36 \r
37     # def get(self, id) -> ocloudModel.StxGenericModel:\r
38     #     return self._get(id)\r
39 \r
40     def _get(self, id) -> ocloudModel.StxGenericModel:\r
41         return self.driver.getInstanceInfo()\r
42 \r
43     def _list(self):\r
44         return [self.driver.getInstanceInfo()]\r
45 \r
46 \r
47 class StxSaResourcePoolClient(BaseClient):\r
48     def __init__(self):\r
49         super().__init__()\r
50         self.driver = StxSaClientImp()\r
51 \r
52     def _get(self, id) -> ocloudModel.StxGenericModel:\r
53         return self.driver.getInstanceInfo()\r
54 \r
55     def _list(self):\r
56         return [self.driver.getInstanceInfo()]\r
57 \r
58 \r
59 class StxSaDmsClient(BaseClient):\r
60     def __init__(self):\r
61         super().__init__()\r
62         self.driver = StxSaClientImp()\r
63 \r
64     def _get(self, id) -> ocloudModel.StxGenericModel:\r
65         return self.driver.getK8sDetail(id)\r
66 \r
67     def _list(self):\r
68         return self.driver.getK8sList()\r
69 \r
70 \r
71 class StxPserverClient(BaseClient):\r
72     def __init__(self):\r
73         super().__init__()\r
74         self.driver = StxSaClientImp()\r
75 \r
76     def _get(self, id) -> ocloudModel.StxGenericModel:\r
77         return self.driver.getPserver(id)\r
78 \r
79     def _list(self) -> List[ocloudModel.StxGenericModel]:\r
80         return self.driver.getPserverList()\r
81 \r
82 # internal driver which implement client call to Stx Standalone instance\r
83 \r
84 \r
85 class StxSaClientImp(object):\r
86     def __init__(self, stx_client=None):\r
87         super().__init__()\r
88         self.stxclient = stx_client if stx_client else self.getStxClient()\r
89 \r
90     def getStxClient():\r
91         os_client_args = config.get_stx_access_info()\r
92         config_client = get_client(**os_client_args)\r
93         return config_client\r
94 \r
95     def getInstanceInfo(self) -> ocloudModel.StxGenericModel:\r
96         systems = self.stxclient.isystem.list()\r
97         logger.debug("systems:" + str(systems[0].to_dict()))\r
98         return ocloudModel.StxGenericModel(systems[0]) if systems else None\r
99 \r
100     def getPserverList(self) -> List[ocloudModel.StxGenericModel]:\r
101         hosts = self.stxclient.ihost.list()\r
102         logger.debug("host 1:" + str(hosts[0].to_dict()))\r
103         return [ocloudModel.StxGenericModel(self._hostconverter(host))\r
104                 for host in hosts if host]\r
105 \r
106     def getPserver(self, id) -> ocloudModel.StxGenericModel:\r
107         host = self.stxclient.ihost.get(id)\r
108         logger.debug("host:" + str(host.to_dict()))\r
109         return ocloudModel.StxGenericModel(self._hostconverter(host))\r
110 \r
111     def getK8sList(self) -> List[ocloudModel.StxGenericModel]:\r
112         raise NotImplementedError\r
113 \r
114     def getK8sDetail(self, id) -> ocloudModel.StxGenericModel:\r
115         raise NotImplementedError\r
116 \r
117     @staticmethod\r
118     def _hostconverter(host):\r
119         setattr(host, "name", host.hostname)\r
120         return host\r