HelmCLI: support SOL018 Helm CLI ssh access
[pti/o2.git] / o2ims / views / ocloud_dto.py
index 1573101..651de97 100644 (file)
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-from flask_restx import Namespace, fields
+from flask_restx import fields
 
+from o2ims.views.api_ns import api_ims_inventory_v1
 
-class OcloudDTO:
 
-    api = Namespace("Ocloud", description='Ocloud related operations.')
+class OcloudDTO:
 
-    ocloud_list = api.model(
-        "List Ocloud object",
+    ocloud = api_ims_inventory_v1.model(
+        "OcloudDto",
         {
             'oCloudId': fields.String(required=True),
             'globalCloudId': fields.String,
@@ -33,11 +33,8 @@ class OcloudDTO:
 
 class ResourceTypeDTO:
 
-    api = Namespace(
-        "ResourceType", description='Resource type related operations.')
-
-    resource_type_get = api.model(
-        "Get ResourceType object",
+    resource_type_get = api_ims_inventory_v1.model(
+        "ResourceTypeGetDto",
         {
             'resourceTypeId': fields.String(required=True,
                                             description='Resource type ID'),
@@ -51,11 +48,8 @@ class ResourceTypeDTO:
 
 class ResourcePoolDTO:
 
-    api = Namespace(
-        "ResourcePool", description='Resource pool related operations.')
-
-    resource_pool_get = api.model(
-        "Get ResourcePool object",
+    resource_pool_get = api_ims_inventory_v1.model(
+        "ResourcePoolGetDto",
         {
             'resourcePoolId': fields.String(required=True,
                                             description='Resource pool ID'),
@@ -69,40 +63,111 @@ class ResourcePoolDTO:
 
 class ResourceDTO:
 
-    api = Namespace("Resource", description='Resource related operations.')
-
-    resource_list = api.model(
-        "List Resource object",
+    resource_list = api_ims_inventory_v1.model(
+        "ResourceListDto",
         {
             'resourceId': fields.String(required=True,
                                         description='Resource ID'),
             'resourceTypeId': fields.String,
             'resourcePoolId': fields.String,
+            'name': fields.String,
             'parentId': fields.String,
             'description': fields.String,
         }
     )
 
-    resource_get = api.model(
-        "Get Resource object",
-        {
+    def recursive_resource_mapping(iteration_number=2):
+        resource_json_mapping = {
             'resourceId': fields.String(required=True,
                                         description='Resource ID'),
             'resourceTypeId': fields.String,
             'resourcePoolId': fields.String,
+            'name': fields.String,
             'parentId': fields.String,
             'description': fields.String,
+            'elements': fields.String,
         }
-    )
+        if iteration_number:
+            resource_json_mapping['children'] = fields.List(
+                fields.Nested(ResourceDTO.recursive_resource_mapping(
+                    iteration_number-1)))
+        return api_ims_inventory_v1.model(
+            'ResourceGetDto' + str(iteration_number), resource_json_mapping)
+
+    # def _recursive_resource_mapping(self, iteration_number=2):
+    #     resource_json_mapping = {
+    #         'resourceId': fields.String(required=True,
+    #                                     description='Resource ID'),
+    #         'resourceTypeId': fields.String,
+    #         'resourcePoolId': fields.String,
+    #         'name': fields.String,
+    #         'parentId': fields.String,
+    #         'description': fields.String,
+    #     }
+    #     if iteration_number:
+    #         resource_json_mapping['children'] = fields.List(
+    #             fields.Nested(self._recursive_resource_mapping(
+    #                 iteration_number-1)))
+    #         # print(type(resource_json_mapping['children']))
+    #         if resource_json_mapping['children'] is None:
+    #             del resource_json_mapping['children']
+    #     return resource_json_mapping
+
+    # def get_resource_get(self):
+    #     return api_ims_inventory_v1.model(
+    #         'ResourceGetDto',
+    #         {
+    #             'resourceId': fields.String(required=True,
+    #                                         description='Resource ID'),
+    #             'resourceTypeId': fields.String,
+    #             'resourcePoolId': fields.String,
+    #             'name': fields.String,
+    #             'parentId': fields.String,
+    #             'description': fields.String,
+    #             'children': fields.List(fields.Nested(
+    #                 self._recursive_resource_mapping()))
+    #         }
+    #     )
 
 
 class DeploymentManagerDTO:
 
-    api = Namespace("DeploymentManager",
-                    description='Deployment manager related operations.')
+    deployment_manager_list = api_ims_inventory_v1.model(
+        "DeploymentManagerListDto",
+        {
+            'deploymentManagerId': fields.String(
+                required=True,
+                description='Deployment manager ID'),
+            'name': fields.String,
+            'description': fields.String,
+            'deploymentManagementServiceEndpoint': fields.String,
+            'supportedLocations': fields.String,
+            'capabilities': fields.String,
+            'capacity': fields.String,
+            'profileSupportList': fields.List(
+                fields.String,
+                description='Profile support list, use default for the return \
+                     endpoint'),
+        }
+    )
 
-    deployment_manager_get = api.model(
-        "Get DeploymentManager object",
+    profile = api_ims_inventory_v1.model("DeploymentManagerGetDtoProfile", {
+        'cluster_api_endpoint': fields.String(
+            attributes='cluster_api_endpoint'),
+        'cluster_ca_cert': fields.String(attributes='cluster_ca_cert'),
+        'admin_user': fields.String(attributes='admin_user'),
+        'admin_client_cert': fields.String(attributes='admin_client_cert'),
+        'admin_client_key': fields.String(attributes='admin_client_key'),
+        # 'kube_config_file': fields.String(attributes='kube_config_file')
+        'helmcli_host_with_port': fields.String(
+            attributes='helmcli_host_with_port'),
+        'helmcli_username': fields.String(attributes='helmcli_username'),
+        'helmcli_password': fields.String(attributes='helmcli_password'),
+        'helmcli_kubeconfig': fields.String(attributes='helmcli_kubeconfig'),
+    })
+
+    deployment_manager_get = api_ims_inventory_v1.model(
+        "DeploymentManagerGetDto",
         {
             'deploymentManagerId': fields.String(
                 required=True,
@@ -113,17 +178,16 @@ class DeploymentManagerDTO:
             'supportedLocations': fields.String,
             'capabilities': fields.String,
             'capacity': fields.String,
+            'profileName': fields.String,
+            'profileData': fields.Nested(profile, False, True),
         }
     )
 
 
 class SubscriptionDTO:
 
-    api = Namespace(
-        "Subscription", description='Subscription related operations.')
-
-    subscription_get = api.model(
-        "Get Subscription object",
+    subscription_get = api_ims_inventory_v1.model(
+        "SubscriptionGetDto",
         {
             'subscriptionId': fields.String(required=True,
                                             description='Subscription ID'),
@@ -132,3 +196,21 @@ class SubscriptionDTO:
             'filter': fields.String,
         }
     )
+
+    subscription = api_ims_inventory_v1.model(
+        "SubscriptionCreateDto",
+        {
+            'callback': fields.String(
+                required=True, description='Subscription callback address'),
+            'consumerSubscriptionId': fields.String,
+            'filter': fields.String,
+        }
+    )
+
+    subscription_post_resp = api_ims_inventory_v1.model(
+        "SubscriptionCreatedRespDto",
+        {
+            'subscriptionId': fields.String(required=True,
+                                            description='Subscription ID'),
+        }
+    )