diff options
Diffstat (limited to 'catalog-be/src/main/resources/scripts/sdcBePy/tosca/models/node_type_client.py')
-rw-r--r-- | catalog-be/src/main/resources/scripts/sdcBePy/tosca/models/node_type_client.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/catalog-be/src/main/resources/scripts/sdcBePy/tosca/models/node_type_client.py b/catalog-be/src/main/resources/scripts/sdcBePy/tosca/models/node_type_client.py new file mode 100644 index 0000000000..7937002567 --- /dev/null +++ b/catalog-be/src/main/resources/scripts/sdcBePy/tosca/models/node_type_client.py @@ -0,0 +1,75 @@ +# - +# ============LICENSE_START======================================================= +# Copyright (C) 2021 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= +# +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END======================================================== + +from io import BytesIO +from pathlib import Path + +import pycurl + +from sdcBePy.common import logger + + +class NodeTypeClient: + + def __init__(self, sdc_be_proxy): + self.__base_path = Path('/sdc2/rest/v1/catalog/upload') + self.__import_all_path = self.__base_path / 'resource/import' + self.__sdc_be_proxy = sdc_be_proxy + + def import_all(self, node_type_yaml_path, node_type_metadata_json_str, is_update=False): + logger.debug("Starting to import node types '{}'".format(node_type_yaml_path)) + + multi_part_form_data = [] + + node_type_yaml_param = ('nodeTypesYaml', (pycurl.FORM_FILE, str(node_type_yaml_path))) + multi_part_form_data.append(node_type_yaml_param) + + node_type_metadata_json_param = ('nodeTypeMetadataJson', ( + pycurl.FORM_CONTENTS, node_type_metadata_json_str, + pycurl.FORM_CONTENTTYPE, 'application/json' + )) + multi_part_form_data.append(node_type_metadata_json_param) + + if is_update is not None: + create_new_version_param = ('createNewVersion', ( + pycurl.FORM_CONTENTS, str(is_update).lower(), + pycurl.FORM_CONTENTTYPE, 'text/plain' + )) + multi_part_form_data.append(create_new_version_param) + + response_buffer = BytesIO() + response_code = self.__sdc_be_proxy.post_file(str(self.__import_all_path), multi_part_form_data, + response_buffer) + logger.debug("Import all node types response code '{}'".format(response_code)) + if response_code != 201: + error_msg = "Failed to import node types '{}'".format(node_type_yaml_path) + logger.log(error_msg, response_buffer.getvalue()) + raise Exception(error_msg) + logger.log("Failed to import node types '{}'".format(node_type_yaml_path)) + |