diff options
36 files changed, 2505 insertions, 2514 deletions
diff --git a/onap-client/onap_client/aai/__init__.py b/onap-client/onap_client/aai/__init__.py index a67037c..5519a84 100644 --- a/onap-client/onap_client/aai/__init__.py +++ b/onap-client/onap_client/aai/__init__.py @@ -34,7 +34,3 @@ # limitations under the License. # # ============LICENSE_END============================================ - -from onap_client.config import APP_CONFIG - -AAI_PROPERTIES = APP_CONFIG.aai diff --git a/onap-client/onap_client/aai/catalog/business_catalog.py b/onap-client/onap_client/aai/catalog/business_catalog.py index 2b9af21..283521c 100644 --- a/onap-client/onap_client/aai/catalog/business_catalog.py +++ b/onap-client/onap_client/aai/catalog/business_catalog.py @@ -34,241 +34,235 @@ # limitations under the License. # # ============LICENSE_END============================================ - import uuid from functools import partial -from onap_client import aai from onap_client import config from onap_client.aai.client import AAIClient PAYLOADS_DIR = config.PAYLOADS_DIR -aai_properties = aai.AAI_PROPERTIES application_id = config.APPLICATION_ID class BusinessClient(AAIClient): @property - def catalog_resources(self): - return CATALOG_RESOURCES - - @property def namespace(self): return "business" - -CATALOG_RESOURCES = { - "GET_OWNING_ENTITY": { - "verb": "GET", - "description": "Queries AAI for an owning entity", - "uri": partial( - "{endpoint}{service_path}/owning-entities?owning-entity-name={name}".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_BUSINESS_PATH, - ), - "uri-parameters": ["name"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, - "GET_OWNING_ENTITIES": { - "verb": "GET", - "description": "Queries AAI for all owning entities", - "uri": partial( - "{endpoint}{service_path}/owning-entities".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_BUSINESS_PATH, - ), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, - "GET_CUSTOMER": { - "verb": "GET", - "description": "Queries AAI for a customer", - "uri": partial( - "{endpoint}{service_path}/customers?global-customer-id={name}".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_BUSINESS_PATH, - ), - "uri-parameters": ["name"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, - "GET_CUSTOMERS": { - "verb": "GET", - "description": "Queries AAI for all customers", - "uri": partial( - "{endpoint}{service_path}/customers".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_BUSINESS_PATH, - ), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, - "GET_PLATFORM": { - "verb": "GET", - "description": "Queries AAI for a platform", - "uri": partial( - "{endpoint}{service_path}/platforms?platform-name={name}".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_BUSINESS_PATH, - ), - "uri-parameters": ["name"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, - "GET_PLATFORMS": { - "verb": "GET", - "description": "Queries AAI for all platforms", - "uri": partial( - "{endpoint}{service_path}/platforms".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_BUSINESS_PATH, - ), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, - "GET_PROJECT": { - "verb": "GET", - "description": "Queries AAI for a project", - "uri": partial( - "{endpoint}{service_path}/projects/project/{name}".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_BUSINESS_PATH, - ), - "uri-parameters": ["name"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, - "GET_PROJECTS": { - "verb": "GET", - "description": "Queries AAI for all projects", - "uri": partial( - "{endpoint}{service_path}/projects".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_BUSINESS_PATH, - ), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, - "GET_LINES_OF_BUSINESS": { - "verb": "GET", - "description": "Queries AAI for all lobs", - "uri": partial( - "{endpoint}{service_path}/lines-of-business".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_BUSINESS_PATH, - ), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, - "CREATE_CUSTOMER": { - "verb": "PUT", - "description": "Creates a customer in AAI", - "uri": partial( - "{endpoint}{service_path}/customers/customer/{customer_name}".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_BUSINESS_PATH, - ), - "uri-parameters": ["customer_name"], - "payload-parameters": ["customer_name", "subscriber_name"], - "payload": "{}/aai_create_customer.jinja".format(PAYLOADS_DIR), - "success_code": 201, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, - "GET_CUSTOMER_SUBSCRIPTIONS": { - "verb": "GET", - "description": "Queries AAI the subscriptions for a customer", - "uri": partial( - "{endpoint}{service_path}/customers/customer/{customer_name}/service-subscriptions".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_BUSINESS_PATH, - ), - "uri-parameters": ["customer_name"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, - "GET_SERVICE_INSTANCES": { - "verb": "GET", - "description": "Queries AAI the service instances for a customer subscription", - "uri": partial( - "{endpoint}{service_path}/customers/customer/{customer_name}/service-subscriptions/service-subscription/{subscription_name}/service-instances".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_BUSINESS_PATH, - ), - "uri-parameters": ["customer_name", "subscription_name"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, -} + @property + def catalog_resources(self): + return { + "GET_OWNING_ENTITY": { + "verb": "GET", + "description": "Queries AAI for an owning entity", + "uri": partial( + "{endpoint}{service_path}/owning-entities?owning-entity-name={name}".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_BUSINESS_PATH, + ), + "uri-parameters": ["name"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + "GET_OWNING_ENTITIES": { + "verb": "GET", + "description": "Queries AAI for all owning entities", + "uri": partial( + "{endpoint}{service_path}/owning-entities".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_BUSINESS_PATH, + ), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + "GET_CUSTOMER": { + "verb": "GET", + "description": "Queries AAI for a customer", + "uri": partial( + "{endpoint}{service_path}/customers?global-customer-id={name}".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_BUSINESS_PATH, + ), + "uri-parameters": ["name"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + "GET_CUSTOMERS": { + "verb": "GET", + "description": "Queries AAI for all customers", + "uri": partial( + "{endpoint}{service_path}/customers".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_BUSINESS_PATH, + ), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + "GET_PLATFORM": { + "verb": "GET", + "description": "Queries AAI for a platform", + "uri": partial( + "{endpoint}{service_path}/platforms?platform-name={name}".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_BUSINESS_PATH, + ), + "uri-parameters": ["name"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + "GET_PLATFORMS": { + "verb": "GET", + "description": "Queries AAI for all platforms", + "uri": partial( + "{endpoint}{service_path}/platforms".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_BUSINESS_PATH, + ), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + "GET_PROJECT": { + "verb": "GET", + "description": "Queries AAI for a project", + "uri": partial( + "{endpoint}{service_path}/projects/project/{name}".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_BUSINESS_PATH, + ), + "uri-parameters": ["name"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + "GET_PROJECTS": { + "verb": "GET", + "description": "Queries AAI for all projects", + "uri": partial( + "{endpoint}{service_path}/projects".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_BUSINESS_PATH, + ), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + "GET_LINES_OF_BUSINESS": { + "verb": "GET", + "description": "Queries AAI for all lobs", + "uri": partial( + "{endpoint}{service_path}/lines-of-business".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_BUSINESS_PATH, + ), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + "CREATE_CUSTOMER": { + "verb": "PUT", + "description": "Creates a customer in AAI", + "uri": partial( + "{endpoint}{service_path}/customers/customer/{customer_name}".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_BUSINESS_PATH, + ), + "uri-parameters": ["customer_name"], + "payload-parameters": ["customer_name", "subscriber_name"], + "payload": "{}/aai_create_customer.jinja".format(PAYLOADS_DIR), + "success_code": 201, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + "GET_CUSTOMER_SUBSCRIPTIONS": { + "verb": "GET", + "description": "Queries AAI the subscriptions for a customer", + "uri": partial( + "{endpoint}{service_path}/customers/customer/{customer_name}/service-subscriptions".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_BUSINESS_PATH, + ), + "uri-parameters": ["customer_name"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + "GET_SERVICE_INSTANCES": { + "verb": "GET", + "description": "Queries AAI the service instances for a customer subscription", + "uri": partial( + "{endpoint}{service_path}/customers/customer/{customer_name}/service-subscriptions/service-subscription/{subscription_name}/service-instances".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_BUSINESS_PATH, + ), + "uri-parameters": ["customer_name", "subscription_name"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + } diff --git a/onap-client/onap_client/aai/catalog/cloud_infrastructure_catalog.py b/onap-client/onap_client/aai/catalog/cloud_infrastructure_catalog.py index b2570a0..4ebe34a 100644 --- a/onap-client/onap_client/aai/catalog/cloud_infrastructure_catalog.py +++ b/onap-client/onap_client/aai/catalog/cloud_infrastructure_catalog.py @@ -38,95 +38,90 @@ import uuid from functools import partial -from onap_client import aai from onap_client import config from onap_client.aai.client import AAIClient PAYLOADS_DIR = config.PAYLOADS_DIR -aai_properties = aai.AAI_PROPERTIES application_id = config.APPLICATION_ID class CloudInfrastructureClient(AAIClient): @property - def catalog_resources(self): - return CATALOG_RESOURCES - - @property def namespace(self): return "cloud_infrastructure" - -CATALOG_RESOURCES = { - "GET_CLOUD_REGIONS": { - "verb": "GET", - "description": "Queries AAI for all cloud regions", - "uri": partial( - "{endpoint}{service_path}/cloud-regions".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_CLOUD_INFRASTRUCTURE_PATH, - ), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, - "GET_CLOUD_REGION": { - "verb": "GET", - "description": "Queries AAI for a cloud region", - "uri": partial( - "{endpoint}{service_path}/cloud-regions/cloud-region/{cloud_owner}/{cloud_region}".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_CLOUD_INFRASTRUCTURE_PATH, - ), - "uri-parameters": ["cloud_region", "cloud_owner"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, - "GET_CLOUD_REGION_TENANTS": { - "verb": "GET", - "description": "Queries AAI for a cloud region's tenants", - "uri": partial( - "{endpoint}{service_path}/cloud-regions/cloud-region/{cloud_owner}/{cloud_region}/tenants".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_CLOUD_INFRASTRUCTURE_PATH, - ), - "uri-parameters": ["cloud_region", "cloud_owner"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, - "GET_ESR_LIST": { - "verb": "GET", - "description": "Queries AAI for a esr info", - "uri": partial( - "{endpoint}{service_path}/cloud-regions/cloud-region/{cloud_owner}/{cloud_region}/esr-system-info-list".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_CLOUD_INFRASTRUCTURE_PATH, - ), - "uri-parameters": ["cloud_region", "cloud_owner"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, -} + @property + def catalog_resources(self): + return { + "GET_CLOUD_REGIONS": { + "verb": "GET", + "description": "Queries AAI for all cloud regions", + "uri": partial( + "{endpoint}{service_path}/cloud-regions".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_CLOUD_INFRASTRUCTURE_PATH, + ), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + "GET_CLOUD_REGION": { + "verb": "GET", + "description": "Queries AAI for a cloud region", + "uri": partial( + "{endpoint}{service_path}/cloud-regions/cloud-region/{cloud_owner}/{cloud_region}".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_CLOUD_INFRASTRUCTURE_PATH, + ), + "uri-parameters": ["cloud_region", "cloud_owner"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + "GET_CLOUD_REGION_TENANTS": { + "verb": "GET", + "description": "Queries AAI for a cloud region's tenants", + "uri": partial( + "{endpoint}{service_path}/cloud-regions/cloud-region/{cloud_owner}/{cloud_region}/tenants".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_CLOUD_INFRASTRUCTURE_PATH, + ), + "uri-parameters": ["cloud_region", "cloud_owner"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + "GET_ESR_LIST": { + "verb": "GET", + "description": "Queries AAI for a esr info", + "uri": partial( + "{endpoint}{service_path}/cloud-regions/cloud-region/{cloud_owner}/{cloud_region}/esr-system-info-list".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_CLOUD_INFRASTRUCTURE_PATH, + ), + "uri-parameters": ["cloud_region", "cloud_owner"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + } diff --git a/onap-client/onap_client/aai/client.py b/onap-client/onap_client/aai/client.py index 5a2ddb1..5820fdd 100644 --- a/onap-client/onap_client/aai/client.py +++ b/onap-client/onap_client/aai/client.py @@ -38,11 +38,9 @@ import uuid from functools import partial -from onap_client import aai from onap_client.client.clients import Client from onap_client import config -aai_properties = aai.AAI_PROPERTIES application_id = config.APPLICATION_ID @@ -53,25 +51,22 @@ class AAIClient(Client): @property def catalog_resources(self): - return CATALOG_RESOURCES - - -CATALOG_RESOURCES = { - "HEALTH_CHECK": { - "verb": "GET", - "description": "Queries AAI health check endpoint", - "uri": partial( - "{endpoint}{service_path}".format, - endpoint=aai_properties.AAI_BE_ENDPOINT, - service_path=aai_properties.AAI_HEALTH_CHECK_PATH, - ), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (aai_properties.AAI_USERNAME, aai_properties.AAI_PASSWORD,), - }, -} + return { + "HEALTH_CHECK": { + "verb": "GET", + "description": "Queries AAI health check endpoint", + "uri": partial( + "{endpoint}{service_path}".format, + endpoint=self.config.aai.AAI_BE_ENDPOINT, + service_path=self.config.aai.AAI_HEALTH_CHECK_PATH, + ), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.aai.AAI_USERNAME, self.config.aai.AAI_PASSWORD,), + }, + } diff --git a/onap-client/onap_client/client/clients.py b/onap-client/onap_client/client/clients.py index 9b7a0c6..f0a0c1d 100644 --- a/onap-client/onap_client/client/clients.py +++ b/onap-client/onap_client/client/clients.py @@ -39,18 +39,36 @@ import importlib import onap_client import pkgutil import inspect +import sys +import logging from onap_client.client.catalog import Catalog +from onap_client import config + +CACHED_CLIENT = None + + +def get_client(config_file=None): + clients = sys.modules[__name__] + if not clients.CACHED_CLIENT or config_file: + clients.CACHED_CLIENT = Client(config_file) + return clients.CACHED_CLIENT class Client(Catalog): """Base class for the ONAP client. Subclasses are dynamically loaded and added as attributes. Instantiate and use this class to interact with ONAP.""" - def __init__(self): + def __init__(self, config_file=None): + self.config = config.APP_CONFIG self.modules = import_submodules(onap_client) + super().__init__() + if config_file: + config.LOG.info("Overriding ONAP Client configuration: {}".format(config_file)) + self.set_config(config_file) + @property def namespace(self): return "onap" @@ -70,6 +88,20 @@ class Client(Catalog): utility_functions[func[0]] = func[1] return utility_functions + def set_config(self, config_file): + self.config = config.load_config(config_file, "onap_client") + self._set_logging(self.config.LOG_LEVEL) + for attr_name, attr in self.__dict__.items(): + if isinstance(attr, Client): + config.LOG.info("Reloading {} {}".format(attr_name, attr)) + attr.set_config(config_file) + for k, v in attr.catalog_resources.items(): + attr.load(k, v) + + def _set_logging(self, level): + LOG = logging.getLogger("ONAP_CLIENT") + LOG.setLevel(getattr(logging, level.upper())) + def import_submodules(package, recursive=True): """Import all the modules in onap-client, except for those starting diff --git a/onap-client/onap_client/client/request.py b/onap-client/onap_client/client/request.py index 0e1ce5c..194dad5 100644 --- a/onap-client/onap_client/client/request.py +++ b/onap-client/onap_client/client/request.py @@ -40,12 +40,14 @@ import requests import json import os import copy +import logging from onap_client.client.response import ResponseHandler -from onap_client.config import LOG as logger from onap_client.exceptions import FilesRequestFailure from jinja2 import exceptions as jinja_exceptions +logger = logging.getLogger("ONAP_CLIENT") + class RequestHandler: """Handles a APICatalogRequestObject to make a request diff --git a/onap-client/onap_client/client/response.py b/onap-client/onap_client/client/response.py index ef0aab5..9693af5 100644 --- a/onap-client/onap_client/client/response.py +++ b/onap-client/onap_client/client/response.py @@ -36,8 +36,9 @@ # ============LICENSE_END============================================ import simplejson +import logging -from onap_client.config import LOG as logger +logger = logging.getLogger("ONAP_CLIENT") class ResponseHandler: diff --git a/onap-client/onap_client/config.py b/onap-client/onap_client/config.py index ffe493f..2436619 100644 --- a/onap-client/onap_client/config.py +++ b/onap-client/onap_client/config.py @@ -36,7 +36,7 @@ # ============LICENSE_END============================================ import distutils.sysconfig -import logging as logger +import logging import os import yaml @@ -70,7 +70,7 @@ class Config: with open(self.config_file, "r") as f: config_data = yaml.safe_load(f) except FileNotFoundError: - logger.warn( + logging.warn( "Config file {} not found, using default.".format(self.config_file) ) @@ -96,6 +96,11 @@ APPLICATION_ID = "robot-ete" CONFIG_ENV = os.environ.get("OC_CONFIG") CONFIG_FILE = CONFIG_ENV or "/etc/onap_client/config.yaml" APP_CONFIG = load_config(CONFIG_FILE, "onap_client") -LOG = logger -log_level = getattr(LOG, APP_CONFIG.LOG_LEVEL.upper()) -LOG.basicConfig(format="%(asctime)s %(message)s", level=log_level) +LOG = logging.getLogger("ONAP_CLIENT") +LOG.propagate = False +log_level = getattr(logging, APP_CONFIG.LOG_LEVEL.upper()) +ch = logging.StreamHandler() +LOG.setLevel(log_level) +formatter = logging.Formatter('%(levelname)s %(asctime)s %(name)s %(message)s') +ch.setFormatter(formatter) +LOG.addHandler(ch) diff --git a/onap-client/onap_client/engine.py b/onap-client/onap_client/engine.py index a352163..daac47d 100644 --- a/onap-client/onap_client/engine.py +++ b/onap-client/onap_client/engine.py @@ -37,11 +37,14 @@ import argparse import json +import logging from onap_client.resource import Resource -from onap_client.config import LOG as logger from onap_client.client.clients import import_submodules from onap_client.exceptions import InvalidSpecException, ResourceTypeNotFoundException +from onap_client.client.clients import get_client + +logger = logging.getLogger("ONAP_CLIENT") def dumper(obj): @@ -70,7 +73,7 @@ def show_resource_spec(resource_name): list_spec_resources() -def load_spec(input_spec, validate_only=False, submit=True): +def load_spec(input_spec, validate_only=False, submit=True, suppress_out=False, config=None): try: with open(input_spec, "r") as f: jdata = json.loads(f.read()) @@ -79,7 +82,7 @@ def load_spec(input_spec, validate_only=False, submit=True): raise engine = SpecEngine() - return engine.load_spec(jdata, validate_only=validate_only, distribute=submit) + return engine.load_spec(jdata, validate_only=validate_only, distribute=submit, suppress_out=suppress_out, config=config) def spec_cli(args): @@ -102,10 +105,18 @@ def spec_cli(args): ) parser.add_argument( + "--oc-config", required=False, help="Path to configuration file for ONAP Client." + ) + + parser.add_argument( "--no-submit", action="store_false", required=False, default=True, help="Dont execute submit() for each resource in spec." ) parser.add_argument( + "--no-outputs", action="store_true", required=False, default=False, help="Don't return the full output from each created resource." + ) + + parser.add_argument( "--list-spec-resources", action="store_true", required=False, @@ -119,9 +130,9 @@ def spec_cli(args): elif arguments.show_resource_spec: show_resource_spec(arguments.show_resource_spec) elif arguments.validate_spec: - print(json.dumps(load_spec(arguments.validate_spec, validate_only=True), indent=4)) + print(json.dumps(load_spec(arguments.validate_spec, validate_only=True, suppress_out=arguments.no_outputs), indent=4)) elif arguments.load_spec: - load_spec(arguments.load_spec, submit=arguments.no_submit) + print(json.dumps(load_spec(arguments.load_spec, submit=arguments.no_submit, suppress_out=arguments.no_outputs, config=arguments.oc_config), indent=4)) class SpecEngine: @@ -132,15 +143,23 @@ class SpecEngine: def initialize(self): import_submodules("onap_client") - def load_spec(self, spec, distribute=True, validate_only=False): + def load_spec(self, spec, distribute=True, validate_only=False, suppress_out=False, config=None): # print("loading spec {}".format(spec)) + + if config: + oc = get_client(config) # noqa: F841 + self.spec = resolve_spec(spec) self.validate(self.spec.get("spec", {})) + logger.info("Loading spec into spec engine:") + logger.info(json.dumps(self.spec, indent=4)) + + out = self.spec if not validate_only: - self._create(self.spec.get("spec", {}), distribute) + out = self._create(self.spec.get("spec", {}), distribute, suppress_out) - return self.spec + return out def validate(self, spec): if not isinstance(spec, list): @@ -174,7 +193,7 @@ class SpecEngine: ) subclass.validate(resource_spec) - def _create(self, spec, distribute): + def _create(self, spec, distribute, suppress_out): full_engine_spec = [] for item_spec in spec: resource_type = item_spec.get("type") @@ -186,10 +205,13 @@ class SpecEngine: ) full_spec = subclass.validate(resource_spec) logger.debug(json.dumps(full_spec, indent=4)) - subclass.create_from_spec(full_spec, submit=distribute) - full_engine_spec.append({"type": resource_type, "resource_spec": full_spec}) + t = subclass.create_from_spec(full_spec, submit=distribute) + finished_spec = {"type": resource_type, "resource_spec": full_spec} + if not suppress_out: + finished_spec["output"] = t._output() + full_engine_spec.append(finished_spec) - logger.info(json.dumps(full_engine_spec, indent=4)) + return full_engine_spec def resolve_spec(spec_dict): diff --git a/onap-client/onap_client/resource.py b/onap-client/onap_client/resource.py index ca5d675..cd7c677 100644 --- a/onap-client/onap_client/resource.py +++ b/onap-client/onap_client/resource.py @@ -36,7 +36,7 @@ # ============LICENSE_END============================================ from abc import ABC from onap_client.exceptions import InvalidSpecException, ResourceAlreadyExistsException, ResourceCreationFailure -from onap_client.client.clients import Client +from onap_client.client.clients import get_client as Client class Resource(ABC): @@ -68,6 +68,9 @@ class Resource(ABC): def _on_failure(self): pass + def _output(self): + return None + @classmethod def create_from_spec(cls, spec, submit=True): instance = cls(**spec) diff --git a/onap-client/onap_client/sdc/__init__.py b/onap-client/onap_client/sdc/__init__.py index d8028f6..5519a84 100644 --- a/onap-client/onap_client/sdc/__init__.py +++ b/onap-client/onap_client/sdc/__init__.py @@ -34,7 +34,3 @@ # limitations under the License. # # ============LICENSE_END============================================ - -from onap_client.config import APP_CONFIG - -SDC_PROPERTIES = APP_CONFIG.sdc diff --git a/onap-client/onap_client/sdc/catalog/license_model_catalog.py b/onap-client/onap_client/sdc/catalog/license_model_catalog.py index 278645d..a67eaa5 100644 --- a/onap-client/onap_client/sdc/catalog/license_model_catalog.py +++ b/onap-client/onap_client/sdc/catalog/license_model_catalog.py @@ -38,281 +38,276 @@ import uuid from functools import partial -from onap_client import sdc from onap_client import config from onap_client.sdc.client import SDCClient PAYLOADS_DIR = config.PAYLOADS_DIR -sdc_properties = sdc.SDC_PROPERTIES application_id = config.APPLICATION_ID class LicenseModelClient(SDCClient): @property - def catalog_resources(self): - return CATALOG_RESOURCES - - @property def namespace(self): return "license_model" - -CATALOG_RESOURCES = { - "ADD_LICENSE_MODEL": { - "verb": "POST", - "description": "creates a license model in the SDC catalog", - "uri": partial( - "{endpoint}{service_path}".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_LICENSE_MODEL_PATH, - ), - "payload": "{}/license_model.jinja".format(PAYLOADS_DIR), - "payload-parameters": ["vendor_name"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": { - "license_model_id": ("itemId",), - "license_model_version_id": ("version", "id"), - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_KEY_GROUP": { - "verb": "POST", - "description": "Adds a key group to a license model", - "uri": partial( - "{endpoint}{service_path}/{license_model_id}/versions/{license_model_version_id}/license-key-groups".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_LICENSE_MODEL_PATH, - ), - "uri-parameters": ["license_model_id", "license_model_version_id"], - "payload": "{}/key_group.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "license_start_date", - "license_end_date", - "key_group_name", - ], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"key_group_id": ("value",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_ENTITLEMENT_POOL": { - "verb": "POST", - "description": "Adds an entitlement pool to a license model", - "uri": partial( - "{endpoint}{service_path}/{license_model_id}/versions/{license_model_version_id}/entitlement-pools".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_LICENSE_MODEL_PATH, - ), - "uri-parameters": ["license_model_id", "license_model_version_id"], - "payload": "{}/entitlement_pool.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "license_start_date", - "license_end_date", - "entitlement_pool_name", - ], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"entitlement_pool_id": ("value",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_FEATURE_GROUP": { - "verb": "POST", - "description": "Adds an feature group to a license model", - "uri": partial( - "{endpoint}{service_path}/{license_model_id}/versions/{license_model_version_id}/feature-groups".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_LICENSE_MODEL_PATH, - ), - "uri-parameters": ["license_model_id", "license_model_version_id"], - "payload": "{}/feature_group.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "feature_group_name", - "key_group_id", - "entitlement_pool_id", - "manufacturer_reference_number", - ], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"feature_group_id": ("value",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_LICENSE_AGREEMENT": { - "verb": "POST", - "description": "Adds an license agreement to a license model", - "uri": partial( - "{endpoint}{service_path}/{license_model_id}/versions/{license_model_version_id}/license-agreements".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_LICENSE_MODEL_PATH, - ), - "uri-parameters": ["license_model_id", "license_model_version_id"], - "payload": "{}/license_agreement.jinja".format(PAYLOADS_DIR), - "payload-parameters": ["feature_group_id", "license_agreement_name"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"license_agreement_id": ("value",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "SUBMIT_LICENSE_MODEL": { - "verb": "PUT", - "description": "Submits a license model", - "uri": partial( - "{endpoint}{service_path}/{license_model_id}/versions/{license_model_version_id}/actions".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_LICENSE_MODEL_PATH, - ), - "uri-parameters": ["license_model_id", "license_model_version_id"], - "payload": "{}/action.jinja".format(PAYLOADS_DIR), - "payload-parameters": ["action"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_LICENSE_MODEL": { - "verb": "GET", - "description": "Returns a license model", - "uri": partial( - "{endpoint}{service_path}/{license_model_id}/versions/{license_model_version_id}".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_LICENSE_MODEL_PATH, - ), - "uri-parameters": ["license_model_id", "license_model_version_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": { - "vendor_name": ("vendorName",), - "license_model_id": ("id",), - "description": ("description",), - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_LICENSE_MODEL_VERSION_ATTRIBUTE": { - "verb": "GET", - "description": "Returns an attribute for a license model (license-agreements, features-groups, etc...)", - "uri": partial( - "{endpoint}{service_path}/{license_model_id}/versions/{license_model_version_id}/{attribute}".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_LICENSE_MODEL_PATH, - ), - "uri-parameters": ["license_model_id", "license_model_version_id", "attribute"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_LICENSE_MODEL_VERSIONS": { - "verb": "GET", - "description": "Returns the version list for a license model", - "uri": partial( - "{endpoint}{service_path}/{license_model_id}/versions".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_ITEMS_PATH, - ), - "uri-parameters": ["license_model_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_LICENSE_MODELS": { - "verb": "GET", - "description": "Returns the full list of license models from SDC", - "uri": partial( - "{endpoint}{service_path}?&itemType=vlm".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_ITEMS_PATH, - ), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"results": ("results",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, -} + @property + def catalog_resources(self): + return { + "ADD_LICENSE_MODEL": { + "verb": "POST", + "description": "creates a license model in the SDC catalog", + "uri": partial( + "{endpoint}{service_path}".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_LICENSE_MODEL_PATH, + ), + "payload": "{}/license_model.jinja".format(PAYLOADS_DIR), + "payload-parameters": ["vendor_name"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": { + "license_model_id": ("itemId",), + "license_model_version_id": ("version", "id"), + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_KEY_GROUP": { + "verb": "POST", + "description": "Adds a key group to a license model", + "uri": partial( + "{endpoint}{service_path}/{license_model_id}/versions/{license_model_version_id}/license-key-groups".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_LICENSE_MODEL_PATH, + ), + "uri-parameters": ["license_model_id", "license_model_version_id"], + "payload": "{}/key_group.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "license_start_date", + "license_end_date", + "key_group_name", + ], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"key_group_id": ("value",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_ENTITLEMENT_POOL": { + "verb": "POST", + "description": "Adds an entitlement pool to a license model", + "uri": partial( + "{endpoint}{service_path}/{license_model_id}/versions/{license_model_version_id}/entitlement-pools".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_LICENSE_MODEL_PATH, + ), + "uri-parameters": ["license_model_id", "license_model_version_id"], + "payload": "{}/entitlement_pool.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "license_start_date", + "license_end_date", + "entitlement_pool_name", + ], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"entitlement_pool_id": ("value",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_FEATURE_GROUP": { + "verb": "POST", + "description": "Adds an feature group to a license model", + "uri": partial( + "{endpoint}{service_path}/{license_model_id}/versions/{license_model_version_id}/feature-groups".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_LICENSE_MODEL_PATH, + ), + "uri-parameters": ["license_model_id", "license_model_version_id"], + "payload": "{}/feature_group.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "feature_group_name", + "key_group_id", + "entitlement_pool_id", + "manufacturer_reference_number", + ], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"feature_group_id": ("value",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_LICENSE_AGREEMENT": { + "verb": "POST", + "description": "Adds an license agreement to a license model", + "uri": partial( + "{endpoint}{service_path}/{license_model_id}/versions/{license_model_version_id}/license-agreements".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_LICENSE_MODEL_PATH, + ), + "uri-parameters": ["license_model_id", "license_model_version_id"], + "payload": "{}/license_agreement.jinja".format(PAYLOADS_DIR), + "payload-parameters": ["feature_group_id", "license_agreement_name"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"license_agreement_id": ("value",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "SUBMIT_LICENSE_MODEL": { + "verb": "PUT", + "description": "Submits a license model", + "uri": partial( + "{endpoint}{service_path}/{license_model_id}/versions/{license_model_version_id}/actions".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_LICENSE_MODEL_PATH, + ), + "uri-parameters": ["license_model_id", "license_model_version_id"], + "payload": "{}/action.jinja".format(PAYLOADS_DIR), + "payload-parameters": ["action"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_LICENSE_MODEL": { + "verb": "GET", + "description": "Returns a license model", + "uri": partial( + "{endpoint}{service_path}/{license_model_id}/versions/{license_model_version_id}".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_LICENSE_MODEL_PATH, + ), + "uri-parameters": ["license_model_id", "license_model_version_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": { + "vendor_name": ("vendorName",), + "license_model_id": ("id",), + "description": ("description",), + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_LICENSE_MODEL_VERSION_ATTRIBUTE": { + "verb": "GET", + "description": "Returns an attribute for a license model (license-agreements, features-groups, etc...)", + "uri": partial( + "{endpoint}{service_path}/{license_model_id}/versions/{license_model_version_id}/{attribute}".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_LICENSE_MODEL_PATH, + ), + "uri-parameters": ["license_model_id", "license_model_version_id", "attribute"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_LICENSE_MODEL_VERSIONS": { + "verb": "GET", + "description": "Returns the version list for a license model", + "uri": partial( + "{endpoint}{service_path}/{license_model_id}/versions".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_ITEMS_PATH, + ), + "uri-parameters": ["license_model_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_LICENSE_MODELS": { + "verb": "GET", + "description": "Returns the full list of license models from SDC", + "uri": partial( + "{endpoint}{service_path}?&itemType=vlm".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_ITEMS_PATH, + ), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"results": ("results",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + } diff --git a/onap-client/onap_client/sdc/catalog/service_catalog.py b/onap-client/onap_client/sdc/catalog/service_catalog.py index c40306f..229f2b5 100644 --- a/onap-client/onap_client/sdc/catalog/service_catalog.py +++ b/onap-client/onap_client/sdc/catalog/service_catalog.py @@ -38,483 +38,478 @@ import uuid from functools import partial -from onap_client import sdc from onap_client import config from onap_client.sdc.client import SDCClient PAYLOADS_DIR = config.PAYLOADS_DIR -sdc_properties = sdc.SDC_PROPERTIES application_id = config.APPLICATION_ID class ServiceCatalog(SDCClient): @property - def catalog_resources(self): - return CATALOG_RESOURCES - - @property def namespace(self): return "service" - -CATALOG_RESOURCES = { - "ADD_CATALOG_SERVICE": { - "verb": "POST", - "description": "Creates a Service in the SDC catalog", - "uri": partial( - "{endpoint}{service_path}".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_SERVICES_PATH, - ), - "payload": "{}/catalog_service.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "service_name", - "instantiation_type", - "contact_id", - "category_name", - "category_id", - "category_name_lower", - "category_name_icon", - "tag", - "project_code", - "environment_context", - "ecomp_generated_naming", - "description", - "service_type", - "service_role", - "naming_policy", - ], - "success_code": 201, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"catalog_service_id": ("uniqueId",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "CHECKOUT_CATALOG_SERVICE": { - "verb": "POST", - "description": "Creates a new version of a Service in the SDC catalog", - "uri": partial( - "{endpoint}{service_path}/{catalog_service_id}/lifecycleState/CHECKOUT".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_SERVICES_PATH, - ), - "uri-parameters": ["catalog_service_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"catalog_service_id": ("uniqueId",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_RESOURCE_INSTANCE": { - "verb": "POST", - "description": "Attaches a Resource to a Service", - "uri": partial( - "{endpoint}{service_path}/{catalog_service_id}/resourceInstance".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_SERVICES_PATH, - ), - "uri-parameters": ["catalog_service_id"], - "payload": "{}/resource_instance.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "milli_timestamp", - "catalog_resource_id", - "catalog_resource_name", - "originType", - "posX", - "posY", - ], - "success_code": 201, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"catalog_resource_instance_id": ("uniqueId",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "DELETE_RESOURCE_FROM_SERVICE": { - "verb": "DELETE", - "description": "Deletes a resource from a service.", - "uri": partial( - "{endpoint}{service_path}/{catalog_service_id}/resourceInstance/{resource_instance_id}".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_SERVICES_PATH, - ), - "uri-parameters": ["catalog_service_id", "resource_instance_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "UPDATE_RESOURCE_VERSION": { - "verb": "POST", - "description": "Updates a component version in a service", - "uri": partial( - "{endpoint}{service_path}/{catalog_service_id}/resourceInstance/{component_name}/changeVersion".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_SERVICES_PATH, - ), - "uri-parameters": ["catalog_service_id", "component_name"], - "payload": "{}/update_resource_instance.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "component_id", - ], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "CHECKIN_SERVICE": { - "verb": "POST", - "description": "Checks a service into the SDC Catalog", - "uri": partial( - "{endpoint}{service_path}/{catalog_service_id}/lifecycleState/checkin".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_SERVICES_PATH, - ), - "uri-parameters": ["catalog_service_id"], - "payload": "{}/user_remarks.jinja".format(PAYLOADS_DIR), - "payload-parameters": ["user_remarks"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "REQUEST_SERVICE_CERTIFICATION": { - "verb": "POST", - "description": "Requests certification of a service into the SDC Catalog", - "uri": partial( - "{endpoint}{service_path}/{catalog_service_id}/lifecycleState/certificationRequest".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_SERVICES_PATH, - ), - "uri-parameters": ["catalog_service_id"], - "payload": "{}/user_remarks.jinja".format(PAYLOADS_DIR), - "payload-parameters": ["user_remarks"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "START_SERVICE_CERTIFICATION": { - "verb": "POST", - "description": "Starts certification of a service into the SDC Catalog", - "uri": partial( - "{endpoint}{service_path}/{catalog_service_id}/lifecycleState/startCertification".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_SERVICES_PATH, - ), - "uri-parameters": ["catalog_service_id"], - "payload": "{}/user_remarks.jinja".format(PAYLOADS_DIR), - "payload-parameters": ["user_remarks"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_TESTER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "FINISH_SERVICE_CERTIFICATION": { - "verb": "POST", - "description": "Finishes certification of a service from the SDC Catalog", - "uri": partial( - "{endpoint}{service_path}/{catalog_service_id}/lifecycleState/certify".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_SERVICES_PATH, - ), - "uri-parameters": ["catalog_service_id"], - "payload": "{}/user_remarks.jinja".format(PAYLOADS_DIR), - "payload-parameters": ["user_remarks"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_TESTER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"catalog_service_id": ("uniqueId",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "APPROVE_SERVICE_CERTIFICATION": { - "verb": "POST", - "description": "Approves a service from the SDC Catalog", - "uri": partial( - "{endpoint}{service_path}/{catalog_service_id}/distribution-state/approve".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_SERVICES_PATH, - ), - "uri-parameters": ["catalog_service_id"], - "payload": "{}/user_remarks.jinja".format(PAYLOADS_DIR), - "payload-parameters": ["user_remarks"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_GOVERNOR_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "DISTRIBUTE_SDC_SERVICE": { - "verb": "POST", - "description": "Distributes a service from the SDC Catalog", - "uri": partial( - "{endpoint}{service_path}/{catalog_service_id}/distribution/PROD/activate".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_SERVICES_PATH, - ), - "uri-parameters": ["catalog_service_id"], - "success_code": 200, - "header-parameters": ["X-TransactionId"], - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_OPS_USER_ID, - # "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_CATALOG_SERVICE_PROPERTY": { - "verb": "POST", - "description": "Add a property value for a VF in a Service", - "uri": partial( - "{endpoint}{service_path}/{catalog_service_id}/resourceInstance/{catalog_resource_instance_id}/properties".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "uri-parameters": ["catalog_service_id", "catalog_resource_instance_id"], - "payload": "{}/catalog_service_property.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "unique_id", - "parent_unique_id", - "owner_id", - "input_name", - "input_value", - "schema_type", - "property_type", - ], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_CATALOG_SERVICE_INPUT": { - "verb": "POST", - "description": "Add an input value for a VF in a Service", - "uri": partial( - "{endpoint}{service_path}/{catalog_service_id}/resourceInstance/{catalog_resource_instance_id}/inputs".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "uri-parameters": ["catalog_service_id", "catalog_resource_instance_id"], - "payload": "{}/catalog_service_property.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "unique_id", - "parent_unique_id", - "owner_id", - "input_name", - "input_value", - ], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_SDC_SERVICE": { - "verb": "GET", - "description": "Gets a service from the SDC Catalog", - "uri": partial( - "{endpoint}{service_path}/{catalog_service_id}".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_SERVICES_PATH, - ), - "uri-parameters": ["catalog_service_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_SERVICES": { - "verb": "GET", - "description": "Get all services in the SDC catalog", - "uri": partial( - "{endpoint}{service_path}".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_SCREEN_PATH, - ), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"services": ("services",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_SERVICE_DISTRIBUTION": { - "verb": "GET", - "description": "Gets the distribution for a service from the SDC Catalog", - "uri": partial( - "{endpoint}{service_path}/{distribution_service_id}/distribution".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_SERVICES_PATH, - ), - "uri-parameters": ["distribution_service_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_SERVICE_DISTRIBUTION_DETAILS": { - "verb": "GET", - "description": "Gets the distribution details for a service from the SDC Catalog", - "uri": partial( - "{endpoint}{service_path}/distribution/{distribution_id}".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_SERVICES_PATH, - ), - "uri-parameters": ["distribution_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_SDC_CSAR": { - "verb": "GET", - "description": "Returns the CSAR for a service.", - "uri": partial( - "{endpoint}{service_path}/{catalog_service_id}/artifacts/{csar_artifact_id}".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_SERVICES_PATH, - ), - "uri-parameters": ["catalog_service_id", "csar_artifact_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, -} + @property + def catalog_resources(self): + return { + "ADD_CATALOG_SERVICE": { + "verb": "POST", + "description": "Creates a Service in the SDC catalog", + "uri": partial( + "{endpoint}{service_path}".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_SERVICES_PATH, + ), + "payload": "{}/catalog_service.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "service_name", + "instantiation_type", + "contact_id", + "category_name", + "category_id", + "category_name_lower", + "category_name_icon", + "tag", + "project_code", + "environment_context", + "ecomp_generated_naming", + "description", + "service_type", + "service_role", + "naming_policy", + ], + "success_code": 201, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"catalog_service_id": ("uniqueId",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "CHECKOUT_CATALOG_SERVICE": { + "verb": "POST", + "description": "Creates a new version of a Service in the SDC catalog", + "uri": partial( + "{endpoint}{service_path}/{catalog_service_id}/lifecycleState/CHECKOUT".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_SERVICES_PATH, + ), + "uri-parameters": ["catalog_service_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"catalog_service_id": ("uniqueId",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_RESOURCE_INSTANCE": { + "verb": "POST", + "description": "Attaches a Resource to a Service", + "uri": partial( + "{endpoint}{service_path}/{catalog_service_id}/resourceInstance".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_SERVICES_PATH, + ), + "uri-parameters": ["catalog_service_id"], + "payload": "{}/resource_instance.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "milli_timestamp", + "catalog_resource_id", + "catalog_resource_name", + "originType", + "posX", + "posY", + ], + "success_code": 201, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"catalog_resource_instance_id": ("uniqueId",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "DELETE_RESOURCE_FROM_SERVICE": { + "verb": "DELETE", + "description": "Deletes a resource from a service.", + "uri": partial( + "{endpoint}{service_path}/{catalog_service_id}/resourceInstance/{resource_instance_id}".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_SERVICES_PATH, + ), + "uri-parameters": ["catalog_service_id", "resource_instance_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "UPDATE_RESOURCE_VERSION": { + "verb": "POST", + "description": "Updates a component version in a service", + "uri": partial( + "{endpoint}{service_path}/{catalog_service_id}/resourceInstance/{component_name}/changeVersion".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_SERVICES_PATH, + ), + "uri-parameters": ["catalog_service_id", "component_name"], + "payload": "{}/update_resource_instance.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "component_id", + ], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "CHECKIN_SERVICE": { + "verb": "POST", + "description": "Checks a service into the SDC Catalog", + "uri": partial( + "{endpoint}{service_path}/{catalog_service_id}/lifecycleState/checkin".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_SERVICES_PATH, + ), + "uri-parameters": ["catalog_service_id"], + "payload": "{}/user_remarks.jinja".format(PAYLOADS_DIR), + "payload-parameters": ["user_remarks"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "REQUEST_SERVICE_CERTIFICATION": { + "verb": "POST", + "description": "Requests certification of a service into the SDC Catalog", + "uri": partial( + "{endpoint}{service_path}/{catalog_service_id}/lifecycleState/certificationRequest".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_SERVICES_PATH, + ), + "uri-parameters": ["catalog_service_id"], + "payload": "{}/user_remarks.jinja".format(PAYLOADS_DIR), + "payload-parameters": ["user_remarks"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "START_SERVICE_CERTIFICATION": { + "verb": "POST", + "description": "Starts certification of a service into the SDC Catalog", + "uri": partial( + "{endpoint}{service_path}/{catalog_service_id}/lifecycleState/startCertification".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_SERVICES_PATH, + ), + "uri-parameters": ["catalog_service_id"], + "payload": "{}/user_remarks.jinja".format(PAYLOADS_DIR), + "payload-parameters": ["user_remarks"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_TESTER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "FINISH_SERVICE_CERTIFICATION": { + "verb": "POST", + "description": "Finishes certification of a service from the SDC Catalog", + "uri": partial( + "{endpoint}{service_path}/{catalog_service_id}/lifecycleState/certify".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_SERVICES_PATH, + ), + "uri-parameters": ["catalog_service_id"], + "payload": "{}/user_remarks.jinja".format(PAYLOADS_DIR), + "payload-parameters": ["user_remarks"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_TESTER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"catalog_service_id": ("uniqueId",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "APPROVE_SERVICE_CERTIFICATION": { + "verb": "POST", + "description": "Approves a service from the SDC Catalog", + "uri": partial( + "{endpoint}{service_path}/{catalog_service_id}/distribution-state/approve".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_SERVICES_PATH, + ), + "uri-parameters": ["catalog_service_id"], + "payload": "{}/user_remarks.jinja".format(PAYLOADS_DIR), + "payload-parameters": ["user_remarks"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_GOVERNOR_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "DISTRIBUTE_SDC_SERVICE": { + "verb": "POST", + "description": "Distributes a service from the SDC Catalog", + "uri": partial( + "{endpoint}{service_path}/{catalog_service_id}/distribution/PROD/activate".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_SERVICES_PATH, + ), + "uri-parameters": ["catalog_service_id"], + "success_code": 200, + "header-parameters": ["X-TransactionId"], + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_OPS_USER_ID, + # "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_CATALOG_SERVICE_PROPERTY": { + "verb": "POST", + "description": "Add a property value for a VF in a Service", + "uri": partial( + "{endpoint}{service_path}/{catalog_service_id}/resourceInstance/{catalog_resource_instance_id}/properties".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "uri-parameters": ["catalog_service_id", "catalog_resource_instance_id"], + "payload": "{}/catalog_service_property.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "unique_id", + "parent_unique_id", + "owner_id", + "input_name", + "input_value", + "schema_type", + "property_type", + ], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_CATALOG_SERVICE_INPUT": { + "verb": "POST", + "description": "Add an input value for a VF in a Service", + "uri": partial( + "{endpoint}{service_path}/{catalog_service_id}/resourceInstance/{catalog_resource_instance_id}/inputs".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "uri-parameters": ["catalog_service_id", "catalog_resource_instance_id"], + "payload": "{}/catalog_service_property.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "unique_id", + "parent_unique_id", + "owner_id", + "input_name", + "input_value", + ], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_SDC_SERVICE": { + "verb": "GET", + "description": "Gets a service from the SDC Catalog", + "uri": partial( + "{endpoint}{service_path}/{catalog_service_id}".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_SERVICES_PATH, + ), + "uri-parameters": ["catalog_service_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_SERVICES": { + "verb": "GET", + "description": "Get all services in the SDC catalog", + "uri": partial( + "{endpoint}{service_path}".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_SCREEN_PATH, + ), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"services": ("services",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_SERVICE_DISTRIBUTION": { + "verb": "GET", + "description": "Gets the distribution for a service from the SDC Catalog", + "uri": partial( + "{endpoint}{service_path}/{distribution_service_id}/distribution".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_SERVICES_PATH, + ), + "uri-parameters": ["distribution_service_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_SERVICE_DISTRIBUTION_DETAILS": { + "verb": "GET", + "description": "Gets the distribution details for a service from the SDC Catalog", + "uri": partial( + "{endpoint}{service_path}/distribution/{distribution_id}".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_SERVICES_PATH, + ), + "uri-parameters": ["distribution_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_SDC_CSAR": { + "verb": "GET", + "description": "Returns the CSAR for a service.", + "uri": partial( + "{endpoint}{service_path}/{catalog_service_id}/artifacts/{csar_artifact_id}".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_SERVICES_PATH, + ), + "uri-parameters": ["catalog_service_id", "csar_artifact_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + } diff --git a/onap-client/onap_client/sdc/catalog/vnf_catalog.py b/onap-client/onap_client/sdc/catalog/vnf_catalog.py index 852d008..0cdd5df 100644 --- a/onap-client/onap_client/sdc/catalog/vnf_catalog.py +++ b/onap-client/onap_client/sdc/catalog/vnf_catalog.py @@ -38,509 +38,504 @@ import uuid from functools import partial -from onap_client import sdc from onap_client import config from onap_client.sdc.client import SDCClient PAYLOADS_DIR = config.PAYLOADS_DIR -sdc_properties = sdc.SDC_PROPERTIES application_id = config.APPLICATION_ID class VNFCatalog(SDCClient): @property - def catalog_resources(self): - return CATALOG_RESOURCES - - @property def namespace(self): return "vnf" - -CATALOG_RESOURCES = { - "ADD_CATALOG_RESOURCE": { - "verb": "POST", - "description": "Adds a VNF to the SDC catalog", - "uri": partial( - "{endpoint}{service_path}".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "payload": "{}/catalog_resource.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "software_product_id", - "vnf_name", - "vendor_name", - "resource_type", - "categories", - "contact_id", - "vnf_description", - ], - "success_code": 201, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"catalog_resource_id": ("uniqueId",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "CERTIFY_CATALOG_RESOURCE": { - "verb": "POST", - "description": "Certifies a VNF in the SDC catalog", - "uri": partial( - "{endpoint}{service_path}/{catalog_resource_id}/lifecycleState/certify".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "uri-parameters": ["catalog_resource_id"], - "payload": "{}/user_remarks.jinja".format(PAYLOADS_DIR), - "payload-parameters": ["user_remarks"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"catalog_resource_id": ("uniqueId",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_CATALOG_RESOURCE_INPUT": { - "verb": "POST", - "description": "Adds an input value for a VNF", - "uri": partial( - "{endpoint}{service_path}/{catalog_resource_id}/update/inputs".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "payload": "{}/catalog_vnf_input.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "input_default_value", - "input_name", - "input_parent_unique_id", - "input_unique_id", - "input_owner_id", - ], - "uri-parameters": ["catalog_resource_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "UPDATE_CATALOG_RESOURCE": { - "verb": "PUT", - "description": "Creates a new version of a VF resource", - "uri": partial( - "{endpoint}{service_path}/{catalog_resource_id}".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "uri-parameters": ["catalog_resource_id"], - "success_code": 200, - "payload": "{}/generic_payload.jinja".format(PAYLOADS_DIR), - "payload-parameters": ["payload_data"], - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "CHECKOUT_CATALOG_RESOURCE": { - "verb": "POST", - "description": "Checks out a VF from the catalog", - "uri": partial( - "{endpoint}{service_path}/{catalog_resource_id}/lifecycleState/CHECKOUT".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "uri-parameters": ["catalog_resource_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_CATALOG_RESOURCE_PROPERTY": { - "verb": "POST", - "description": "Adds an property value for a VNF", - "uri": partial( - "{endpoint}{service_path}/{catalog_resource_id}/resourceInstance/{catalog_resource_instance_id}/inputs".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "payload": "{}/catalog_vnf_property.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "unique_id", - "parent_unique_id", - "owner_id", - "property_name", - "property_default_value", - "schema_type", - "property_type", - ], - "uri-parameters": ["catalog_resource_id", "catalog_resource_instance_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_CATALOG_RESOURCE_PROPERTY_NON_VF": { - "verb": "POST", - "description": "Adds an property value for a VNF", - "uri": partial( - "{endpoint}{service_path}/{catalog_resource_id}/resourceInstance/{catalog_resource_instance_id}/properties".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "payload": "{}/catalog_vnf_property.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "unique_id", - "parent_unique_id", - "owner_id", - "property_name", - "property_default_value", - "schema_type", - "property_type", - ], - "uri-parameters": ["catalog_resource_id", "catalog_resource_instance_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_CATALOG_RESOURCE_POLICY": { - "verb": "POST", - "description": "Adds an policy resource to a VNF", - "uri": partial( - "{endpoint}{service_path}/{catalog_resource_id}/policies/{catalog_policy_name}".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "uri-parameters": ["catalog_resource_id", "catalog_policy_name"], - "success_code": 201, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"catalog_resource_id": ("uniqueId",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_CATALOG_POLICY_PROPERTY": { - "verb": "PUT", - "description": "Adds a property to a policy for a VNF", - "uri": partial( - "{endpoint}{service_path}/{catalog_resource_id}/policies/{catalog_policy_id}/properties".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "uri-parameters": ["catalog_resource_id", "catalog_policy_id"], - "payload": "{}/catalog_vnf_policy_property.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "unique_id", - "property_name", - "property_default_value", - "description", - "property_type", - ], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_CATALOG_RESOURCE_GROUP": { - "verb": "POST", - "description": "Adds an group resource to a VNF", - "uri": partial( - "{endpoint}{service_path}/{catalog_resource_id}/groups/{catalog_group_name}".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "uri-parameters": ["catalog_resource_id", "catalog_group_name"], - "success_code": 201, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"catalog_resource_id": ("uniqueId",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_CATALOG_GROUP_PROPERTY": { - "verb": "PUT", - "description": "Adds a property to a group for a VNF", - "uri": partial( - "{endpoint}{service_path}/{catalog_resource_id}/groups/{catalog_group_id}/properties".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "uri-parameters": ["catalog_resource_id", "catalog_group_id"], - "payload": "{}/catalog_vnf_group_property.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "unique_id", - "property_name", - "property_default_value", - "description", - "property_type", - "owner_id", - "parent_unique_id", - ], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_GROUP_TO_INSTANCE": { - "verb": "POST", - "description": "Associate a group with a Catalog Instance", - "uri": partial( - "{endpoint}{service_path}/{catalog_resource_id}/groups/{catalog_group_id}/members".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "payload": "{}/catalog_vnf_group.jinja".format(PAYLOADS_DIR), - "payload-parameters": ["instance_id"], - "uri-parameters": ["catalog_resource_id", "catalog_group_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_POLICY_TO_INSTANCE": { - "verb": "POST", - "description": "Associate a policy with a Catalog Instance", - "uri": partial( - "{endpoint}{service_path}/{catalog_resource_id}/policies/{catalog_policy_id}/targets".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "payload": "{}/catalog_vnf_policy.jinja".format(PAYLOADS_DIR), - "payload-parameters": ["instance_ids"], - "uri-parameters": ["catalog_resource_id", "catalog_policy_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_RESOURCE_INSTANCE": { - "verb": "POST", - "description": "Attaches a Resource to a VNF", - "uri": partial( - "{endpoint}{service_path}/{catalog_resource_id}/resourceInstance".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "uri-parameters": ["catalog_resource_id"], - "payload": "{}/resource_instance_vnf.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "milli_timestamp", - "new_catalog_resource_id", - "new_catalog_resource_name", - "originType", - "posX", - "posY", - ], - "success_code": 201, - "return_data": {"catalog_resource_instance_id": ("uniqueId",)}, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_RESOURCE_RELATIONSHIP": { - "verb": "POST", - "description": "Creates a relationship between two resources in a VF", - "uri": partial( - "{endpoint}{service_path}/{catalog_resource_id}/resourceInstance/associate".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "uri-parameters": ["catalog_resource_id"], - "payload": "{}/add_resource_relationship.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "from_node_resource_id", - "to_node_resource_id", - "relationship_type", - "capability_name", - "capability_owner_id", - "capability_id", - "requirement_name", - "requirement_id", - ], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_CATALOG_RESOURCE": { - "verb": "GET", - "description": "Gets a VNF in the SDC catalog", - "uri": partial( - "{endpoint}{service_path}/{catalog_resource_id}".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "uri-parameters": ["catalog_resource_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"catalog_resource_name": ("name",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_CATALOG_RESOURCE_METADATA": { - "verb": "GET", - "description": "Gets metadata for a VNF in the SDC catalog", - "uri": partial( - "{endpoint}{service_path}/{catalog_resource_id}/filteredDataByParams?include=metadata".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_CATALOG_RESOURCES_PATH, - ), - "uri-parameters": ["catalog_resource_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_RESOURCES": { - "verb": "GET", - "description": "Get all resources in the SDC catalog", - "uri": partial( - "{endpoint}{service_path}".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_SCREEN_PATH, - ), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"resources": ("resources",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, -} + @property + def catalog_resources(self): + return { + "ADD_CATALOG_RESOURCE": { + "verb": "POST", + "description": "Adds a VNF to the SDC catalog", + "uri": partial( + "{endpoint}{service_path}".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "payload": "{}/catalog_resource.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "software_product_id", + "vnf_name", + "vendor_name", + "resource_type", + "categories", + "contact_id", + "vnf_description", + ], + "success_code": 201, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"catalog_resource_id": ("uniqueId",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "CERTIFY_CATALOG_RESOURCE": { + "verb": "POST", + "description": "Certifies a VNF in the SDC catalog", + "uri": partial( + "{endpoint}{service_path}/{catalog_resource_id}/lifecycleState/certify".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "uri-parameters": ["catalog_resource_id"], + "payload": "{}/user_remarks.jinja".format(PAYLOADS_DIR), + "payload-parameters": ["user_remarks"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"catalog_resource_id": ("uniqueId",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_CATALOG_RESOURCE_INPUT": { + "verb": "POST", + "description": "Adds an input value for a VNF", + "uri": partial( + "{endpoint}{service_path}/{catalog_resource_id}/update/inputs".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "payload": "{}/catalog_vnf_input.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "input_default_value", + "input_name", + "input_parent_unique_id", + "input_unique_id", + "input_owner_id", + ], + "uri-parameters": ["catalog_resource_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "UPDATE_CATALOG_RESOURCE": { + "verb": "PUT", + "description": "Creates a new version of a VF resource", + "uri": partial( + "{endpoint}{service_path}/{catalog_resource_id}".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "uri-parameters": ["catalog_resource_id"], + "success_code": 200, + "payload": "{}/generic_payload.jinja".format(PAYLOADS_DIR), + "payload-parameters": ["payload_data"], + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "CHECKOUT_CATALOG_RESOURCE": { + "verb": "POST", + "description": "Checks out a VF from the catalog", + "uri": partial( + "{endpoint}{service_path}/{catalog_resource_id}/lifecycleState/CHECKOUT".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "uri-parameters": ["catalog_resource_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_CATALOG_RESOURCE_PROPERTY": { + "verb": "POST", + "description": "Adds an property value for a VNF", + "uri": partial( + "{endpoint}{service_path}/{catalog_resource_id}/resourceInstance/{catalog_resource_instance_id}/inputs".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "payload": "{}/catalog_vnf_property.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "unique_id", + "parent_unique_id", + "owner_id", + "property_name", + "property_default_value", + "schema_type", + "property_type", + ], + "uri-parameters": ["catalog_resource_id", "catalog_resource_instance_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_CATALOG_RESOURCE_PROPERTY_NON_VF": { + "verb": "POST", + "description": "Adds an property value for a VNF", + "uri": partial( + "{endpoint}{service_path}/{catalog_resource_id}/resourceInstance/{catalog_resource_instance_id}/properties".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "payload": "{}/catalog_vnf_property.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "unique_id", + "parent_unique_id", + "owner_id", + "property_name", + "property_default_value", + "schema_type", + "property_type", + ], + "uri-parameters": ["catalog_resource_id", "catalog_resource_instance_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_CATALOG_RESOURCE_POLICY": { + "verb": "POST", + "description": "Adds an policy resource to a VNF", + "uri": partial( + "{endpoint}{service_path}/{catalog_resource_id}/policies/{catalog_policy_name}".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "uri-parameters": ["catalog_resource_id", "catalog_policy_name"], + "success_code": 201, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"catalog_resource_id": ("uniqueId",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_CATALOG_POLICY_PROPERTY": { + "verb": "PUT", + "description": "Adds a property to a policy for a VNF", + "uri": partial( + "{endpoint}{service_path}/{catalog_resource_id}/policies/{catalog_policy_id}/properties".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "uri-parameters": ["catalog_resource_id", "catalog_policy_id"], + "payload": "{}/catalog_vnf_policy_property.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "unique_id", + "property_name", + "property_default_value", + "description", + "property_type", + ], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_CATALOG_RESOURCE_GROUP": { + "verb": "POST", + "description": "Adds an group resource to a VNF", + "uri": partial( + "{endpoint}{service_path}/{catalog_resource_id}/groups/{catalog_group_name}".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "uri-parameters": ["catalog_resource_id", "catalog_group_name"], + "success_code": 201, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"catalog_resource_id": ("uniqueId",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_CATALOG_GROUP_PROPERTY": { + "verb": "PUT", + "description": "Adds a property to a group for a VNF", + "uri": partial( + "{endpoint}{service_path}/{catalog_resource_id}/groups/{catalog_group_id}/properties".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "uri-parameters": ["catalog_resource_id", "catalog_group_id"], + "payload": "{}/catalog_vnf_group_property.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "unique_id", + "property_name", + "property_default_value", + "description", + "property_type", + "owner_id", + "parent_unique_id", + ], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_GROUP_TO_INSTANCE": { + "verb": "POST", + "description": "Associate a group with a Catalog Instance", + "uri": partial( + "{endpoint}{service_path}/{catalog_resource_id}/groups/{catalog_group_id}/members".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "payload": "{}/catalog_vnf_group.jinja".format(PAYLOADS_DIR), + "payload-parameters": ["instance_id"], + "uri-parameters": ["catalog_resource_id", "catalog_group_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_POLICY_TO_INSTANCE": { + "verb": "POST", + "description": "Associate a policy with a Catalog Instance", + "uri": partial( + "{endpoint}{service_path}/{catalog_resource_id}/policies/{catalog_policy_id}/targets".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "payload": "{}/catalog_vnf_policy.jinja".format(PAYLOADS_DIR), + "payload-parameters": ["instance_ids"], + "uri-parameters": ["catalog_resource_id", "catalog_policy_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_RESOURCE_INSTANCE": { + "verb": "POST", + "description": "Attaches a Resource to a VNF", + "uri": partial( + "{endpoint}{service_path}/{catalog_resource_id}/resourceInstance".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "uri-parameters": ["catalog_resource_id"], + "payload": "{}/resource_instance_vnf.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "milli_timestamp", + "new_catalog_resource_id", + "new_catalog_resource_name", + "originType", + "posX", + "posY", + ], + "success_code": 201, + "return_data": {"catalog_resource_instance_id": ("uniqueId",)}, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_RESOURCE_RELATIONSHIP": { + "verb": "POST", + "description": "Creates a relationship between two resources in a VF", + "uri": partial( + "{endpoint}{service_path}/{catalog_resource_id}/resourceInstance/associate".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "uri-parameters": ["catalog_resource_id"], + "payload": "{}/add_resource_relationship.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "from_node_resource_id", + "to_node_resource_id", + "relationship_type", + "capability_name", + "capability_owner_id", + "capability_id", + "requirement_name", + "requirement_id", + ], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_CATALOG_RESOURCE": { + "verb": "GET", + "description": "Gets a VNF in the SDC catalog", + "uri": partial( + "{endpoint}{service_path}/{catalog_resource_id}".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "uri-parameters": ["catalog_resource_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"catalog_resource_name": ("name",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_CATALOG_RESOURCE_METADATA": { + "verb": "GET", + "description": "Gets metadata for a VNF in the SDC catalog", + "uri": partial( + "{endpoint}{service_path}/{catalog_resource_id}/filteredDataByParams?include=metadata".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_CATALOG_RESOURCES_PATH, + ), + "uri-parameters": ["catalog_resource_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_RESOURCES": { + "verb": "GET", + "description": "Get all resources in the SDC catalog", + "uri": partial( + "{endpoint}{service_path}".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_SCREEN_PATH, + ), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"resources": ("resources",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + } diff --git a/onap-client/onap_client/sdc/catalog/vsp_catalog.py b/onap-client/onap_client/sdc/catalog/vsp_catalog.py index 702a1a2..a6e4a2b 100644 --- a/onap-client/onap_client/sdc/catalog/vsp_catalog.py +++ b/onap-client/onap_client/sdc/catalog/vsp_catalog.py @@ -38,344 +38,339 @@ import uuid from functools import partial -from onap_client import sdc from onap_client import config from onap_client.sdc.client import SDCClient PAYLOADS_DIR = config.PAYLOADS_DIR -sdc_properties = sdc.SDC_PROPERTIES application_id = config.APPLICATION_ID class VSPCatalog(SDCClient): @property - def catalog_resources(self): - return CATALOG_RESOURCES - - @property def namespace(self): return "vsp" - -CATALOG_RESOURCES = { - "ADD_SOFTWARE_PRODUCT": { - "verb": "POST", - "description": "Creates a VSP in the SDC catalog", - "uri": partial( - "{endpoint}{service_path}".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_SOFTWARE_PRODUCT_PATH, - ), - "payload": "{}/software_product.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "software_product_name", - "feature_group_id", - "license_agreement_id", - "vendor_name", - "license_model_id", - "license_model_version_id", - "description", - "category", - "sub_category", - ], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": { - "software_product_id": ("itemId",), - "software_product_version_id": ("version", "id"), - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "UPDATE_SOFTWARE_PRODUCT": { - "verb": "POST", - "description": "Updates a VSP to a new version", - "uri": partial( - "{endpoint}{service_path}/{software_product_id}/versions/{software_product_version_id}".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_ITEMS_PATH, - ), - "payload": "{}/software_product_update.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "description", - ], - "uri-parameters": ["software_product_id", "software_product_version_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "UPLOAD_HEAT_PACKAGE": { - "verb": "POST", - "description": "Uploads a heat zip to a VSP", - "uri": partial( - "{endpoint}{service_path}/{software_product_id}/versions/{software_product_version_id}/orchestration-template-candidate".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_SOFTWARE_PRODUCT_PATH, - ), - "uri-parameters": ["software_product_id", "software_product_version_id"], - "files-parameters": ["file_path", "file_type"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "multipart/form-data", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "VALIDATE_SOFTWARE_PRODUCT": { - "verb": "PUT", - "description": "Validates VSP with Heat Zip", - "uri": partial( - "{endpoint}{service_path}/{software_product_id}/versions/{software_product_version_id}/orchestration-template-candidate/process".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_SOFTWARE_PRODUCT_PATH, - ), - "uri-parameters": ["software_product_id", "software_product_version_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "SUBMIT_SOFTWARE_PRODUCT": { - "verb": "PUT", - "description": "Submits Heat Zip to VSP", - "uri": partial( - "{endpoint}{service_path}/{software_product_id}/versions/{software_product_version_id}/actions".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_SOFTWARE_PRODUCT_PATH, - ), - "uri-parameters": ["software_product_id", "software_product_version_id"], - "payload": "{}/action.jinja".format(PAYLOADS_DIR), - "payload-parameters": ["action"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "PACKAGE_SOFTWARE_PRODUCT": { - "verb": "PUT", - "description": "Packages VSP (description needs to be better??)", - "uri": partial( - "{endpoint}{service_path}/{software_product_id}/versions/{software_product_version_id}/actions".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_SOFTWARE_PRODUCT_PATH, - ), - "uri-parameters": ["software_product_id", "software_product_version_id"], - "payload": "{}/action.jinja".format(PAYLOADS_DIR), - "payload-parameters": ["action"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_SOFTWARE_PRODUCT": { - "verb": "GET", - "description": "Gets VSP from Catalog", - "uri": partial( - "{endpoint}{service_path}/{software_product_id}/versions/{software_product_version_id}".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_SOFTWARE_PRODUCT_PATH, - ), - "uri-parameters": ["software_product_id", "software_product_version_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"name": ("name",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_SOFTWARE_PRODUCT_INFORMATION": { - "verb": "GET", - "description": "Gets Information for a VSP from Catalog", - "uri": partial( - "{endpoint}{service_path}/{software_product_id}/versions/{software_product_version_id}/questionnaire".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_SOFTWARE_PRODUCT_PATH, - ), - "uri-parameters": ["software_product_id", "software_product_version_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"name": ("name",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_SOFTWARE_PRODUCT_VERSIONS": { - "verb": "GET", - "description": "Returns a list of vsp versions", - "uri": partial( - "{endpoint}{service_path}/{software_product_id}/versions".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_ITEMS_PATH, - ), - "uri-parameters": ["software_product_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": { - "software_product_version_id": ("id",), - "description": ("description",), - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_SOFTWARE_PRODUCTS": { - "verb": "GET", - "description": "Returns a list of vsps", - "uri": partial( - "{endpoint}{service_path}?&itemType=vsp".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_ITEMS_PATH, - ), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "return_data": {"results": ("results",)}, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "GET_VSP_PERMISSIONS": { - "verb": "GET", - "description": "Returns the permissions for a VSP.", - "uri": partial( - "{endpoint}{service_path}/{software_product_id}/permissions".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_ITEMS_PATH, - ), - "uri-parameters": ["software_product_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "ADD_VSP_CONTRIBUTER": { - "verb": "PUT", - "description": "Adds a user to a VSP as a contributer", - "uri": partial( - "{endpoint}{service_path}/{software_product_id}/permissions/Contributor".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_ITEMS_PATH, - ), - "uri-parameters": ["software_product_id"], - "payload": "{}/add_vsp_contributer.jinja".format(PAYLOADS_DIR), - "payload-parameters": ["user_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, - "MODIFY_VSP_OWNER": { - "verb": "PUT", - "description": "Changes the owner of a VSP", - "uri": partial( - "{endpoint}{service_path}/{software_product_id}/permissions/Owner".format, - endpoint=sdc_properties.SDC_BE_ONBOARD_ENDPOINT, - service_path=sdc_properties.SDC_VENDOR_ITEMS_PATH, - ), - "uri-parameters": ["software_product_id"], - "payload": "{}/add_vsp_contributer.jinja".format(PAYLOADS_DIR), - "payload-parameters": ["user_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, -} + @property + def catalog_resources(self): + return { + "ADD_SOFTWARE_PRODUCT": { + "verb": "POST", + "description": "Creates a VSP in the SDC catalog", + "uri": partial( + "{endpoint}{service_path}".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_SOFTWARE_PRODUCT_PATH, + ), + "payload": "{}/software_product.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "software_product_name", + "feature_group_id", + "license_agreement_id", + "vendor_name", + "license_model_id", + "license_model_version_id", + "description", + "category", + "sub_category", + ], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": { + "software_product_id": ("itemId",), + "software_product_version_id": ("version", "id"), + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "UPDATE_SOFTWARE_PRODUCT": { + "verb": "POST", + "description": "Updates a VSP to a new version", + "uri": partial( + "{endpoint}{service_path}/{software_product_id}/versions/{software_product_version_id}".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_ITEMS_PATH, + ), + "payload": "{}/software_product_update.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "description", + ], + "uri-parameters": ["software_product_id", "software_product_version_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "UPLOAD_HEAT_PACKAGE": { + "verb": "POST", + "description": "Uploads a heat zip to a VSP", + "uri": partial( + "{endpoint}{service_path}/{software_product_id}/versions/{software_product_version_id}/orchestration-template-candidate".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_SOFTWARE_PRODUCT_PATH, + ), + "uri-parameters": ["software_product_id", "software_product_version_id"], + "files-parameters": ["file_path", "file_type"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "multipart/form-data", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "VALIDATE_SOFTWARE_PRODUCT": { + "verb": "PUT", + "description": "Validates VSP with Heat Zip", + "uri": partial( + "{endpoint}{service_path}/{software_product_id}/versions/{software_product_version_id}/orchestration-template-candidate/process".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_SOFTWARE_PRODUCT_PATH, + ), + "uri-parameters": ["software_product_id", "software_product_version_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "SUBMIT_SOFTWARE_PRODUCT": { + "verb": "PUT", + "description": "Submits Heat Zip to VSP", + "uri": partial( + "{endpoint}{service_path}/{software_product_id}/versions/{software_product_version_id}/actions".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_SOFTWARE_PRODUCT_PATH, + ), + "uri-parameters": ["software_product_id", "software_product_version_id"], + "payload": "{}/action.jinja".format(PAYLOADS_DIR), + "payload-parameters": ["action"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "PACKAGE_SOFTWARE_PRODUCT": { + "verb": "PUT", + "description": "Packages VSP (description needs to be better??)", + "uri": partial( + "{endpoint}{service_path}/{software_product_id}/versions/{software_product_version_id}/actions".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_SOFTWARE_PRODUCT_PATH, + ), + "uri-parameters": ["software_product_id", "software_product_version_id"], + "payload": "{}/action.jinja".format(PAYLOADS_DIR), + "payload-parameters": ["action"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_SOFTWARE_PRODUCT": { + "verb": "GET", + "description": "Gets VSP from Catalog", + "uri": partial( + "{endpoint}{service_path}/{software_product_id}/versions/{software_product_version_id}".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_SOFTWARE_PRODUCT_PATH, + ), + "uri-parameters": ["software_product_id", "software_product_version_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"name": ("name",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_SOFTWARE_PRODUCT_INFORMATION": { + "verb": "GET", + "description": "Gets Information for a VSP from Catalog", + "uri": partial( + "{endpoint}{service_path}/{software_product_id}/versions/{software_product_version_id}/questionnaire".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_SOFTWARE_PRODUCT_PATH, + ), + "uri-parameters": ["software_product_id", "software_product_version_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"name": ("name",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_SOFTWARE_PRODUCT_VERSIONS": { + "verb": "GET", + "description": "Returns a list of vsp versions", + "uri": partial( + "{endpoint}{service_path}/{software_product_id}/versions".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_ITEMS_PATH, + ), + "uri-parameters": ["software_product_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": { + "software_product_version_id": ("id",), + "description": ("description",), + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_SOFTWARE_PRODUCTS": { + "verb": "GET", + "description": "Returns a list of vsps", + "uri": partial( + "{endpoint}{service_path}?&itemType=vsp".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_ITEMS_PATH, + ), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "return_data": {"results": ("results",)}, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "GET_VSP_PERMISSIONS": { + "verb": "GET", + "description": "Returns the permissions for a VSP.", + "uri": partial( + "{endpoint}{service_path}/{software_product_id}/permissions".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_ITEMS_PATH, + ), + "uri-parameters": ["software_product_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "ADD_VSP_CONTRIBUTER": { + "verb": "PUT", + "description": "Adds a user to a VSP as a contributer", + "uri": partial( + "{endpoint}{service_path}/{software_product_id}/permissions/Contributor".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_ITEMS_PATH, + ), + "uri-parameters": ["software_product_id"], + "payload": "{}/add_vsp_contributer.jinja".format(PAYLOADS_DIR), + "payload-parameters": ["user_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + "MODIFY_VSP_OWNER": { + "verb": "PUT", + "description": "Changes the owner of a VSP", + "uri": partial( + "{endpoint}{service_path}/{software_product_id}/permissions/Owner".format, + endpoint=self.config.sdc.SDC_BE_ONBOARD_ENDPOINT, + service_path=self.config.sdc.SDC_VENDOR_ITEMS_PATH, + ), + "uri-parameters": ["software_product_id"], + "payload": "{}/add_vsp_contributer.jinja".format(PAYLOADS_DIR), + "payload-parameters": ["user_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + } diff --git a/onap-client/onap_client/sdc/client.py b/onap-client/onap_client/sdc/client.py index c1923da..4089c39 100644 --- a/onap-client/onap_client/sdc/client.py +++ b/onap-client/onap_client/sdc/client.py @@ -38,11 +38,9 @@ import uuid from functools import partial -from onap_client import sdc from onap_client.client.clients import Client from onap_client import config -sdc_properties = sdc.SDC_PROPERTIES application_id = config.APPLICATION_ID @@ -53,48 +51,45 @@ class SDCClient(Client): @property def catalog_resources(self): - return CATALOG_RESOURCES - - -CATALOG_RESOURCES = { - "HEALTH_CHECK": { - "verb": "GET", - "description": "Queries SDC health check endpoint", - "uri": partial( - "{endpoint}{service_path}".format, - endpoint=sdc_properties.SDC_HC_ENDPOINT, - service_path=sdc_properties.SDC_HEALTH_CHECK_PATH, - ), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": ( - sdc_properties.SDC_DESIGNER_USER_ID, - sdc_properties.SDC_DESIGNER_PASSWORD, - ), - }, - "GET_RESOURCE_CATEGORIES": { - "verb": "GET", - "description": "Queries SDC for resource categories", - "uri": partial( - "{endpoint}{service_path}".format, - endpoint=sdc_properties.SDC_BE_ENDPOINT, - service_path=sdc_properties.SDC_RESOURCE_CATEGORIES_PATH, - ), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "USER_ID": sdc_properties.SDC_DESIGNER_USER_ID, - }, - "auth": ( - sdc_properties.GLOBAL_SDC_USERNAME, - sdc_properties.GLOBAL_SDC_PASSWORD, - ), - }, -} + return { + "HEALTH_CHECK": { + "verb": "GET", + "description": "Queries SDC health check endpoint", + "uri": partial( + "{endpoint}{service_path}".format, + endpoint=self.config.sdc.SDC_HC_ENDPOINT, + service_path=self.config.sdc.SDC_HEALTH_CHECK_PATH, + ), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": ( + self.config.sdc.SDC_DESIGNER_USER_ID, + self.config.sdc.SDC_DESIGNER_PASSWORD, + ), + }, + "GET_RESOURCE_CATEGORIES": { + "verb": "GET", + "description": "Queries SDC for resource categories", + "uri": partial( + "{endpoint}{service_path}".format, + endpoint=self.config.sdc.SDC_BE_ENDPOINT, + service_path=self.config.sdc.SDC_RESOURCE_CATEGORIES_PATH, + ), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "USER_ID": self.config.sdc.SDC_DESIGNER_USER_ID, + }, + "auth": ( + self.config.sdc.GLOBAL_SDC_USERNAME, + self.config.sdc.GLOBAL_SDC_PASSWORD, + ), + }, + } diff --git a/onap-client/onap_client/sdc/license_model.py b/onap-client/onap_client/sdc/license_model.py index 52846c1..1fbcea2 100644 --- a/onap-client/onap_client/sdc/license_model.py +++ b/onap-client/onap_client/sdc/license_model.py @@ -37,7 +37,7 @@ from onap_client.lib import generate_dummy_string, generate_dummy_date from onap_client.resource import Resource -from onap_client.client.clients import Client +from onap_client.client.clients import get_client as Client class LicenseModel(Resource): @@ -97,6 +97,9 @@ class LicenseModel(Resource): license_model = self.oc.sdc.license_model.get_license_model(**self.attributes) self.attributes["tosca"] = license_model.response_data + def _output(self): + return self.tosca + # TODO # Break this up into class funcs? diff --git a/onap-client/onap_client/sdc/service.py b/onap-client/onap_client/sdc/service.py index 8eec31a..5f2f918 100644 --- a/onap-client/onap_client/sdc/service.py +++ b/onap-client/onap_client/sdc/service.py @@ -38,9 +38,8 @@ from onap_client.lib import generate_dummy_string from onap_client.resource import Resource from onap_client import exceptions -from onap_client.client.clients import Client +from onap_client.client.clients import get_client as Client from onap_client.sdc.vnf import get_vnf_id -from onap_client.sdc import SDC_PROPERTIES from onap_client.util import utility import base64 @@ -160,7 +159,9 @@ class Service(Resource): def _submit(self): """Submits the service in SDC and distributes the model""" - DISTRIBUTION_STEPS = SDC_PROPERTIES.SERVICE_DISTRIBUTION or [] + oc = Client() + + DISTRIBUTION_STEPS = oc.config.sdc.SERVICE_DISTRIBUTION or [] self.oc.sdc.service.checkin_service(**self.attributes, user_remarks="checking in") @@ -293,6 +294,9 @@ class Service(Resource): catalog_service_id=self.catalog_service_id ).response_data + def _output(self): + return self.tosca + def update_service(existing_service_id, service_input): oc = Client() @@ -401,7 +405,9 @@ def get_distribution_id(service_name): @utility def poll_distribution(service_name): """Polls a distributed service until distribution is complete""" - poll_interval = SDC_PROPERTIES.POLL_INTERVAL or 30 + oc = Client() + + poll_interval = oc.config.sdc.POLL_INTERVAL or 30 x = 0 while x < 30: distribution = get_service_distribution(service_name) diff --git a/onap-client/onap_client/sdc/vnf.py b/onap-client/onap_client/sdc/vnf.py index 03b5c54..21540e9 100644 --- a/onap-client/onap_client/sdc/vnf.py +++ b/onap-client/onap_client/sdc/vnf.py @@ -37,8 +37,8 @@ from onap_client.lib import generate_dummy_string from onap_client.resource import Resource -from onap_client import exceptions, sdc -from onap_client.client.clients import Client +from onap_client import exceptions +from onap_client.client.clients import get_client as Client from onap_client.sdc import vsp from onap_client.util import utility @@ -444,8 +444,9 @@ class VNF(Resource): :policy_name: name of the policy, matching onap-client.conf """ - sdc_properties = sdc.SDC_PROPERTIES - policy = sdc_properties.POLICIES.get(policy_name) + oc = Client() + + policy = oc.config.sdc.POLICIES.get(policy_name) if not policy: raise exceptions.UnknownPolicyException( "Policy {} was not found in configuration file".format(policy_name) @@ -472,6 +473,9 @@ class VNF(Resource): vnf = self.oc.sdc.vnf.get_catalog_resource(**self.attributes) self.attributes["tosca"] = vnf.response_data + def _output(self): + return self.tosca + def update_vnf(catalog_resource_id, vnf_input): oc = Client() diff --git a/onap-client/onap_client/sdc/vsp.py b/onap-client/onap_client/sdc/vsp.py index de47277..0dd2a52 100644 --- a/onap-client/onap_client/sdc/vsp.py +++ b/onap-client/onap_client/sdc/vsp.py @@ -37,7 +37,7 @@ from onap_client.lib import generate_dummy_string from onap_client.resource import Resource -from onap_client.client.clients import Client +from onap_client.client.clients import get_client as Client from onap_client import sdc from onap_client.util import utility from onap_client.exceptions import ResourceAlreadyExistsException @@ -119,6 +119,9 @@ class VSP(Resource): vsp = self.oc.sdc.vsp.get_software_product(**self.attributes) self.attributes["tosca"] = vsp.response_data + def _output(self): + return self.tosca + def update_vsp(existing_vsp, vsp_input): oc = Client() diff --git a/onap-client/onap_client/sdnc/__init__.py b/onap-client/onap_client/sdnc/__init__.py index eb3184f..5519a84 100644 --- a/onap-client/onap_client/sdnc/__init__.py +++ b/onap-client/onap_client/sdnc/__init__.py @@ -34,7 +34,3 @@ # limitations under the License. # # ============LICENSE_END============================================ - -from onap_client.config import APP_CONFIG - -SDNC_PROPERTIES = APP_CONFIG.sdnc diff --git a/onap-client/onap_client/sdnc/catalog/config_catalog.py b/onap-client/onap_client/sdnc/catalog/config_catalog.py index da3c1cf..18854e8 100644 --- a/onap-client/onap_client/sdnc/catalog/config_catalog.py +++ b/onap-client/onap_client/sdnc/catalog/config_catalog.py @@ -38,77 +38,72 @@ import uuid from functools import partial -from onap_client import sdnc from onap_client import config from onap_client.sdnc.client import SDNCClient PAYLOADS_DIR = config.PAYLOADS_DIR -sdnc_properties = sdnc.SDNC_PROPERTIES application_id = config.APPLICATION_ID class ConfigClient(SDNCClient): @property - def catalog_resources(self): - return CATALOG_RESOURCES - - @property def namespace(self): return "config" - -CATALOG_RESOURCES = { - "GET_SERVICE_INSTANCES": { - "verb": "GET", - "description": "Get a list of all service instances", - "uri": partial( - "{endpoint}{service_path}/GENERIC-RESOURCE-API:services".format, - endpoint=sdnc_properties.SDNC_ENDPOINT, - service_path=sdnc_properties.SDNC_CONFIG_PATH, - ), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (sdnc_properties.SDNC_USERNAME, sdnc_properties.SDNC_PASSWORD,), - }, - "GET_SERVICE_INSTANCE": { - "verb": "GET", - "description": "Get details for a service instance", - "uri": partial( - "{endpoint}{service_path}/GENERIC-RESOURCE-API:services/service/{service_instance_id}".format, - endpoint=sdnc_properties.SDNC_ENDPOINT, - service_path=sdnc_properties.SDNC_CONFIG_PATH, - ), - "uri-parameters": ["service_instance_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (sdnc_properties.SDNC_USERNAME, sdnc_properties.SDNC_PASSWORD,), - }, - "GET_VNF_INSTANCE": { - "verb": "GET", - "description": "Get details for a vnf instance", - "uri": partial( - "{endpoint}{service_path}/GENERIC-RESOURCE-API:services/service/{service_instance_id}/service-data/vnfs/vnf/{vnf_instance_id}".format, - endpoint=sdnc_properties.SDNC_ENDPOINT, - service_path=sdnc_properties.SDNC_CONFIG_PATH, - ), - "uri-parameters": ["service_instance_id", "vnf_instance_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (sdnc_properties.SDNC_USERNAME, sdnc_properties.SDNC_PASSWORD,), - }, -} + @property + def catalog_resources(self): + return { + "GET_SERVICE_INSTANCES": { + "verb": "GET", + "description": "Get a list of all service instances", + "uri": partial( + "{endpoint}{service_path}/GENERIC-RESOURCE-API:services".format, + endpoint=self.config.sdnc.SDNC_ENDPOINT, + service_path=self.config.sdnc.SDNC_CONFIG_PATH, + ), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.sdnc.SDNC_USERNAME, self.config.sdnc.SDNC_PASSWORD,), + }, + "GET_SERVICE_INSTANCE": { + "verb": "GET", + "description": "Get details for a service instance", + "uri": partial( + "{endpoint}{service_path}/GENERIC-RESOURCE-API:services/service/{service_instance_id}".format, + endpoint=self.config.sdnc.SDNC_ENDPOINT, + service_path=self.config.sdnc.SDNC_CONFIG_PATH, + ), + "uri-parameters": ["service_instance_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.sdnc.SDNC_USERNAME, self.config.sdnc.SDNC_PASSWORD,), + }, + "GET_VNF_INSTANCE": { + "verb": "GET", + "description": "Get details for a vnf instance", + "uri": partial( + "{endpoint}{service_path}/GENERIC-RESOURCE-API:services/service/{service_instance_id}/service-data/vnfs/vnf/{vnf_instance_id}".format, + endpoint=self.config.sdnc.SDNC_ENDPOINT, + service_path=self.config.sdnc.SDNC_CONFIG_PATH, + ), + "uri-parameters": ["service_instance_id", "vnf_instance_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.sdnc.SDNC_USERNAME, self.config.sdnc.SDNC_PASSWORD,), + }, + } diff --git a/onap-client/onap_client/sdnc/catalog/operations_catalog.py b/onap-client/onap_client/sdnc/catalog/operations_catalog.py index 12db3a3..2d9662b 100644 --- a/onap-client/onap_client/sdnc/catalog/operations_catalog.py +++ b/onap-client/onap_client/sdnc/catalog/operations_catalog.py @@ -38,60 +38,55 @@ import uuid from functools import partial -from onap_client import sdnc from onap_client import config from onap_client.sdnc.client import SDNCClient PAYLOADS_DIR = config.PAYLOADS_DIR -sdnc_properties = sdnc.SDNC_PROPERTIES application_id = config.APPLICATION_ID class OperationsClient(SDNCClient): @property - def catalog_resources(self): - return CATALOG_RESOURCES - - @property def namespace(self): return "operations" - -CATALOG_RESOURCES = { - "GR_API_PRELOAD": { - "verb": "POST", - "description": "Upload a GR API preload to SDNC", - "uri": partial( - "{endpoint}{service_path}/GENERIC-RESOURCE-API:preload-vf-module-topology-operation".format, - endpoint=sdnc_properties.SDNC_ENDPOINT, - service_path=sdnc_properties.SDNC_OPERATIONS_PATH, - ), - "payload-path": ["preload_path"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (sdnc_properties.SDNC_USERNAME, sdnc_properties.SDNC_PASSWORD,), - }, - "VNF_API_PRELOAD": { - "verb": "POST", - "description": "Upload a VNF API preload to SDNC", - "uri": partial( - "{endpoint}{service_path}/VNF-API:preload-vnf-topology-operation".format, - endpoint=sdnc_properties.SDNC_ENDPOINT, - service_path=sdnc_properties.SDNC_OPERATIONS_PATH, - ), - "payload-path": ["preload_path"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (sdnc_properties.SDNC_USERNAME, sdnc_properties.SDNC_PASSWORD,), - }, -} + @property + def catalog_resources(self): + return { + "GR_API_PRELOAD": { + "verb": "POST", + "description": "Upload a GR API preload to SDNC", + "uri": partial( + "{endpoint}{service_path}/GENERIC-RESOURCE-API:preload-vf-module-topology-operation".format, + endpoint=self.config.sdnc.SDNC_ENDPOINT, + service_path=self.config.sdnc.SDNC_OPERATIONS_PATH, + ), + "payload-path": ["preload_path"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.sdnc.SDNC_USERNAME, self.config.sdnc.SDNC_PASSWORD,), + }, + "VNF_API_PRELOAD": { + "verb": "POST", + "description": "Upload a VNF API preload to SDNC", + "uri": partial( + "{endpoint}{service_path}/VNF-API:preload-vnf-topology-operation".format, + endpoint=self.config.sdnc.SDNC_ENDPOINT, + service_path=self.config.sdnc.SDNC_OPERATIONS_PATH, + ), + "payload-path": ["preload_path"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.sdnc.SDNC_USERNAME, self.config.sdnc.SDNC_PASSWORD,), + }, + } diff --git a/onap-client/onap_client/sdnc/client.py b/onap-client/onap_client/sdnc/client.py index c0a3d1b..9f5a495 100644 --- a/onap-client/onap_client/sdnc/client.py +++ b/onap-client/onap_client/sdnc/client.py @@ -35,11 +35,9 @@ # # ============LICENSE_END============================================ -from onap_client import sdnc from onap_client.client.clients import Client from onap_client import config -sdnc_properties = sdnc.SDNC_PROPERTIES application_id = config.APPLICATION_ID diff --git a/onap-client/onap_client/sdnc/preload.py b/onap-client/onap_client/sdnc/preload.py index 8f67feb..5e1ee91 100644 --- a/onap-client/onap_client/sdnc/preload.py +++ b/onap-client/onap_client/sdnc/preload.py @@ -42,7 +42,6 @@ from onap_client.resource import Resource from onap_client.client.clients import Client from onap_client.exceptions import ServiceInstanceNotFound, VNFInstanceNotFound from onap_client import so -from onap_client.config import LOG as logger class Preload(Resource): @@ -106,8 +105,6 @@ class Preload(Resource): module_model.get("groupName"), ) - logger.info("Created preload {}".format(preload_path)) - create_preload(preload_path, instance_input.get("api_type")) return instance_input diff --git a/onap-client/onap_client/so/__init__.py b/onap-client/onap_client/so/__init__.py index 44cf6d7..5519a84 100644 --- a/onap-client/onap_client/so/__init__.py +++ b/onap-client/onap_client/so/__init__.py @@ -34,7 +34,3 @@ # limitations under the License. # # ============LICENSE_END============================================ - -from onap_client.config import APP_CONFIG - -SO_PROPERTIES = APP_CONFIG.so diff --git a/onap-client/onap_client/so/catalog/service_instantiation.py b/onap-client/onap_client/so/catalog/service_instantiation.py index 665402f..d561317 100644 --- a/onap-client/onap_client/so/catalog/service_instantiation.py +++ b/onap-client/onap_client/so/catalog/service_instantiation.py @@ -38,279 +38,274 @@ import uuid from functools import partial -from onap_client import so from onap_client import config from onap_client.so.client import SOClient PAYLOADS_DIR = config.PAYLOADS_DIR -so_properties = so.SO_PROPERTIES application_id = config.APPLICATION_ID class ServiceInstantiationClient(SOClient): @property - def catalog_resources(self): - return CATALOG_RESOURCES - - @property def namespace(self): return "service_instantiation" - -CATALOG_RESOURCES = { - "CREATE_SERVICE_INSTANCE": { - "verb": "POST", - "description": "Creates a Service Instance from the service catalog", - "uri": partial( - "{endpoint}{service_path}".format, - endpoint=so_properties.SO_ENDPOINT, - service_path=so_properties.SO_SERVICE_INSTANCE_PATH, - ), - "payload": "{}/so_service_instance.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "service_instance_name", - "requestor_id", - "model_invariant_id", - "model_version_id", - "model_name", - "model_version", - "tenant_id", - "cloud_owner", - "cloud_region", - "api_type", - "service_type", - "customer_id", - "project_name", - "owning_entity_id", - ], - "header-parameters": ["X-TransactionId"], - "success_code": 202, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - # "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (so_properties.SO_USERNAME, so_properties.SO_PASSWORD), - }, - "DELETE_SERVICE_INSTANCE": { - "verb": "DELETE", - "description": "Deletes a VNF Instance.", - "uri": partial( - "{endpoint}{service_path}/{service_instance_id}".format, - endpoint=so_properties.SO_ENDPOINT, - service_path=so_properties.SO_SERVICE_INSTANCE_PATH, - ), - "uri-parameters": ["service_instance_id"], - "payload": "{}/so_delete_service.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "service_invariant_id", - "service_name", - "service_version", - "api_type", - ], - "header-parameters": ["X-TransactionId"], - "success_code": 202, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - # "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (so_properties.SO_USERNAME, so_properties.SO_PASSWORD), - }, - "CREATE_VNF_INSTANCE": { - "verb": "POST", - "description": "Creates a VNF Instance.", - "uri": partial( - "{endpoint}{service_path}/{service_instance_id}/vnfs".format, - endpoint=so_properties.SO_ENDPOINT, - service_path=so_properties.SO_SERVICE_INSTANCE_PATH, - ), - "uri-parameters": ["service_instance_id"], - "payload": "{}/so_vnf_instance.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "vnf_instance_name", - "requestor_id", - "model_invariant_id", - "model_version_id", - "model_name", - "model_version", - "model_customization_id", - "tenant_id", - "cloud_owner", - "cloud_region", - "api_type", - "platform", - "line_of_business", - "service_model_name", - "service_model_invariant_id", - "service_model_version", - "service_model_version_id", - "service_instance_id", - ], - "header-parameters": ["X-TransactionId"], - "success_code": 202, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - # "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (so_properties.SO_USERNAME, so_properties.SO_PASSWORD), - }, - "DELETE_VNF_INSTANCE": { - "verb": "DELETE", - "description": "Deletes a VNF Instance.", - "uri": partial( - "{endpoint}{service_path}/{service_instance_id}/vnfs/{vnf_instance_id}".format, - endpoint=so_properties.SO_ENDPOINT, - service_path=so_properties.SO_SERVICE_INSTANCE_PATH, - ), - "uri-parameters": ["service_instance_id", "vnf_instance_id"], - "payload": "{}/so_delete_vnf.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "vnf_invariant_id", - "vnf_name", - "vnf_version", - "cloud_region", - "cloud_owner", - "tenant_id", - "api_type", - ], - "header-parameters": ["X-TransactionId"], - "success_code": 202, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - # "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (so_properties.SO_USERNAME, so_properties.SO_PASSWORD), - }, - "CREATE_MODULE_INSTANCE": { - "verb": "POST", - "description": "Creates a VNF Module Instance.", - "uri": partial( - "{endpoint}{service_path}/{service_instance_id}/vnfs/{vnf_instance_id}/vfModules".format, - endpoint=so_properties.SO_ENDPOINT, - service_path=so_properties.SO_SERVICE_INSTANCE_PATH, - ), - "uri-parameters": ["service_instance_id", "vnf_instance_id"], - "payload": "{}/so_create_module.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "module_instance_name", - "model_invariant_id", - "model_version_id", - "model_name", - "model_version", - "model_customization_id", - "model_name", - "api_type", - "tenant_id", - "cloud_owner", - "cloud_region", - "service_instance_id", - "service_model_name", - "service_model_invariant_id", - "service_model_version", - "service_model_version_id", - "vnf_instance_id", - "vnf_model_name", - "vnf_model_invariant_id", - "vnf_model_version", - "vnf_model_version_id", - "vnf_model_customization_id", - ], - "header-parameters": ["X-TransactionId"], - "success_code": 202, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - # "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (so_properties.SO_USERNAME, so_properties.SO_PASSWORD), - }, - "DELETE_MODULE_INSTANCE": { - "verb": "DELETE", - "description": "Deletes a VNF Module Instance.", - "uri": partial( - "{endpoint}{service_path}/{service_instance_id}/vnfs/{vnf_instance_id}/vfModules/{vf_module_id}".format, - endpoint=so_properties.SO_ENDPOINT, - service_path=so_properties.SO_SERVICE_INSTANCE_PATH, - ), - "uri-parameters": ["service_instance_id", "vnf_instance_id", "vf_module_id"], - "payload": "{}/so_delete_module.jinja".format(PAYLOADS_DIR), - "payload-parameters": [ - "module_invariant_id", - "module_name", - "module_version", - "cloud_region", - "cloud_owner", - "tenant_id", - "api_type", - ], - "header-parameters": ["X-TransactionId"], - "success_code": 202, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - # "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (so_properties.SO_USERNAME, so_properties.SO_PASSWORD), - }, - "GET_REQUEST_STATUS": { - "verb": "GET", - "description": "Queries the status for a given request ID", - "uri": partial( - "{endpoint}{service_path}/{request_id}".format, - endpoint=so_properties.SO_ENDPOINT, - service_path=so_properties.SO_ORCHESTRATION_PATH, - ), - "uri-parameters": ["request_id"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (so_properties.SO_USERNAME, so_properties.SO_PASSWORD), - }, - "GET_SERVICE_MODEL": { - "verb": "GET", - "description": "Searches the SO catalog for a service model", - "uri": partial( - "{endpoint}/service/search/findOneByModelName?modelName={model_name}".format, - endpoint=so_properties.SO_ENDPOINT, - ), - "uri-parameters": ["model_name"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (so_properties.SO_USERNAME, so_properties.SO_PASSWORD), - }, - "GET_SERVICE_MODEL_DETAILS": { - "verb": "GET", - "description": "Searches the SO catalog for a service model", - "uri": partial( - "{endpoint}/service/search/findOneByModelName?modelName={model_name}".format, - endpoint=so_properties.SO_ENDPOINT, - ), - "uri-parameters": ["model_name"], - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (so_properties.SO_USERNAME, so_properties.SO_PASSWORD), - }, -} + @property + def catalog_resources(self): + return { + "CREATE_SERVICE_INSTANCE": { + "verb": "POST", + "description": "Creates a Service Instance from the service catalog", + "uri": partial( + "{endpoint}{service_path}".format, + endpoint=self.config.so.SO_ENDPOINT, + service_path=self.config.so.SO_SERVICE_INSTANCE_PATH, + ), + "payload": "{}/so_service_instance.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "service_instance_name", + "requestor_id", + "model_invariant_id", + "model_version_id", + "model_name", + "model_version", + "tenant_id", + "cloud_owner", + "cloud_region", + "api_type", + "service_type", + "customer_id", + "project_name", + "owning_entity_id", + ], + "header-parameters": ["X-TransactionId"], + "success_code": 202, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + # "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.so.SO_USERNAME, self.config.so.SO_PASSWORD), + }, + "DELETE_SERVICE_INSTANCE": { + "verb": "DELETE", + "description": "Deletes a VNF Instance.", + "uri": partial( + "{endpoint}{service_path}/{service_instance_id}".format, + endpoint=self.config.so.SO_ENDPOINT, + service_path=self.config.so.SO_SERVICE_INSTANCE_PATH, + ), + "uri-parameters": ["service_instance_id"], + "payload": "{}/so_delete_service.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "service_invariant_id", + "service_name", + "service_version", + "api_type", + ], + "header-parameters": ["X-TransactionId"], + "success_code": 202, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + # "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.so.SO_USERNAME, self.config.so.SO_PASSWORD), + }, + "CREATE_VNF_INSTANCE": { + "verb": "POST", + "description": "Creates a VNF Instance.", + "uri": partial( + "{endpoint}{service_path}/{service_instance_id}/vnfs".format, + endpoint=self.config.so.SO_ENDPOINT, + service_path=self.config.so.SO_SERVICE_INSTANCE_PATH, + ), + "uri-parameters": ["service_instance_id"], + "payload": "{}/so_vnf_instance.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "vnf_instance_name", + "requestor_id", + "model_invariant_id", + "model_version_id", + "model_name", + "model_version", + "model_customization_id", + "tenant_id", + "cloud_owner", + "cloud_region", + "api_type", + "platform", + "line_of_business", + "service_model_name", + "service_model_invariant_id", + "service_model_version", + "service_model_version_id", + "service_instance_id", + ], + "header-parameters": ["X-TransactionId"], + "success_code": 202, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + # "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.so.SO_USERNAME, self.config.so.SO_PASSWORD), + }, + "DELETE_VNF_INSTANCE": { + "verb": "DELETE", + "description": "Deletes a VNF Instance.", + "uri": partial( + "{endpoint}{service_path}/{service_instance_id}/vnfs/{vnf_instance_id}".format, + endpoint=self.config.so.SO_ENDPOINT, + service_path=self.config.so.SO_SERVICE_INSTANCE_PATH, + ), + "uri-parameters": ["service_instance_id", "vnf_instance_id"], + "payload": "{}/so_delete_vnf.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "vnf_invariant_id", + "vnf_name", + "vnf_version", + "cloud_region", + "cloud_owner", + "tenant_id", + "api_type", + ], + "header-parameters": ["X-TransactionId"], + "success_code": 202, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + # "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.so.SO_USERNAME, self.config.so.SO_PASSWORD), + }, + "CREATE_MODULE_INSTANCE": { + "verb": "POST", + "description": "Creates a VNF Module Instance.", + "uri": partial( + "{endpoint}{service_path}/{service_instance_id}/vnfs/{vnf_instance_id}/vfModules".format, + endpoint=self.config.so.SO_ENDPOINT, + service_path=self.config.so.SO_SERVICE_INSTANCE_PATH, + ), + "uri-parameters": ["service_instance_id", "vnf_instance_id"], + "payload": "{}/so_create_module.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "module_instance_name", + "model_invariant_id", + "model_version_id", + "model_name", + "model_version", + "model_customization_id", + "model_name", + "api_type", + "tenant_id", + "cloud_owner", + "cloud_region", + "service_instance_id", + "service_model_name", + "service_model_invariant_id", + "service_model_version", + "service_model_version_id", + "vnf_instance_id", + "vnf_model_name", + "vnf_model_invariant_id", + "vnf_model_version", + "vnf_model_version_id", + "vnf_model_customization_id", + ], + "header-parameters": ["X-TransactionId"], + "success_code": 202, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + # "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.so.SO_USERNAME, self.config.so.SO_PASSWORD), + }, + "DELETE_MODULE_INSTANCE": { + "verb": "DELETE", + "description": "Deletes a VNF Module Instance.", + "uri": partial( + "{endpoint}{service_path}/{service_instance_id}/vnfs/{vnf_instance_id}/vfModules/{vf_module_id}".format, + endpoint=self.config.so.SO_ENDPOINT, + service_path=self.config.so.SO_SERVICE_INSTANCE_PATH, + ), + "uri-parameters": ["service_instance_id", "vnf_instance_id", "vf_module_id"], + "payload": "{}/so_delete_module.jinja".format(PAYLOADS_DIR), + "payload-parameters": [ + "module_invariant_id", + "module_name", + "module_version", + "cloud_region", + "cloud_owner", + "tenant_id", + "api_type", + ], + "header-parameters": ["X-TransactionId"], + "success_code": 202, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + # "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.so.SO_USERNAME, self.config.so.SO_PASSWORD), + }, + "GET_REQUEST_STATUS": { + "verb": "GET", + "description": "Queries the status for a given request ID", + "uri": partial( + "{endpoint}{service_path}/{request_id}".format, + endpoint=self.config.so.SO_ENDPOINT, + service_path=self.config.so.SO_ORCHESTRATION_PATH, + ), + "uri-parameters": ["request_id"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.so.SO_USERNAME, self.config.so.SO_PASSWORD), + }, + "GET_SERVICE_MODEL": { + "verb": "GET", + "description": "Searches the SO catalog for a service model", + "uri": partial( + "{endpoint}/service/search/findOneByModelName?modelName={model_name}".format, + endpoint=self.config.so.SO_ENDPOINT, + ), + "uri-parameters": ["model_name"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.so.SO_USERNAME, self.config.so.SO_PASSWORD), + }, + "GET_SERVICE_MODEL_DETAILS": { + "verb": "GET", + "description": "Searches the SO catalog for a service model", + "uri": partial( + "{endpoint}/service/search/findOneByModelName?modelName={model_name}".format, + endpoint=self.config.so.SO_ENDPOINT, + ), + "uri-parameters": ["model_name"], + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.so.SO_USERNAME, self.config.so.SO_PASSWORD), + }, + } diff --git a/onap-client/onap_client/so/client.py b/onap-client/onap_client/so/client.py index c38cf0c..7e79fe1 100644 --- a/onap-client/onap_client/so/client.py +++ b/onap-client/onap_client/so/client.py @@ -36,11 +36,9 @@ # ============LICENSE_END============================================ from functools import partial -from onap_client import so from onap_client.client.clients import Client from onap_client import config -so_properties = so.SO_PROPERTIES application_id = config.APPLICATION_ID @@ -51,19 +49,16 @@ class SOClient(Client): @property def catalog_resources(self): - return CATALOG_RESOURCES - - -CATALOG_RESOURCES = { - "HEALTH_CHECK": { - "verb": "GET", - "description": "Queries so health check endpoint", - "uri": partial( - "{endpoint}{service_path}".format, - endpoint=so_properties.SO_ENDPOINT, - service_path=so_properties.SO_HEALTH_CHECK_PATH, - ), - "success_code": 200, - "auth": (so_properties.SO_USERNAME, so_properties.SO_PASSWORD), - }, -} + return { + "HEALTH_CHECK": { + "verb": "GET", + "description": "Queries so health check endpoint", + "uri": partial( + "{endpoint}{service_path}".format, + endpoint=self.config.so.SO_ENDPOINT, + service_path=self.config.so.SO_HEALTH_CHECK_PATH, + ), + "success_code": 200, + "auth": (self.config.so.SO_USERNAME, self.config.so.SO_PASSWORD), + }, + } diff --git a/onap-client/onap_client/so/module_instance.py b/onap-client/onap_client/so/module_instance.py index 51c9bc2..67da272 100644 --- a/onap-client/onap_client/so/module_instance.py +++ b/onap-client/onap_client/so/module_instance.py @@ -37,7 +37,7 @@ import uuid from onap_client.resource import Resource -from onap_client.client.clients import Client +from onap_client.client.clients import get_client as Client from onap_client.exceptions import ServiceInstanceNotFound, VNFInstanceNotFound, ModuleInstanceNotFound from onap_client import so from onap_client import sdnc diff --git a/onap-client/onap_client/so/service_instance.py b/onap-client/onap_client/so/service_instance.py index 10271fa..3675a4e 100644 --- a/onap-client/onap_client/so/service_instance.py +++ b/onap-client/onap_client/so/service_instance.py @@ -39,8 +39,7 @@ import uuid from onap_client.lib import generate_dummy_string from onap_client.resource import Resource -from onap_client.client.clients import Client -from onap_client.so import SO_PROPERTIES +from onap_client.client.clients import get_client as Client from onap_client.exceptions import ( SORequestStatusUnavailable, SORequestFailed, @@ -152,7 +151,7 @@ def poll_request(request_id): """Poll an SO request until completion""" oc = Client() - poll_interval = SO_PROPERTIES.POLL_INTERVAL or 30 + poll_interval = oc.config.so.POLL_INTERVAL or 30 request = None x = 0 while x < 30: diff --git a/onap-client/onap_client/so/vnf_instance.py b/onap-client/onap_client/so/vnf_instance.py index abb26c3..0dbd87f 100644 --- a/onap-client/onap_client/so/vnf_instance.py +++ b/onap-client/onap_client/so/vnf_instance.py @@ -39,7 +39,7 @@ import uuid from onap_client.lib import generate_dummy_string from onap_client.resource import Resource -from onap_client.client.clients import Client as SOClient +from onap_client.client.clients import get_client as Client from onap_client.exceptions import ( ServiceInstanceNotFound, VNFComponentNotFound, @@ -52,12 +52,6 @@ from onap_client import so from onap_client.util import utility -oc = SOClient() -so_client = oc.so -sdc_client = oc.sdc -sdnc_client = oc.sdnc - - class VNFInstance(Resource): resource_name = "VNF_INSTANCE" spec = { @@ -116,7 +110,7 @@ class VNFInstance(Resource): vnf_model_version_id = vnf_component["actualComponentUid"] vnf_model_version = vnf_component["componentVersion"] - vnf_model = sdc_client.vnf.get_catalog_resource( + vnf_model = self.oc.sdc.vnf.get_catalog_resource( catalog_resource_id=vnf_model_version_id, ).response_data vnf_model_invariant_id = vnf_model["invariantUUID"] @@ -135,7 +129,8 @@ class VNFInstance(Resource): def get_vnf_model_component(service_model_name, vnf_model_name): - service_model = sdc_client.service.get_sdc_service( + oc = Client() + service_model = oc.sdc.service.get_sdc_service( catalog_service_id=sdc.service.get_service_id(service_model_name) ).response_data @@ -146,7 +141,8 @@ def get_vnf_model_component(service_model_name, vnf_model_name): def get_service_instance(service_instance_name): - service_instances = sdnc_client.config.get_service_instances().response_data + oc = Client() + service_instances = oc.sdnc.config.get_service_instances().response_data for si in service_instances.get("services", {}).get("service", []): si_name = ( si.get("service-data", {}) @@ -196,8 +192,10 @@ def get_vnf_instance(service_instance, vnf_instance_name): def create_vnf_instance(instance_input): + oc = Client() + headers = {"X-TransactionId": str(uuid.uuid4())} - vnf_instance = so_client.service_instantiation.create_vnf_instance( + vnf_instance = oc.so.service_instantiation.create_vnf_instance( **instance_input, **headers ) @@ -213,6 +211,7 @@ def create_vnf_instance(instance_input): @utility def delete_vnf_instance(service_instance_name, vnf_instance_name, api_type="GR_API"): """Delete a VNF Instance from SO""" + oc = Client() si = so.service_instance.get_service_instance(service_instance_name) si_id = si.get("service-instance-id") for vnfi in si.get("service-data", {}).get("vnfs", {}).get("vnf", []): @@ -223,7 +222,7 @@ def delete_vnf_instance(service_instance_name, vnf_instance_name, api_type="GR_A tenant_id = vnfi.get("vnf-data").get("vnf-request-input").get("tenant") cloud_owner = vnfi.get("vnf-data").get("vnf-request-input").get("cloud-owner") cloud_region = vnfi.get("vnf-data").get("vnf-request-input").get("aic-cloud-region") - return so_client.service_instantiation.delete_vnf_instance( + return oc.so.service_instantiation.delete_vnf_instance( vnf_invariant_id=invariant_id, vnf_version=vnf_version, vnf_name=vnf_instance_name, diff --git a/onap-client/onap_client/tests/test_engine.py b/onap-client/onap_client/tests/test_engine.py index 808e5b7..b305725 100644 --- a/onap-client/onap_client/tests/test_engine.py +++ b/onap-client/onap_client/tests/test_engine.py @@ -46,4 +46,4 @@ def test_engine(): t = load_spec(spec_file) - assert isinstance(t, dict) + assert isinstance(t, list) diff --git a/onap-client/onap_client/vid/__init__.py b/onap-client/onap_client/vid/__init__.py index 1cb6244..5519a84 100644 --- a/onap-client/onap_client/vid/__init__.py +++ b/onap-client/onap_client/vid/__init__.py @@ -34,7 +34,3 @@ # limitations under the License. # # ============LICENSE_END============================================ - -from onap_client.config import APP_CONFIG - -VID_PROPERTIES = APP_CONFIG.vid diff --git a/onap-client/onap_client/vid/catalog/maintenance_catalog.py b/onap-client/onap_client/vid/catalog/maintenance_catalog.py index 2f01a79..1c7bad0 100644 --- a/onap-client/onap_client/vid/catalog/maintenance_catalog.py +++ b/onap-client/onap_client/vid/catalog/maintenance_catalog.py @@ -38,117 +38,112 @@ import uuid from functools import partial -from onap_client import vid from onap_client import config from onap_client.vid.client import VIDClient PAYLOADS_DIR = config.PAYLOADS_DIR -vid_properties = vid.VID_PROPERTIES application_id = config.APPLICATION_ID class MaintenanceClient(VIDClient): @property - def catalog_resources(self): - return CATALOG_RESOURCES - - @property def namespace(self): return "maintenance" - -CATALOG_RESOURCES = { - "CREATE_OWNING_ENTITY": { - "verb": "POST", - "description": "Creates an owning entity in VID", - "uri": partial( - "{endpoint}{service_path}/category_parameter/owningEntity".format, - endpoint=vid_properties.VID_ENDPOINT, - service_path=vid_properties.VID_MAINTENANCE_PATH, - ), - "payload-parameters": ["name"], - "payload": "{}/vid_maintenance.jinja".format(PAYLOADS_DIR), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (vid_properties.VID_USERNAME, vid_properties.VID_PASSWORD,), - }, - "CREATE_LINE_OF_BUSINESS": { - "verb": "POST", - "description": "Creates a line of business in VID", - "uri": partial( - "{endpoint}{service_path}/category_parameter/lineOfBusiness".format, - endpoint=vid_properties.VID_ENDPOINT, - service_path=vid_properties.VID_MAINTENANCE_PATH, - ), - "payload-parameters": ["name"], - "payload": "{}/vid_maintenance.jinja".format(PAYLOADS_DIR), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (vid_properties.VID_USERNAME, vid_properties.VID_PASSWORD,), - }, - "CREATE_PLATFORM": { - "verb": "POST", - "description": "Creates a platform in VID", - "uri": partial( - "{endpoint}{service_path}/category_parameter/platform".format, - endpoint=vid_properties.VID_ENDPOINT, - service_path=vid_properties.VID_MAINTENANCE_PATH, - ), - "payload-parameters": ["name"], - "payload": "{}/vid_maintenance.jinja".format(PAYLOADS_DIR), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (vid_properties.VID_USERNAME, vid_properties.VID_PASSWORD,), - }, - "CREATE_PROJECT": { - "verb": "POST", - "description": "Creates a project in VID", - "uri": partial( - "{endpoint}{service_path}/category_parameter/project".format, - endpoint=vid_properties.VID_ENDPOINT, - service_path=vid_properties.VID_MAINTENANCE_PATH, - ), - "payload-parameters": ["name"], - "payload": "{}/vid_maintenance.jinja".format(PAYLOADS_DIR), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (vid_properties.VID_USERNAME, vid_properties.VID_PASSWORD,), - }, - "GET_CATEGORY_PARAMETERS": { - "verb": "GET", - "description": "Returns the category parameters currently stored in VID", - "uri": partial( - "{endpoint}{service_path}/category_parameter?familyName=PARAMETER_STANDARDIZATION".format, - endpoint=vid_properties.VID_ENDPOINT, - service_path=vid_properties.VID_MAINTENANCE_PATH, - ), - "success_code": 200, - "headers": { - "Accept": "application/json", - "Content-Type": "application/json", - "X-TransactionId": str(uuid.uuid4()), - "X-FromAppId": application_id, - }, - "auth": (vid_properties.VID_USERNAME, vid_properties.VID_PASSWORD,), - }, -} + @property + def catalog_resources(self): + return { + "CREATE_OWNING_ENTITY": { + "verb": "POST", + "description": "Creates an owning entity in VID", + "uri": partial( + "{endpoint}{service_path}/category_parameter/owningEntity".format, + endpoint=self.config.vid.VID_ENDPOINT, + service_path=self.config.vid.VID_MAINTENANCE_PATH, + ), + "payload-parameters": ["name"], + "payload": "{}/vid_maintenance.jinja".format(PAYLOADS_DIR), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.vid.VID_USERNAME, self.config.vid.VID_PASSWORD,), + }, + "CREATE_LINE_OF_BUSINESS": { + "verb": "POST", + "description": "Creates a line of business in VID", + "uri": partial( + "{endpoint}{service_path}/category_parameter/lineOfBusiness".format, + endpoint=self.config.vid.VID_ENDPOINT, + service_path=self.config.vid.VID_MAINTENANCE_PATH, + ), + "payload-parameters": ["name"], + "payload": "{}/vid_maintenance.jinja".format(PAYLOADS_DIR), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.vid.VID_USERNAME, self.config.vid.VID_PASSWORD,), + }, + "CREATE_PLATFORM": { + "verb": "POST", + "description": "Creates a platform in VID", + "uri": partial( + "{endpoint}{service_path}/category_parameter/platform".format, + endpoint=self.config.vid.VID_ENDPOINT, + service_path=self.config.vid.VID_MAINTENANCE_PATH, + ), + "payload-parameters": ["name"], + "payload": "{}/vid_maintenance.jinja".format(PAYLOADS_DIR), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.vid.VID_USERNAME, self.config.vid.VID_PASSWORD,), + }, + "CREATE_PROJECT": { + "verb": "POST", + "description": "Creates a project in VID", + "uri": partial( + "{endpoint}{service_path}/category_parameter/project".format, + endpoint=self.config.vid.VID_ENDPOINT, + service_path=self.config.vid.VID_MAINTENANCE_PATH, + ), + "payload-parameters": ["name"], + "payload": "{}/vid_maintenance.jinja".format(PAYLOADS_DIR), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.vid.VID_USERNAME, self.config.vid.VID_PASSWORD,), + }, + "GET_CATEGORY_PARAMETERS": { + "verb": "GET", + "description": "Returns the category parameters currently stored in VID", + "uri": partial( + "{endpoint}{service_path}/category_parameter?familyName=PARAMETER_STANDARDIZATION".format, + endpoint=self.config.vid.VID_ENDPOINT, + service_path=self.config.vid.VID_MAINTENANCE_PATH, + ), + "success_code": 200, + "headers": { + "Accept": "application/json", + "Content-Type": "application/json", + "X-TransactionId": str(uuid.uuid4()), + "X-FromAppId": application_id, + }, + "auth": (self.config.vid.VID_USERNAME, self.config.vid.VID_PASSWORD,), + }, + } diff --git a/onap-client/onap_client/vid/client.py b/onap-client/onap_client/vid/client.py index 3b95618..d3d4468 100644 --- a/onap-client/onap_client/vid/client.py +++ b/onap-client/onap_client/vid/client.py @@ -36,11 +36,9 @@ # ============LICENSE_END============================================ from functools import partial -from onap_client import vid from onap_client.client.clients import Client from onap_client import config -vid_properties = vid.VID_PROPERTIES application_id = config.APPLICATION_ID @@ -51,19 +49,16 @@ class VIDClient(Client): @property def catalog_resources(self): - return CATALOG_RESOURCES - - -CATALOG_RESOURCES = { - "HEALTH_CHECK": { - "verb": "GET", - "description": "Queries VID health check endpoint", - "uri": partial( - "{endpoint}{service_path}".format, - endpoint=vid_properties.VID_ENDPOINT, - service_path=vid_properties.VID_HEALTH_CHECK_PATH, - ), - "success_code": 200, - "auth": (vid_properties.VID_USERNAME, vid_properties.VID_PASSWORD,), - }, -} + return { + "HEALTH_CHECK": { + "verb": "GET", + "description": "Queries VID health check endpoint", + "uri": partial( + "{endpoint}{service_path}".format, + endpoint=self.config.vid.VID_ENDPOINT, + service_path=self.config.vid.VID_HEALTH_CHECK_PATH, + ), + "success_code": 200, + "auth": (self.config.vid.VID_USERNAME, self.config.vid.VID_PASSWORD,), + }, + } diff --git a/onap-client/setup.py b/onap-client/setup.py index a9adbb4..5f0048b 100644 --- a/onap-client/setup.py +++ b/onap-client/setup.py @@ -47,7 +47,7 @@ for file in os.listdir("etc/payloads"): setuptools.setup( name="onap-client", - version="0.8.0", + version="0.9.0", author="Steven Stark", author_email="steven.stark@att.com", description="Python API wrapper for ONAP applications", @@ -63,4 +63,12 @@ setuptools.setup( python_requires=">=3.6", scripts=["bin/onap-client"], data_files=datafiles, + install_requires=[ + "Jinja2>=2.10", + "PyYAML>=5.1.2", + "requests>=2.22.0", + "PTable>=0.9.2", + "simplejson>=3.17.0", + "prettytable>=0.7.2" + ] ) |