aboutsummaryrefslogtreecommitdiffstats
path: root/onap-client/onap_client/lib.py
diff options
context:
space:
mode:
Diffstat (limited to 'onap-client/onap_client/lib.py')
-rw-r--r--onap-client/onap_client/lib.py124
1 files changed, 124 insertions, 0 deletions
diff --git a/onap-client/onap_client/lib.py b/onap-client/onap_client/lib.py
new file mode 100644
index 0000000..78da11b
--- /dev/null
+++ b/onap-client/onap_client/lib.py
@@ -0,0 +1,124 @@
+# -*- coding: utf8 -*-
+# ============LICENSE_START=======================================================
+# org.onap.vvp/validation-scripts
+# ===================================================================
+# Copyright © 2020 AT&T Intellectual Property. All rights reserved.
+# ===================================================================
+#
+# Unless otherwise specified, all software contained herein is licensed
+# under the Apache License, Version 2.0 (the "License");
+# you may not use this software 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.
+#
+#
+#
+# Unless otherwise specified, all documentation contained herein is licensed
+# under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+# you may not use this documentation except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://creativecommons.org/licenses/by/4.0/
+#
+# Unless required by applicable law or agreed to in writing, documentation
+# 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.
+#
+# ============LICENSE_END============================================
+
+import uuid
+from datetime import datetime, timedelta
+
+from onap_client import exceptions
+from onap_client.client.request import RequestHandler, APICatalogRequestObject
+
+
+def make_request(catalog_item, **kwargs):
+ """Makes a request using by merging an APICatalogResource and
+ kwargs to fill in the required parameters
+
+ :catalog_item: APICatalogResource
+ :kwargs: key/value to fill in data for APICatalogResource parameters
+
+ :return: ResponseHandler object with response data from request
+ """
+ request_input = validate_request(catalog_item, kwargs)
+
+ catalog_request = APICatalogRequestObject(catalog_item, **request_input,)
+
+ request_handler = RequestHandler(catalog_request)
+
+ response_handler = request_handler.make_request()
+
+ if not response_handler.success:
+ raise exceptions.RequestFailure(
+ "Failed making request for catalog item {}: {}".format(
+ catalog_item.catalog_resource_name,
+ response_handler.response_data
+ )
+ )
+
+ return response_handler
+
+
+def validate_request(catalog_item, kwargs):
+ request_input = {}
+
+ request_input["payload_parameters"] = validate_parameters(
+ catalog_item.payload_parameters, kwargs
+ )
+ request_input["uri_parameters"] = validate_parameters(
+ catalog_item.uri_parameters, kwargs
+ )
+ request_input["file_parameters"] = validate_parameters(
+ catalog_item.file_parameters, kwargs
+ )
+ request_input["header_parameters"] = validate_parameters(
+ catalog_item.header_parameters, kwargs
+ )
+ request_input["payload_path"] = validate_parameters(
+ catalog_item.payload_path, kwargs
+ )
+
+ return request_input
+
+
+def validate_parameters(catalog_item_parameters, kwargs):
+ values = {}
+
+ if not valid_input(catalog_item_parameters, kwargs.keys()):
+ raise exceptions.MissingAttributeException(
+ "Missing parameters for request {}".format(
+ set(catalog_item_parameters) - set(kwargs.keys())
+ )
+ )
+ else:
+ for param in catalog_item_parameters:
+ values[param] = kwargs.get(param)
+
+ return values
+
+
+def valid_input(required_attributes, input_attributes):
+ return set(required_attributes).issubset(input_attributes)
+
+
+def generate_dummy_string(start="", random_length=4):
+ rand_string = str(uuid.uuid4())[0:random_length]
+ return "{}{}".format(start, rand_string)
+
+
+def generate_dummy_date(days=0):
+ tmpdate = datetime.now() + timedelta(days=days)
+ return "{}/{}/{}".format(
+ "{:02d}".format(tmpdate.month), "{:02d}".format(tmpdate.day), tmpdate.year
+ )