## Compiling Model Loader
Model Loader can be compiled by running `mvn clean install`
+A Model Loader docker image can be created by running `docker build -t openecomp/model-loader target`
## Running Model Loader
-### Create a config file with the following key/values:
+### Deploying The Micro Service
-```
-DISTR_CLIENT_ASDC_ADDRESS=<SDC_ADDRESS>
-DISTR_CLIENT_CONSUMER_GROUP=<UEB_CONSUMER_GROUP> ;; Uniquely identiy this group of model loaders.
-DISTR_CLIENT_CONSUMER_ID=<UEB_CONSUMER_GROUP_ID> ;; Uniquely identiythis model loader.
-DISTR_CLIENT_ENVIRONMENT_NAME=<ENVIRONMENT_NAME> ;; Environment name configured on the SDC
-DISTR_CLIENT_PASSWORD=<DISTR_PASSWORD> ;; Password to connect to SDC
-DISTR_CLIENT_USER=<USER_ID> ;; User name to connect to SDC
-
-APP_SERVER_BASE_URL=https://<aai-address>:8443 ;; AAI Address (URL)
-APP_SERVER_AUTH_USER=<USER_ID> ;; User name to connect to AAI
-APP_SERVER_AUTH_PASSWORD=<PASSWORD> ;; Password to connect to AAi
+Push the Docker image that you have built to your Docker repository and pull it down to the location that you will be running the search service from.
-```
+**Create the following directories on the host machine:**
-### Docker
+ ./logs
+ ./opt/app/model-loader/appconfig
+ ./opt/app/model-loader/appconfig/auth
+
+You will be mounting these as data volumes when you start the Docker container. For examples of the files required in these directories, see the aai/test/config repository (https://gerrit.onap.org/r/#/admin/projects/aai/test-config)
-#### Build your own Model Loader docker image and create docker containers
-1. mvn clean package docker:build ;; Build a docker image of Model Loader
-2. sudo docker images ;; list docker images and check if the image you build is listed.
-3. sudo docker run --env-file <config-filename> <model-loader-image> /opt/jetty/jetty*/bin/startup.sh
+**Populate these directories as follows:**
+##### Contents of /opt/app/model-loader/appconfig
-#### Retrieve logs from stopped container
-* docker cp <container-id>:/opt/jetty/jetty-distribution-9.3.9.v20160517/logs/AAI-ML/error.log /tmp/
+The following file must be present in this directory on the host machine:
+
+_model-loader.properties_
+ # Always false. TLS Auth currently not supported
+ ml.distribution.ACTIVE_SERVER_TLS_AUTH=false
+
+ # Address/port of the SDC
+ ml.distribution.ASDC_ADDRESS=<SDC-Hostname>:8443
+
+ # DMaaP consumer group.
+ ml.distribution.CONSUMER_GROUP=aai-ml-group
+
+ # DMaaP consumer ID
+ ml.distribution.CONSUMER_ID=aai-ml
+
+ # SDC Environment Name. This must match the environment name configured on the SDC
+ ml.distribution.ENVIRONMENT_NAME=<Environment Name>
+
+ # Currently not used
+ ml.distribution.KEYSTORE_PASSWORD=
+
+ # Currently not used
+ ml.distribution.KEYSTORE_FILE=
+
+ # Obfuscated password to connect to the SDC. To obtain this value, use the following Jetty library to
+ # obfuscate the cleartext password: http://www.eclipse.org/jetty/documentation/9.4.x/configuring-security-secure-passwords.html
+ ml.distribution.PASSWORD=OBF:<password>
+
+ # How often (in seconds) to poll the DMaaP cluster for new model events
+ ml.distribution.POLLING_INTERVAL=<integer>
+
+ # Timeout value (in seconds) when polling DMaaP for new model events
+ ml.distribution.POLLING_TIMEOUT=<integer>
+
+ # Username to use when connecting to the SDC
+ ml.distribution.USER=<username>
+
+ # Artifact type we want to download from the SDC (the values below will typically suffice)
+ ml.distribution.ARTIFACT_TYPES=MODEL_INVENTORY_PROFILE,MODEL_QUERY_SPEC,VNF_CATALOG
+
+ # URL of the A&AI
+ ml.aai.BASE_URL=https://<AAI-Hostname>:8443
+
+ # A&AI endpoint to post models
+ ml.aai.MODEL_URL=/aai/v*/service-design-and-creation/models/model/
+
+ # A&AI endpoint to post named queries
+ ml.aai.NAMED_QUERY_URL=/aai/v*/service-design-and-creation/named-queries/named-query/
+
+ # A&AI endpoint to post vnf images
+ ml.aai.VNF_IMAGE_URL=/aai/v8/service-design-and-creation/vnf-images
+
+ # Name of certificate to use in connecting to the A&AI
+ ml.aai.KEYSTORE_FILE=aai-os-cert.p12
+
+ # Obfuscated keystore password to connect to the A&AI. This is only required if using 2-way SSL (not basic auth).
+ # To obtain this value, use the following Jetty library to obfuscate the cleartext password:
+ # http://www.eclipse.org/jetty/documentation/9.4.x/configuring-security-secure-passwords.html
+ ml.aai.KEYSTORE_PASSWORD=OBF:<password>
+
+ # Name of user to use when connecting to the A&AI. This is only required if using basic auth (not 2-way SSL).
+ ml.aai.AUTH_USER=<username>
+
+ # Obfuscated password to connect to the A&AI. This is only required if using basic auth (not 2-way SSL).
+ # To obtain this value, use the following Jetty library to obfuscate the cleartext password:
+ # http://www.eclipse.org/jetty/documentation/9.4.x/configuring-security-secure-passwords.html
+ ml.aai.AUTH_PASSWORD=OBF:<password>
+
+
+
+##### Contents of the /opt/app/model-loader/app-config/auth Directory
+
+The following files must be present in this directory on the host machine:
+
+_aai-os-cert.p12_
+
+The certificate used to connected to the A&AI
+
+**Start the service:**
+
+You can now start the Docker container for the _Search Data Service_, in the following manner:
+
+ docker run -d \
+ -e CONFIG_HOME=/opt/app/model-loader/config/ \
+ -v /logs:/logs \
+ -v /opt/app/model-loader/appconfig:/opt/app/model-loader/config \
+ --name model-loader \
+ {{your docker repo}}/model-loader
+
+Where,
+
+ {{your docker repo}} = The Docker repository you have published your image to.
--- /dev/null
+The ajsc-shared-config folder is included in the service project to provide the functionality of the AJSC_SHARED_CONFIG
+location that will exist in CSI envs. This includes the logback.xml for logging configurations, and some csm related
+artifacts necessary for proper functionality of the csm framework within the CSI env. Within the 2 profiles that can
+be utilized to run the AJSC locally, "runLocal" and "runAjsc", the system propery, "AJSC_SHARED_CONFIG", has been set
+to point to this directory. The files in this folder will NOT be copied/moved anywhere within the AJSC SWM package. These
+files will already be in existence within the CSI env.
\ No newline at end of file
--- /dev/null
+<!-- edited with XMLSpy v2008 (http://www.altova.com) by AT&T (AT&T) -->
+<!-- Edited with XMLSpy v2008 (http://www.altova.com) by Binh Quach (CINGULAR WIRELESS) -->
+<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by Durshetti (AT&T Wireless Services) -->
+<!--Sample XML file generated by XMLSPY v2004 rel. 3 U (http://www.xmlspy.com)-->
+<PartnerProfile xmlns="http://csi.cingular.com/CSI/Namespaces/Configuration/PartnerProfile.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://csi.cingular.com/CSI/Namespaces/Configuration/PartnerProfile.xsd C:\csi_projects\CommonServices\Schemas\v36\CSI\Partner\PartnerProfile.xsd">
+ <!--
+ Each partner will be listed in a unique block below along with a description of the
+ authorized interfaces, and any parameters describing or required by the interface.
+ This is valid for Dev & ST, but IST will need to identify the partners expecting to
+ test the environment and add blocks to authorize them.
+ -->
+ <ModifierATTID>sg7477</ModifierATTID>
+ <UpdateTimeStamp>2013-06-30T00:06:07+05:30</UpdateTimeStamp>
+ <GlobalConnectionBlocking>
+ <ClientBlocking/>
+ <InterfaceBlocking/>
+ </GlobalConnectionBlocking>
+ <GlobalConnectionLimitsConfiguration>
+ <GlobalConnectionLimits>
+ <alertThreshold>100</alertThreshold>
+ <maxConnections>110</maxConnections>
+ </GlobalConnectionLimits>
+ <GlobalInterfaceConnectionLimits>
+ <interfaceName>AddAccount</interfaceName>
+ <InterfaceConnectionLimits>
+ <maxConnections>10</maxConnections>
+ </InterfaceConnectionLimits>
+ </GlobalInterfaceConnectionLimits>
+ <GlobalInterfaceConnectionLimits>
+ <interfaceName>AddNote</interfaceName>
+ <InterfaceConnectionLimits>
+ <alertThreshold>90</alertThreshold>
+ <maxConnections>110</maxConnections>
+ </InterfaceConnectionLimits>
+ </GlobalInterfaceConnectionLimits>
+ </GlobalConnectionLimitsConfiguration>
+ <GlobalTimeoutConfiguration>
+ <GlobalTimeout>
+ <minTimeout>5000</minTimeout>
+ <defaultTimeout>300000</defaultTimeout>
+ <maxTimeout>600000</maxTimeout>
+ </GlobalTimeout>
+ <GlobalInterfaceTimeout>
+ <interfaceName>AddNote</interfaceName>
+ <InterfaceTimeout>
+ <minTimeout>5000</minTimeout>
+ <defaultTimeout>250000</defaultTimeout>
+ <maxTimeout>300000</maxTimeout>
+ </InterfaceTimeout>
+ </GlobalInterfaceTimeout>
+ <GlobalInterfaceTimeout>
+ <interfaceName>CreateFiberServiceVOIPNumber</interfaceName>
+ <InterfaceTimeout>
+ <minTimeout>120000</minTimeout>
+ <defaultTimeout>300000</defaultTimeout>
+ <maxTimeout>300000</maxTimeout>
+ </InterfaceTimeout>
+ </GlobalInterfaceTimeout>
+ <GlobalInterfaceTimeout>
+ <interfaceName>InquireAccountProfile</interfaceName>
+ <InterfaceTimeout>
+ <minTimeout>5000</minTimeout>
+ <defaultTimeout>100000</defaultTimeout>
+ <maxTimeout>250000</maxTimeout>
+ </InterfaceTimeout>
+ </GlobalInterfaceTimeout>
+ <GlobalInterfaceTimeout>
+ <interfaceName>InquireUnbilledUsageDetail</interfaceName>
+ <InterfaceTimeout>
+ <minTimeout>5000</minTimeout>
+ <defaultTimeout>250000</defaultTimeout>
+ <maxTimeout>300000</maxTimeout>
+ </InterfaceTimeout>
+ </GlobalInterfaceTimeout>
+ <GlobalInterfaceTimeout>
+ <interfaceName>InquireWirelinePortEligibility</interfaceName>
+ <InterfaceTimeout>
+ <minTimeout>5000</minTimeout>
+ <defaultTimeout>330000</defaultTimeout>
+ <maxTimeout>600000</maxTimeout>
+ </InterfaceTimeout>
+ </GlobalInterfaceTimeout>
+ <GlobalInterfaceTimeout>
+ <interfaceName>QualifyAndQuoteFiberServiceProducts</interfaceName>
+ <InterfaceTimeout>
+ <minTimeout>120000</minTimeout>
+ <defaultTimeout>300000</defaultTimeout>
+ <maxTimeout>300000</maxTimeout>
+ </InterfaceTimeout>
+ </GlobalInterfaceTimeout>
+ <GlobalInterfaceTimeout>
+ <interfaceName>SendSms</interfaceName>
+ <InterfaceTimeout>
+ <minTimeout>5000</minTimeout>
+ <defaultTimeout>150000</defaultTimeout>
+ <maxTimeout>180000</maxTimeout>
+ </InterfaceTimeout>
+ </GlobalInterfaceTimeout>
+ <GlobalInterfaceTimeout>
+ <interfaceName>ValidateFiberServiceFacility</interfaceName>
+ <InterfaceTimeout>
+ <minTimeout>120000</minTimeout>
+ <defaultTimeout>1200000</defaultTimeout>
+ <maxTimeout>1200000</maxTimeout>
+ </InterfaceTimeout>
+ </GlobalInterfaceTimeout>
+ <GlobalInterfaceTimeout>
+ <interfaceName>ValidateFiberServiceFacilityResponse</interfaceName>
+ <InterfaceTimeout>
+ <minTimeout>120000</minTimeout>
+ <defaultTimeout>1200000</defaultTimeout>
+ <maxTimeout>1200000</maxTimeout>
+ </InterfaceTimeout>
+ </GlobalInterfaceTimeout>
+ <GlobalInterfaceTimeout>
+ <interfaceName>ExecuteWirelineMechanizedLoopTest</interfaceName>
+ <InterfaceTimeout>
+ <minTimeout>120000</minTimeout>
+ <defaultTimeout>1200000</defaultTimeout>
+ <maxTimeout>1200000</maxTimeout>
+ </InterfaceTimeout>
+ </GlobalInterfaceTimeout>
+ <GlobalInterfaceTimeout>
+ <interfaceName>ExecuteWirelineMechanizedLoopTestResponse</interfaceName>
+ <InterfaceTimeout>
+ <minTimeout>120000</minTimeout>
+ <defaultTimeout>1200000</defaultTimeout>
+ <maxTimeout>1200000</maxTimeout>
+ </InterfaceTimeout>
+ </GlobalInterfaceTimeout>
+ <GlobalInterfaceTimeout>
+ <interfaceName>AppDev_NetworkPerformance</interfaceName>
+ <InterfaceTimeout>
+ <minTimeout>60000</minTimeout>
+ <defaultTimeout>100000</defaultTimeout>
+ <maxTimeout>250000</maxTimeout>
+ </InterfaceTimeout>
+ </GlobalInterfaceTimeout>
+ </GlobalTimeoutConfiguration>
+ <GlobalRuntimeEngineConfiguration>
+ <runtimeEngine>BW</runtimeEngine>
+ </GlobalRuntimeEngineConfiguration>
+ <GlobalIAPMaxAllowedCtns>25</GlobalIAPMaxAllowedCtns>
+ <GlobalIUCSPMaxAllowedCtns>10</GlobalIUCSPMaxAllowedCtns>
+ <GlobalACTFSTNPMaxAllowedCtns>10</GlobalACTFSTNPMaxAllowedCtns>
+ <GlobalADDFSTNPMaxAllowedCtns>10</GlobalADDFSTNPMaxAllowedCtns>
+ <GlobalIFSTNPSMaxAllowedCtns>10</GlobalIFSTNPSMaxAllowedCtns>
+ <Partner>
+ <userName>csitest</userName>
+ <userPassword>testingcsi</userPassword>
+ <originatorId>csitest</originatorId>
+ <isReseller>false</isReseller>
+ <isBusinessAllianceChannel>false</isBusinessAllianceChannel>
+ <salesChannelId>WALMART</salesChannelId>
+ <isBroker>false</isBroker>
+ <PartnerTimeoutConfiguration>
+ <minTimeout>500</minTimeout>
+ <defaultTimeout>300000</defaultTimeout>
+ <maxTimeout>600000</maxTimeout>
+ </PartnerTimeoutConfiguration>
+ <AuthorizedInterface>
+ <name>accountdetails</name>
+ <resource>v1</resource>
+ <allowedMethods>get</allowedMethods>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddContentProviderSponsor</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddEmployeeDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireEmployeeDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireVoiceUsageDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateContentProviderSponsor</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireContentProviderSponsor</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCircuitTestResults</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAccountProfileV78</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSubscriberProfileV78</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ScheduleCircuitTest</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelScheduledCircuitTest</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableCircuitTestList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SubmitCircuitTest</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCustomerTroubleTicketDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateCustomerTroubleTicketDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddCustomerTroubleTicket</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ManageBusinessServices</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireMobileUsageDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateEnterpriseEndUserPermissions</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SwapCrossUpgradeEquipment</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ManageMobilePaymentProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCustomerAlarmList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCustomerAlarmCount</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateCustomerAlarmAcknowledgment</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireRatingModel</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCustomerPurchaseEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCustomerTroubleTicketList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCustomerTroubleTicketCount</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireResellerAccountProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SubmitResellerContractInformation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireInternationalOfferings</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAccessCircuitSummary</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireEnterpriseOrderDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireEnterpriseOrderList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireEnterpriseOrderStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireEthernetDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCustomerDigitalLifeInstallationProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireDirectoryListingHeadings</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ManageDigitalLifeDevice</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendDigitalLifeDeviceNotification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ExecuteWirelineMechanizedLoopTest</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ExecuteWirelineMechanizedLoopTestResponse</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireNetworkAssetDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireVOIPProbeDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireVOIPAssetDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireManagedAssetDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ExecuteExternalIdVerificationQA</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireIPNetworkServiceLocationDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireUnifiedCreditCheckResult</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ProcessDeviceUnlock</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelessDashboard</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineServiceAppointmentReservations</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateWirelineServiceAppointmentReservation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireTechnicianDispatchStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateIDDBAutoGroup</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateIDDBDailyRules</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateIDDBGeography</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateIDDBMasterTemplate</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateOpenDeviceEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateOpenDeviceEmailAddressAvailability</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>RetrieveAvailableOpenDeviceProducts</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>RetrieveOpenDeviceDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateAndQualifyOpenDeviceAddress</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>RetrieveOpenDeviceTax</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CreateOpenDeviceCustomer</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CreateOpenDeviceCustomerOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddRetailStoreAppointment</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateAddressServiceAvailability</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableRetailStoreAppointments</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireRetailStoreAppointmentReferenceDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateFanProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireRetailStoreAppointmentList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireKeyValueStore</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateKeyValueStore</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AppDev_NetworkPerformance</name>
+ <resource>wireless</resource>
+ <allowedMethods>get</allowedMethods>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireUnifiedCustomerIdentifiers</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireNetworkLatency</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireNetworkTrafficDensity</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireReferenceCodeList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireBillList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSubscriberBilledCallDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSubscriberCharges</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSubscriberHistory</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSwitchCircuitDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSwitchCircuitList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddBillAccounts</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddUCOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>OrderDeviceProtectionPlan</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ResetEwalletSecurityProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateCustomerSalesSupportDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdatePartnerServicesProductStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateSubscriberParentalControls</name>
+ <voltageEnabledIndicator>false</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireOrderDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateCPEDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireNonSBSInventory</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateUCCustomerProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireUCCustomerProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CreateUCCustomerNumber</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AuthorizeLOAUpdate</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ReleaseInquiredTelephoneNumbers</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateTelephoneNumbers</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateLOADetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateBVOIPSiteProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireUpsellEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireIncompatibleOfferings</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateBVOIPSubscriberAssociation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendBVOIPSubscriberAssociationNotification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CreateWirelineServiceOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineDirectoryAvailability</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableCustomerSparePairsSummary</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateUnifiedCustomerLoginProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireEnterpriseDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePaymentProductApplicationResult</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireTroubleTicketStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireTroubleReferenceDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireTroubleTicketHistory</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateTroubleTicketDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddEnterpriseTroubleTicket</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireContractTerminationDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdatePaymentPreferences</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineServiceAppointments</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ReserveWirelineServiceAppointment</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelinePendingOrderDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SubmitWirelineFacilityAssignmentOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelinePendingOrderDetailsResponse</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddTroubleTicket</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFemtocellDevice</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateFemtocellDevice</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendTroubleTicketStatusNotice</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineTechnicianAssignments</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableFiberServiceAppointments</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SubmitMechanizedLoopTest</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePortedTNList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelinePortDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireHostRoutingDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireBundledOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireBundledAccountServices</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateBundledAccountServices</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateWirelineWorkOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSubscriberCallList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateSubscriberCallList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateCreditPolicy</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddPaymentProfile</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ActivateSwitchFeatures</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddTechnicianTroubleNote</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdatePaymentProfile</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSBSBundledDiscountSubscriberList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ExchangePerformanceMetrics</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireBundledOrderStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableBundlePackages</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireBundledOrderList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>DeletePaymentProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateBillingPreferences</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendBillingPreferencesNotification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePaymentProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireServiceAvailabilityForLocation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ActivateCustomer</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ActivateDevice</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ActivateFemtocellService</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ActivateFiberServiceResidentialGateway</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ActivateFiberServiceTNPort</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ActivatePendingEquipmentUpgrade</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ActivateSubscriber</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ActivateSubscriberReseller</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ActivateSubscriberResellerResponse</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ActivateSubscriberResponse</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>Add3PPOrderNotes</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>Add3PPOrderShipment</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddAccount</name>
+ <InterfaceConnectionConfiguration>
+ <maxConnections>25</maxConnections>
+ </InterfaceConnectionConfiguration>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddAffiliateDiscount</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddATTConnectAccount</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddCombinedBilling</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddCreditPolicyProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddCustomerDeviceSalesData</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddBundledOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateBundledOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddFemtocellAddress</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddFemtocellCALEALocation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddFemtocellProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddFiberServiceAccount</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddFiberServiceCreditPolicy</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddFiberServiceTNPort</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddInsuranceClaimOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddNetworkElementTroubleReport</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddNote</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddOrderEmail</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddOtherChargesCredits</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddPayment</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddPort</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddPrepaidFeature</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddPrepaidPayment</name>
+ <InterfaceTimeoutConfiguration>
+ <minTimeout>5000</minTimeout>
+ <defaultTimeout>300000</defaultTimeout>
+ <maxTimeout>300000</maxTimeout>
+ </InterfaceTimeoutConfiguration>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddPromiseToPay</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddRemoveProductCodeIndicator</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddSbcCombinedBilling</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddSbcSaleInformation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddSmsPayment</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddWirelineNote</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddWirelineOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddWirelinePayment</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddWirelinePaymentPlan</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ApplyDataTreatment</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ApplyFiberServiceCreditPolicy</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ApplyPrepaidPayment</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ApplyPrepaidVoucher</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AuthenticateFanPassword</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AuthenticateFanPin</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AuthorizeCreditCard</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CalculateSatelliteServiceTaxes</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CalculateTaxes</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>Cancel3PPOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelCombinedBilling</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelCopay</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelFemtocellE911Service</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelFemtocellNetwork</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelFemtocellService</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelFiberServiceWorkOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelHLRRegistration</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelInsuranceClaimOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelPendingEquipmentUpgrade</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelPort</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelReservedFiberServiceVOIPNumber</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelWirelinePayment</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ChangeSubscriberNumber</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CheckEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ConfirmHLRRegistration</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ConfirmWirelineTNReservation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CreateFiberServiceAccount</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CreateFiberServiceVOIPNumber</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CreateFiberServiceWorkOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CreateSatelliteServiceOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>DeleteFemtocellAddress</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>DeleteFemtocellProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>DetermineFiberServiceAccountHistoryList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>DetermineFiberServiceDuplicateApplicationList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>Echo</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ExecuteAffiliateCreditCheck</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ExecuteCreditCheck</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ExecuteFiberServiceCreditCheck</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ExecuteNBIMigration</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ExecuteSalesOpportunityCreditCheck</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ExecuteWirelineCreditCheck</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ExecuteWirelineTroubleReportFunction</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>Generic</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InitiateFiberServiceOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InitiateUnifiedCreditPolicyRetrieval</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAccessoryPricing</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAccountList</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAccountPaymentHistory</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAccountProfile</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAccountSubscribers</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireActivationCommissionCodes</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAdditionalOfferings</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAddressMatch</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAffiliateAccountPaymentBalance</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAffiliateAccountProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAffiliateCustomerAccount</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAffiliateEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAffiliateGeneralMessages</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAffiliateOrderStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAffiliateProductCatalog</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAffiliateProductConfiguration</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAffiliateProductDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAffiliateProductOfferingEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAffiliateServiceQualification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAffiliateServiceScheduling</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireARRemittance</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireATTCreditCardOffer</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireATTCreditCardOfferList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAutomaticPayment</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableAccessory</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableFiberServiceAppointments</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableCircuitSparePairs</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableDevice</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableFees</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableFiberServiceAppointments</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableFiberServiceCustomers</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableFiberServiceVOIPNumbers</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableItemQuantity</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableOfferDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableOffers</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailablePortInSubscriber</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableSatelliteServiceAppointments</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableSubscriberNumbers</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCollectionData</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCombinedBillingEligibility</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireContractedConversionFee</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCopayEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCopaySubscriber</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCopaySubscriberHistory</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCPNIContactInformation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCpniPreferenceHistory</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCreditCheckResult</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCreditPolicyProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCustomerDeviceSalesData</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireDataAccessEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireDataTreatmentHistory</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireDepositPaymentStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireDeviceDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireDeviceShippingInformation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireDuplicateOfferings</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireEquipmentOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireEquipmentOrderInvoice</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireEquipmentPricing</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireEstimatedFulfillmentTime</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireExistingCustomer</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFanProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFemtocellAddressList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFemtocellDeviceList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFemtocellEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFemtocellProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceAccountDetails</name>
+ <!-- indicator should be set based on client voltage status-->
+ <voltageEnabledIndicator>false</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceAssignedProductDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceCircuitDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceCreditVerificationQuestions</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceCrossProductPackages</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceEquipmentDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceOfferEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceOrderDetail</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceOrderList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceOrderStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceProductDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceQualification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceQuotation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceSubscriptionAccount</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServicePendingAdjustments</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceTNPortStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceUsageDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireFiberServiceVOIPPortEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireInsuranceClaimOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireInsuranceClaimReplacementProducts</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireInternationalRoamingMinutes</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireInternationalRoamingUsageParameters</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireLandLinePaymentServiceFee</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireLastSuccessfulPayment</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireMarketByZip</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireMarketServiceAreas</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireMaximumDryLoopFTNAllowed</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireMessagingCapabilities</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireNBIMigrationEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireOfferHistory</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireOfferingEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireOTAHistory</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireOTAProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePaymentLocationDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePendingPricePlan</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePort</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePortActivationStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePortEligibilityByRange</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePortEligibilityBySubscriberNumber</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePrepaidBalance</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePrepaidFeatures</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePrepaidFeaturesHistory</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePrepaidPaymentEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePrepaidPricePlans</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePrepaidPINDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePrepaidSubscriberProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePricePlanList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePricePlans</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquirePurchaseOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSatelliteServiceOrderDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSatelliteServiceProducts</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSatelliteServiceQualification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSatelliteServiceQuotation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSbcCombinedBillingEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireServiceAreaByZip</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireServiceOrderActivationStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSharedGroupUpdateStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireShippingZipBySubscriberNumber</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSIMStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSubscriberList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSubscriberParentalControls</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSubscriberPin</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSubscriberProfile</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSubscriberServiceStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSubscriberTransactionData</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSubscriptionAccountIdentifiers</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineSwitchProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSwitchTransactionStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireUnbilledUsageDetail</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireUnifiedCustomerProfileByServiceLocation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireUnifiedCustomerServiceProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireUpgradeEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireUnifiedOrderDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWiFiEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineAccountProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineAccountAssociations</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireInternetSubscriptionAccounts</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineBillingAccountList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineCreditApplicationList</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineCreditVerificationQuestions</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineCustomerAccount</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineDSLandConnectTechOrderDetail</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineDTVOrderDetail</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineFiberServiceAppointments</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineGeneralMessages</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineNetworkChannelDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineNonRecurringCharges</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineOpenTroubleReports</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineOrderDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineOrderStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelinePaymentHistory</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelinePaymentPlan</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelinePortEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableTelephoneNumbers</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ReserveTelephoneNumbers</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineProductCatalog</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineProductConfiguration</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineProductCount</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineProductDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineProductsForResource</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineRegion</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineServiceQualification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineServiceScheduling</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineQualifiedProducts</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineServiceOrderDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineTelcoOrderDetail</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineTransportDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineUsageDetail</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineWholesaleProductFamilies</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>MaintainAffiliateAccountAssociation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ManageAutomaticPayments</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ManageCopay</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ManageSubscriberPin</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ModifySatelliteServiceOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelSatelliteServiceOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>MoveSubscriber</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>NotifyFemtocellAction</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>OrderEquipment</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>OrderEquipmentWithValidation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>OrderFiberService</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ParseUnfieldedWirelineAddress</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>PortFiberServiceTelephoneNumber</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ProcessEcho</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ProcessEchoBackOffice</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ProcessEchoFrontOffice</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ProcessWirelineCPNIElection</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ProvisionAddressBookService</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ProvisionFemtocellE911Service</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ProvisionFemtocellNetwork</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ProvisionFemtocellRegistration</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>PublishUnifiedCreditPolicy</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>QualifyAndQuoteFiberServiceProducts</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>QualifyProducts</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>RegisterFemtocellService</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ReleaseAvailableFiberServiceVOIPNumbers</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ReleaseDryLoopFTN</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ReleaseSubscriberNumber</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>RemoveCustomerDeviceSalesData</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ResendOTAProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ReserveFiberServiceAppointments</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ReserveFiberServiceVOIPNumber</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ReserveSubscriberNumber</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ResetVoiceMailPassword</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>RetrieveAbandonedFiberServiceOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>RetrieveFiberServiceAccount</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>RetrieveFiberServiceAppointments</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>RetrieveFiberServiceOrderStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>RetrieveFiberServiceProducts</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>RetrieveOrderDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>RetrieveProducts</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>RetrieveQuotation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>RetrieveUnifiedCreditPolicy</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ScheduleAppointments</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ScheduleSatelliteServiceInstallation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendAccountNotification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendCPNINotification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendEmail</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendFanProfileNotification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendFiberServiceTNPortNotification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendFiberServiceWorkOrderNotification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendFiberServiceWorkOrderNotificationAsync</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendSms</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendSmsResponse</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendTreatmentNotification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SubmitATTCreditCard</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SubmitCreditCheck</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SubmitFiberServiceOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SubmitFiberServiceTNAssignmentOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SubmitOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SubmitWalmartProxy</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SwapEquipment</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SwapFemtocellDevice</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateAccountDisputeDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateAccountManager</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateAccountProfile</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateAccountStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateAffiliateProductOffering</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateBillMedia</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateCpniPreference</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateCreditPolicyProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateDepositPaymentStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateDeviceInventory</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateDeviceProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateEwalletStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireEwalletEventHistory</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireEwalletSubscriberProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCustomerSnapshot</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateFemtocellCALEALocation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateFemtocellProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateFiberServiceAccount</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateFiberServiceAccountDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateFiberServiceCreditApplication</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateInternationalRoamingUsageParameters</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateOfferDisposition</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdatePort</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdatePrepaidFeature</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdatePrepaidSubscriberProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateSalesOpportunityCreditCheck</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateSatelliteServiceAccountAssociation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateSubscriberAddressBookIdentifier</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateSubscriberProfile</name>
+ <InterfaceTimeoutConfiguration>
+ <minTimeout>5000</minTimeout>
+ <defaultTimeout>100000</defaultTimeout>
+ <maxTimeout>120000</maxTimeout>
+ </InterfaceTimeoutConfiguration>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateSubscriberStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateVoiceMailProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateWirelineAccountProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateWirelineCPNIPreference</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateWirelineCreditApplication</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateWirelineTroubleReport</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpgradeEquipment</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpqueryAffiliateOfferingEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateAddress</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateAffiliateCustomer</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateAffiliateOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateCreditCard</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateFemtocellCoverageArea</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateFemtocellE911Coverage</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateFemtocellEquipmentIdentifier</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateFemtocellWhitelist</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateFiberServiceCreditPolicy</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateFiberServiceCreditVerificationAnswers</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateFiberServiceFacility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateFiberServiceFacilityResponse</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateFiberServiceFacilityNotification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateFiberServiceProductDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateSatelliteServiceProducts</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateShippingPriority</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateWirelineCreditVerificationAnswers</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateWirelineCustomer</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateWirelineOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineFutureAvailability</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateWirelinePostalAddress</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelMobileContent</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireMobileContentDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateFiberServiceOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ExecuteUnifiedCreditCheck</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendPaymentProductApplicationResultNotification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ConfirmUnifiedCreditAccountDebtPayment</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireUnifiedCreditAccountDebtDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireUnifiedCreditVerificationQuestions</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SubmitUnifiedCreditApplication</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateUnifiedCreditApplication</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateUnifiedCreditVerificationAnswers</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireUnifiedCreditAdverseActionLetter</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireUnifiedCreditPolicyDecision</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>NotifyUnifiedCreditOrderSubmission</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AssignAvailableWorkOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendNetworkPathWorkOrderStatusNotification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ProcessNetworkPathWorkOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CreateCentralOfficeWorkOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateCentralOfficeWorkOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CreateFiberServiceRepairWorkOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CreateFiberServiceRepairWorkOrderAsnyc</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendRepairWorkOrderNotification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelFiberServiceRepairWorkOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>CancelFiberServiceRepairWorkOrderAsnyc</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireUnifiedCustomerLoginProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCustomerSubscriptionDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendCancelWorkOrderNotification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineAccountLevelCSR</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireWirelineServiceLevelCSR</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireUnifiedPaymentProfile</name>
+ <voltageEnabledIndicator>true</voltageEnabledIndicator>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateCloudServiceDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireNote</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateSubscriberOfferings</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>AddBundledOrderV48</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateBundledAccountServicesV48</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateBundledOrderV48</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateBundledOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireBundledAccountProfile</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireRecommendationDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireEnterpriseEndUserPermissions</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireNCIMigrationEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ExecuteNCIMigration</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateCommonOrder</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireBillCycleDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireCommonOrderListDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ValidateWirelineTroubleReportCompletion</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSubscriberContractDetails</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>ExecuteExternalCreditCheck</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireExternalApplicantKey</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateExternalCreditApplication</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SendExternalCreditResultNotification</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireAvailableRetailStoresByLocation</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateEnterpriseEndUserPermissions</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSubscriberServiceEligibility</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>UpdateFemtocellWhiteLists</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireNetworkProductCatalog</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireNetworkProductPriceQuote</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>SubmitSLACreditClaim</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSLACreditClaimStatus</name>
+ </AuthorizedInterface>
+ <AuthorizedInterface>
+ <name>InquireSLANetworkCreditClaimStatus</name>
+ </AuthorizedInterface>
+ <ServicePolicy>
+ <name>WHOLESALE-CUSTOMER-IDDELETE</name>
+ <value>walmartID</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>WHOLESALE-CUSTOMER-NAME</name>
+ <value>walmart</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>WHOLESALE-CUSTOMER-RESTRICTED-STATES</name>
+ <value>alaska</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>BID_ID</name>
+ <value>PlatinumSP</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>EBM_ORGID</name>
+ <value>o3hevdtz</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>REMOTE-CALL</name>
+ <value>true</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>CALL_NUMERITRACK</name>
+ <value>true</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>HEARTBEAT-INTERVAL</name>
+ <value>20</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>AP-CALL-RSN-FOR-WLNP-TLG</name>
+ <value>false</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>AS-PROCESS-DISCOUNTS</name>
+ <value>false</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>AS-RETRY-ON-TRANSIENT-ERROR</name>
+ <value>true</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>AS-STORE-MARKET</name>
+ <value>true</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>CATALOG_TYPE</name>
+ <value>WALMART Catalog</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <!-- Should be true only for ACME -->
+ <name>CHECK-FOR-MARKETLOOKUP-SOFTERROR</name>
+ <value>true</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>EQUIPMENT-UPGRADE-MAX-RETRY-INTERVAL</name>
+ <value>0</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>EQUIPMENT-UPGRADE-TRACKING-REQUIRED</name>
+ <value>false</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>IAL-AV-REQUIRED</name>
+ <value>false</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>IAP-ALLOWED-MASK-VALUES</name>
+ <value>CR:TD:SL:SN:SC:DC:UD:VU:VU+PT:VU+PR:VU+PT+PR:DU:DU+PR:UE</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>IAP-AV-REQUIRED</name>
+ <value>false</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>INFO-RESTRICT-LEVEL</name>
+ <value>Unrestricted</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>ISP-ALLOWED-MASK-VALUES</name>
+ <value>DI:DC:UD:VU:VU+PT:VU+PR:VU+PT+PR:DU:DU+PR:UE</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>IUCSP-MAX-ALLOWED-CTNS</name>
+ <value>10</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>IUCSP-NEW-KIT-WARRANTY-DAYS</name>
+ <value>366</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>IUCSP-REFURBISHED-KIT-WARRANTY-DAYS</name>
+ <value>90</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>IUCSP-SEED-KIT-WARRANTY-DAYS</name>
+ <value>366</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>IUUD-ALLOWED-MASK-VALUES</name>
+ <value>VU:VU+HO:VU+RO:VU+TO:VU+AL:VU+PT:VU+PT+HO:VU+PT+RO:VU+PT+TO:VU+PT+AL:VU+PR:VU+PR+HO:VU+PR+RO:VU+PR+TO:VU+PR+AL:VU+PT+PR:VU+PT+PR+HO:VU+PT+PR+RO:VU+PT+PR+TO:VU+PT+PR+AL:DU:DU+PR</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>IWPE-LSR11-ACCESS-DENIED</name>
+ <value>false</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>TN-REQUEST-CATEGORY</name>
+ <value>MCSICVOIP</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>MARKET-STATUS-LOOKUP</name>
+ <value>false</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>MEMO-NOTE-USER</name>
+ <value>WEB</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>NBI-ACCESS-DECLINED</name>
+ <value>false</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>PREAUTHORIZED-CREDIT-CHECK</name>
+ <value>true</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <!-- Should always be true for IST and almost always false for prod -->
+ <name>RESTRICTED-TO-TEST-CALLS</name>
+ <value>true</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>RESELLER-TEST-DEALER-CODE</name>
+ <value>IJX57</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>UPGRADE-EQUIPMENT-NEW-SALES-CHANNEL</name>
+ <value>U2</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>UPGRADE-EQUIPMENT-UPGRADE-SECURITY-CODE</name>
+ <value>III</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>USE-GENERIC-ASYNC-RESPONSE</name>
+ <value>true</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>USOC-INFO-DATA-SOURCE</name>
+ <value>CURRENT</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>VFSF-OAT-REQUIRED-MSG-LOOKUP</name>
+ <value>false</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>VFSF-CLIENT-REQ-TYPE</name>
+ <value>Negotiation</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>VFSF-CLIENT-ID</name>
+ <value>BBNMS</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>SMS-DESTINATION-PORT</name>
+ <value>-1</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>CTVCODE-SERVICE-MAINTENANCE</name>
+ <value>true</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>XI-APPLICATION-CONTEXT</name>
+ <value>OPSS</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>IN-MAX-BILLING-NOTE-QUANTITY</name>
+ <value>300</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>ITTH-TL-MAX-RECORDS-TO-FETCH</name>
+ <value>50</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>ITTH-ITH-MAX-RECORDS-TO-FETCH</name>
+ <value>30</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>IEEUP-SYSTEM-ID</name>
+ <value>premier</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>SUBSCRIPTION_CLASS</name>
+ <value>S</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>MOBILE_PAYMENTS_PARTNER_ID</name>
+ <value>S</value>
+ </ServicePolicy>
+
+ <ServicePolicy>
+ <name>IUCPBYSL-GRID-CLIENT</name>
+ <value>true</value>
+ </ServicePolicy>
+ <ServicePolicy>
+ <name>APPLICATION_ID</name>
+ <value>ONSTAR</value>
+ </ServicePolicy>
+ <ServiceProviderCredentials>
+ <system>AES</system>
+ <userName>NRETLTEL</userName>
+ <userPassword>NRETLTEL</userPassword>
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>BOSS</system>
+ <userName>testcsi</userName>
+ <userPassword/>
+ <CredentialPolicy>
+ <name>RACFID</name>
+ <value>pb1975</value>
+ </CredentialPolicy>
+ <CredentialPolicy>
+ <name>RACFPASSWORD</name>
+ <value>Light@1</value>
+ </CredentialPolicy>
+ <!--CredentialPolicy>
+ <name>BOSSTYPISTID</name>
+ <value>1K34</value>
+ </CredentialPolicy-->
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>BSTECSC</system>
+ <userName>CSI</userName>
+ <userPassword>a2p2!!b1</userPassword>
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>CAM</system>
+ <userName>CSIQC</userName>
+ <userPassword>CSIQC</userPassword>
+ <CredentialPolicy>
+ <name>AccountType</name>
+ <value>S</value>
+ </CredentialPolicy>
+ <CredentialPolicy>
+ <name>SubAccountType</name>
+ <value>T</value>
+ </CredentialPolicy>
+ <CredentialPolicy>
+ <name>WaiveActivationFee</name>
+ <value>true</value>
+ </CredentialPolicy>
+ <CredentialPolicy>
+ <name>WaiveUpgradeFee</name>
+ <value>true</value>
+ </CredentialPolicy>
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>CBS</system>
+ <userName>ZCINGP1</userName>
+ <userPassword/>
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>CPSOS</system>
+ <userName>c48794</userName>
+ <userPassword>7941!c48</userPassword>
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>DLC</system>
+ <userName>CSIQC</userName>
+ <userPassword/>
+ <CredentialPolicy>
+ <name>DLC_APP_ID</name>
+ <value>ASURION</value>
+ </CredentialPolicy>
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>GCS</system>
+ <userName>CSIQC</userName>
+ <userPassword/>
+ <CredentialPolicy>
+ <name>GCS_MERCHANT_ID</name>
+ <value>001342</value>
+ </CredentialPolicy>
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>InterconnectRC</system>
+ <userName>csitest</userName>
+ <userPassword/>
+ <CredentialPolicy>
+ <name>interconnectUSERID</name>
+ <value>SBC001T</value>
+ </CredentialPolicy>
+ <CredentialPolicy>
+ <name>interconnectPASSWORD</name>
+ <value>GC@\u0011W4\#""6/\u001172OK</value>
+ </CredentialPolicy>
+ <CredentialPolicy>
+ <name>interconnectLightSpeedUSERID</name>
+ <value>SBC002T</value>
+ </CredentialPolicy>
+ <CredentialPolicy>
+ <name>interconnectLightSpeedPASSWORD</name>
+ <value>GAN\u0016T4\#""6/\u001072OK</value>
+ </CredentialPolicy>
+ <CredentialPolicy>
+ <name>interconnectConsumerUSERID</name>
+ <value>SBC003T</value>
+ </CredentialPolicy>
+ <CredentialPolicy>
+ <name>interconnectConsumerPASSWORD</name>
+ <value>GCC\u0017P4\#""6/\u001372OK</value>
+ </CredentialPolicy>
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>LNPSOA</system>
+ <userName/>
+ <userPassword/>
+ <CredentialPolicy>
+ <name>LNPSOA_APP_ID</name>
+ <value>QC</value>
+ </CredentialPolicy>
+ <!--CredentialPolicy>
+ <name>LNPSOA_USER_ID</name>
+ <value>RMBISQC</value>
+ </CredentialPolicy-->
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>MRE</system>
+ <userName>OPUS</userName>
+ <userPassword>OPUS</userPassword>
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>NSM</system>
+ <userName>ACME</userName>
+ <userPassword/>
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>OrderTrack</system>
+ <userName>csitest</userName>
+ <userPassword/>
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>PDC</system>
+ <userName>RS</userName>
+ <userPassword/>
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>QPAY</system>
+ <userName>CSI_FDC</userName>
+ <userPassword>CSI_FDC</userPassword>
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>SWOT-LITE</system>
+ <userName>cingultest</userName>
+ <userPassword>j9WWuopev9</userPassword>
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>TLGAPI</system>
+ <userName>rimprov1</userName>
+ <userPassword>unix11</userPassword>
+ <CredentialPolicy>
+ <name>APP_ID</name>
+ <value>TLGAPI</value>
+ </CredentialPolicy>
+ <CredentialPolicy>
+ <name>CALLER_IND</name>
+ <value>FR</value>
+ </CredentialPolicy>
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>YODA</system>
+ <userName>WTS</userName>
+ <userPassword>CSITest</userPassword>
+ </ServiceProviderCredentials>
+ <ServiceProviderCredentials>
+ <system>EDGE</system>
+ <userName>WMS</userName>
+ <userPassword>WMS</userPassword>
+ </ServiceProviderCredentials>
+ <AsyncCallbackConfig>
+ <allowHttp>true</allowHttp>
+ <RetryPolicy>
+ <timeout>30000</timeout>
+ <numRetries>3</numRetries>
+ <delay>3000</delay>
+ </RetryPolicy>
+ <SSLConfig>
+ <enableHostNameVerification>false</enableHostNameVerification>
+ <enableTwoWaySSL>false</enableTwoWaySSL>
+ <ServerCertificateDetails>
+ <trustStoreLocation>/opt/app/sg_q7/tibco/jre/lib/security/cacerts</trustStoreLocation>
+ <trustStorePassword>changeit</trustStorePassword>
+ </ServerCertificateDetails>
+ <ClientCertificateDetails>
+ <keyStoreLocation>/opt/app/sg_q7/gateway_a/config/ActingAsClient.keystore</keyStoreLocation>
+ <keyStorePassword>client</keyStorePassword>
+ </ClientCertificateDetails>
+ </SSLConfig>
+ </AsyncCallbackConfig>
+ <performPrepaidDeviceCheck>true</performPrepaidDeviceCheck>
+ </Partner>
+</PartnerProfile>
--- /dev/null
+#Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
+# Flow test 319
+# The DEFAULT setup for this file is for deployment to soa cloud node which will use the "bundleconfig/etc/spm2.jks" location
+# For Testing Locally, you can set the system property, csiEnable=true, found within bundleconfig-local/etc/sysprops/sys-props.properties
+# and switch com.att.aft.keyStore and com.att.aft.trustStore values commented out below to "ajsc-shared-config/etc/spm2.jks"
+
+#replace proper values for the dummy values.
+com.att.aft.discovery.client.environment=TEST
+com.att.aft.discovery.client.latitude=35.318900
+com.att.aft.discovery.client.longitude=-80.762200
+com.att.aft.alias=fusionbus
+com.att.aft.keyStore=bundleconfig/etc/key.jks
+com.att.aft.keyStorePassword=password
+com.att.aft.trustStore=bundleconfig/etc/key.jks
+com.att.aft.trustStorePassword=password
+
--- /dev/null
+<!--
+ Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
+-->
+<configuration scan="true" scanPeriod="3 seconds" debug="true">
+ <property name="logDirectory" value="${AJSC_HOME}/log" />
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>ERROR</level>
+ </filter>
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n
+ </pattern>
+ </encoder>
+ </appender>
+
+ <appender name="INFO"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>DEBUG</level>
+ </filter>
+ <file>${logDirectory}/info_ajsc.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/info_ajsc.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+ </encoder>
+ </appender>
+ <appender name="ERROR"
+ class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>ERROR</level>
+ </filter>
+ <file>${logDirectory}/error_ajsc.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logDirectory}/error_ajsc.%i.log.zip
+ </fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>9</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy
+ class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n"</pattern> -->
+ <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="AJSC-AUDIT" class="ch.qos.logback.classic.net.SyslogAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>INFO</level>
+ </filter>
+ <syslogHost>localhost</syslogHost>
+ <facility>USER</facility>
+ <!-- Note the colon character below - it is important part of "TAG" message
+ format You need a colon to determine where the TAG field ends and the CONTENT
+ begins -->
+ <suffixPattern>AJSC_AUDIT: [%thread] [%logger] %msg</suffixPattern>
+ </appender>
+ <appender name="CONTROLLER-AUDIT" class="ch.qos.logback.classic.net.SyslogAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>INFO</level>
+ </filter>
+ <syslogHost>localhost</syslogHost>
+ <facility>USER</facility>
+ <!-- Note the colon character below - it is important part of "TAG" message
+ format You need a colon to determine where the TAG field ends and the CONTENT
+ begins -->
+ <suffixPattern>AJSC_AUDIT: [%thread] [%logger] mdc:[%mdc] %msg
+ </suffixPattern>
+ </appender>
+
+ <root level="off">
+ <appender-ref ref="ERROR" />
+ <appender-ref ref="INFO" />
+ <appender-ref ref="STDOUT" />
+ </root>
+</configuration>
-<!--
- ============LICENSE_START=======================================================
- MODEL LOADER SERVICE
- ================================================================================
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ============LICENSE_END=========================================================
- -->
-
<configuration scan="true" scanPeriod="3 seconds" debug="false">
<!--<jmxConfigurator /> -->
<!-- directory path for all other type logs -->
- <property name="logDir" value="logs" />
+ <property name="logDir" value="${AJSC_HOME}/logs" />
<!-- specify the component name <ECOMP-component-name>::= "MSO" | "DCAE"
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
+-->
+<project>
+ <target name="runLocal">
+ <java dir="${basedir}" fork="yes" newenvironment="true"
+ failonerror="true" classname="com.att.ajsc.runner.Runner">
+ <classpath
+ path="${classpath}:${basedir}/ajsc-shared-config/etc:${runAjscHome}/lib/ajsc-runner-${ajscRuntimeVersion}.jar" />
+
+ <!-- Windows Users may need to add a jvmarg arg to create a temp directory
+ properly. -->
+ <!-- <jvmarg value="-Djava.io.tmpdir=C:/yourTempDirectory"/> -->
+
+ <!-- Uncomment the following 2 jvmarg values to enable Remote Debugging.
+ -->
+ <!-- <jvmarg value="-Xdebug" /> -->
+ <!-- <jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5432"
+ /> -->
+
+ <jvmarg value="-XX:MaxPermSize=512m" />
+ <jvmarg value="-Xmx1024m" />
+
+ <!-- Main ajsc Variables below (Variables necessary for proper startup
+ of AJSC) -->
+ <env key="AJSC_HOME" value="${runAjscHome}" />
+ <sysproperty key="AJSC_HOME" value="${runAjscHome}" />
+ <!-- you may specify any external location for AJSC_CONF_HOME where etc
+ folder & all other configs can be found under it. If not specified, it will
+ default to AJSC_HOME -->
+ <sysproperty key="AJSC_CONF_HOME" value="${basedir}/bundleconfig-local" />
+ <sysproperty key="AJSC_SHARED_CONFIG" value="${basedir}/ajsc-shared-config" />
+
+ <!-- Location of logback.xml file used for logging configurations. Please,
+ note, when deploying a service to either CSI or NON-CSI environment, this
+ system property will be set in sys-props.properties file. We are setting
+ it here for running locally due to the ease of use of maven variable for
+ basedir. -->
+ <sysproperty key="logback.configurationFile"
+ value="${basedir}/ajsc-shared-config/etc/logback.xml" />
+
+ <!-- Setting system properties for the AJSC external libs and properties
+ folders below. When deploying to a node, these properties will be set within
+ the bundleconfig/etc/sysprops/sys-props.properties file. However, when running
+ locally, the ${basedir} substitution works more efficiently in this manner. -->
+ <sysproperty key="AJSC_EXTERNAL_LIB_FOLDERS" value="${basedir}/target/commonLibs" />
+ <sysproperty key="AJSC_EXTERNAL_PROPERTIES_FOLDERS"
+ value="${basedir}/ajsc-shared-config/etc" />
+
+ <!-- End of Main ajsc Variables below (Variables necessary for proper
+ startup of AJSC) -->
+
+ <!-- Uncomment the following line to add oauthentication to your Service -->
+ <!-- <sysproperty key="spring.profiles.active" value="oauth" /> -->
+
+ <!-- If using Cassandra as Database, Enter the ip/host and port below
+ based on your known configuration -->
+ <!-- <sysproperty key="cassandra.ip" value="hostname" /> -->
+ <!-- <sysproperty key="cassandra.port" value="9042" /> -->
+
+ <!-- The APP_SERVLET_URL_PATTERN variable is defaulted to "/services"
+ within the initial configuration of the AJSC. If you are changing the CamelServlet
+ Filter within the ajsc-override-web.xml, you should use that url-pattern
+ here. This is necessary to properly register your service with dme2. An empty
+ value, "", is used when NO value is wanted (url-pattern would be /* for CamelServlet
+ Filter) -->
+ <!-- As of 4.5.1, this property is no longer needed -->
+ <!-- <sysproperty key="APP_SERVLET_URL_PATTERN" value="/services" /> -->
+
+ <!-- GRM/DME2 System Properties below -->
+ <sysproperty key="AJSC_SERVICE_NAMESPACE" value="${module.ajsc.namespace.name}" />
+ <sysproperty key="AJSC_SERVICE_VERSION" value="${module.ajsc.namespace.version}" />
+ <sysproperty key="SOACLOUD_SERVICE_VERSION" value="${project.version}" />
+ <!-- End of GRM/DME2 System Property Variables -->
+
+ <!-- The following server.port variable was necessary for the proper registration
+ of the AJSC to dme2. This value may still need to be used if the Developer
+ is hardcoding their port (example: 8080). Then, the server.port value="8080".
+ The default functionality for the AJSC is to use EPHEMERAL ports. In this
+ case, you do NOT need to set the server.port value. The AJSC will find the
+ proper port value and register to dme2 correctly -->
+ <!-- <sysproperty key="server.port" value="${serverPort}" /> -->
+
+ <!-- Command Line Arguments to add to the java command. Here, you can
+ specify the port as well as the Context you want your service to run in.
+ Use context=/ to run in an unnamed Context (Root Context). The default configuration
+ of the AJSC is to run under the /ajsc Context. Setting the port here can
+ aid during the development phase of your service. However, you can leave
+ this argument out entirely, and the AJSC will default to using an Ephemeral
+ port. -->
+ <arg line="context=/ port=${serverPort} sslport=${sslport}" />
+ </java>
+ </target>
+ <target name="prep_home_directory_for_swm_pkgcreate">
+
+<!-- ********* GENERATE CADI KEY AND ENCRYPTED PASSWORD ***********
+
+ Uncomment the following if your cadi key get corrupted , It would
+ generate the Cadi key and password in the package phase and keep the key
+ in the 'src/main/config/ajscKey' and password in the bottom of cadi.properties(you
+ need to modify the 'aaf_pass' variable with this value . Plese modify the
+ template.cadi.properties as well before uploading to SOA node
+-->
+
+<!--
+ <java jar="${basedir}/target/userjars/cadi-core-1.2.5.jar" fork="true">
+ <arg value="keygen" /> <arg value="src/main/config/ajscKey" />
+ </java>
+
+ <echo>***Cadi Key file generated ****</echo>
+
+ <java jar="${basedir}/target/userjars/cadi-core-1.2.5.jar"
+ fork="true" append="true" output="${basedir}/src/main/config/cadi.properties">
+ <arg value="digest" /> <arg value="ajscRocks!" /> <arg value="src/main/config/ajscKey"
+ />
+ </java>
+
+-->
+
+
+
+ <!-- These tasks are copying contents from the installHomeDirectory into
+ the eventual $AJSC_HOME directory for running locally and soa cloud installation -->
+ <echo message="ENTERING 'prep_home_directory_for_swm_pkgcreate' ant tasks" />
+
+ <!-- Please, NOTE: The ajsc-archetype is setup for a default CSI Env deployment.
+ If you are deploying to a CSI Env, you should NOT have to change anything
+ within this build file. However, if you are NOT deploying to a CSI Env, you
+ should comment OUT the CSI related portion of this build.xml. -->
+
+ <!-- The following code snippet is copying the bundleconfig-csi directory
+ to the proper installation/bundleconfig directory used in CSI envs. If you
+ are NOT installing to a CSI node, you should comment out (or delete) the
+ following snippet, and uncomment the NON-CSI copy task to copy EVERYTHING
+ to the installation/bundleconfig directory. -->
+
+ <!-- CSI related bundleconfig copy task. If you are NOT deploying to a
+ CSI Env, please COMMENT OUT or delete the following copy task code snippet. -->
+ <!--<copy toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/bundleconfig"
+ failonerror="true"> <fileset dir="${basedir}/bundleconfig-csi" /> </copy> -->
+ <!-- End of CSI related bundleconfig copy task -->
+
+ <!-- NOTE: If you are NOT deploying to CSI environment, and you are NOT
+ using an AJSC_SHARED_CONFIG location on a node, you should go ahead and copy
+ EVERYTHING from bundleconfig and ajsc-shared-config (logback.xml) directory
+ to utilize proper logging from logback.xml. Simply, uncomment the following
+ code snippet below to copy EVERYTHING and comment out the CSI related build
+ script above. -->
+ <!-- NON-CSI related build copy task. Please, uncomment the following code
+ snippet to deploy the proper artifacts to a NON-CSI Env. -->
+ <copy
+ toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/bundleconfig"
+ failonerror="true">
+ <fileset dir="${basedir}/bundleconfig-local" includes="**/**" />
+ </copy>
+ <copy
+ toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/bundleconfig/etc"
+ failonerror="true">
+ <fileset dir="${basedir}/ajsc-shared-config/etc" includes="**/**" />
+ </copy>
+ <!-- End of NON-CSI related build copy task. -->
+
+ <!-- Copying any zips (deployment packages) to $AJSC_HOME/services for
+ auto-deployment -->
+ <copy
+ toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/services"
+ failonerror="false">
+ <fileset dir="${basedir}/services" includes="*.zip" />
+ </copy>
+
+ <!-- Copying runtimeEnvironment zip file to $AJSC_HOME/runtime and renaming
+ runtimeEnvironment.zip for proper auto-deployment of ajsc services.
+ <copy
+ tofile="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/runtime/runtimeEnvironment.zip">
+ <fileset dir="target" includes="*-runtimeEnvironment.zip" />
+ </copy>-->
+
+ <!-- Copying dependencies from the service project (not provided by AJSC
+ Container) to the $AJSC_HOME/extJars folder to be accessible on the classpath -->
+ <copy
+ toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/extJars"
+ failonerror="false">
+ <fileset dir="target/userjars" includes="*" />
+ </copy>
+
+ <!-- extApps directory MUST be created for ajsc-runner to run correctly,
+ even if empty. DO NOT REMOVE!!! -->
+ <!-- extApps directory created to deploy other war files on startup or
+ hot deploy War files after ajsc starts up. -->
+ <mkdir
+ dir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/extApps" />
+
+ <!-- Copying any extra wars to $AJSC_HOME/extApps to be deployed within
+ AJSC -->
+ <copy
+ toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/extApps"
+ failonerror="false">
+ <fileset dir="${basedir}/src/main/resources/extApps"
+ includes="*" />
+ </copy>
+
+ <!-- staticContent folder is for serving static content within an ajsc
+ service. Any static content to be served will be copyied to the ultimate
+ $AJSC_HOME/staticContent folder and can be served with the att-static-content
+ camel component. -->
+ <!-- Uncomment the following snippet to copy items from staticContent folder
+ to ultimate $AJSC_HOME/staticConent -->
+ <!-- <copy toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/staticContent"
+ failonerror="false"> <fileset dir="${basedir}/staticContent" includes="**/**"
+ /> </copy> -->
+
+ <!-- Copying extra jar files that have been labeled as dependencies in
+ service project to /extJars folder to be made available on the classpath
+ for your service -->
+ <copy
+ toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/extJars"
+ failonerror="false">
+ <fileset dir="target" includes="*.jar" />
+ </copy>
+
+ <!-- Copying deployment packages created within the project to the $AJSC_HOME/services
+ folder to be auto deployed. -->
+ <copy
+ toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/services">
+ <fileset dir="target" includes="*.zip" excludes="*-runtimeEnvironment.zip" />
+ </copy>
+
+ <echo message="EXITING 'prep_assembly_output_for_swm_plugin' ant tasks" />
+ </target>
+</project>
--- /dev/null
+#Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
+
+#If using AAF for Role based authentication/authorization, define your routes/services which will utilize AAF. The AJSC will
+#read this file and protect the routes given with the AAF role defined.
+
+#The following example would protect the JAXRS echo example service provided with the archetype.
+#/services/${namespace}/v1/jaxrs-services/jaxrsExample/echo/*=com.att.ajsc.myper|mymachine|manage
+
+#The following example would protect ALL AJSC services running within your project.
+#/**=com.att.ajsc.myperm|mymachine|manage
+
+#The following example would protect ALL REST services utilizing the Camel restlet routes.
+#/rest/**=com.att.ajsc.myperm|mymachine|manage
--- /dev/null
+#Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
+#This properties file is for defining any PostProcessorInterceptors that have been created for your AJSC service.
+
--- /dev/null
+#Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
+#This properties file is for defining any PreProcessorInterceptors that have been created for your AJSC service.
+
+/**=com.att.ajsc.csi.restmethodmap.RestMethodMapInterceptor
--- /dev/null
+#Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
+
+#This is where all your application intercept strategies must be configured. AJSC reads this property file and adds
+#the list of intercepts specified here to the camel context. This can be useful for accessing every exchange object transferred from/to
+#each endpoint in the request/response flow and can allow for more precise debugging and/or processing of the exchange.
+
+#e.g.
+#intercepts=org.openecomp.modelloader.JaxrsEchoService,packagename.class1name,packagename.class2name
--- /dev/null
+
+{
+ "helloWorld": [
+ {
+ "method": "get",
+ "url": "/rest/model-loader/v1/helloWorld",
+ "logicalName": "GetMethod(Logical)"
+ }
+ ]
+}
--- /dev/null
+#Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
+#This file is used for defining AJSC system properties for different configuration schemes and is necessary for the AJSC to run properly.
+#The sys-props.properties file is used for running locally. The template.sys-props.properties file will be used when deployed
+#to a SOA/CSI Cloud node.
+
+#AJSC System Properties. The following properties are required for ALL AJSC services. If you are adding System Properties for your
+#particular service, please add them AFTER all AJSC related System Properties.
+
+#For Cadi Authorization, use value="authentication-scheme-1
+CadiAuthN=authentication-scheme-1
+
+#For Basic Authorization, use value="authentication-scheme-1
+authN=authentication-scheme-2
+
+#Persistence used for AJSC meta-data storage. For most environments, "file" should be used.
+ajscPersistence=file
+
+#For Direct Invocation to be enabled (values=true/false)
+directInvocationEnable=false
+
+# If using hawtio for local development, these properties will allow for faster server startup and usage for local development
+
+hawtio.authenticationEnabled=false
+hawtio.config.pullOnStartup=false
+
+#Removes the extraneous restlet console output
+org.restlet.engine.loggerFacadeClass=org.restlet.ext.slf4j.Slf4jLoggerFacade
+
+#server.host property to be enabled for local DME2 related testing
+#server.host=<Your network IP address>
+
+#Enable/disable SSL (values=true/false). This property also determines which protocol to use (https if true, http otherwise), to register services into GRM through DME2.
+enableSSL=false
+
+
+#Enable/disable EJB Container
+ENABLE_EJB=false
+
+#Enable/disable OSGI
+isOSGIEnable=false
+
+#Generate/Skip api docs
+isApiDoc=false
+
+#CSI related variables for CSM framework
+csm.hostname=servername
+
+
+#SOA_CLOUD_ENV is used to register your service with dme2 and can be turned off for local development (values=true/false).
+SOA_CLOUD_ENV=false
+
+#CONTINUE_ON_LISTENER_EXCEPTION will exit the application if there is a DME2 exception at the time of registration.
+CONTINUE_ON_LISTENER_EXCEPTION=false
+
+#Jetty Container ThreadCount Configuration Variables
+AJSC_JETTY_ThreadCount_MIN=1
+AJSC_JETTY_ThreadCount_MAX=200
+AJSC_JETTY_IDLETIME_MAX=3000
+
+#Camel Context level default threadPool Profile configuration
+CAMEL_POOL_SIZE=10
+CAMEL_MAX_POOL_SIZE=20
+CAMEL_KEEP_ALIVE_TIME=60
+CAMEL_MAX_QUEUE_SIZE=1000
+
+#GRM/DME2 System Properties
+AFT_DME2_CONN_IDLE_TIMEOUTMS=5000
+AJSC_ENV=SOACLOUD
+
+SOACLOUD_NAMESPACE=com.att.ajsc
+SOACLOUD_ENV_CONTEXT=DEV
+SOACLOUD_PROTOCOL=http
+SOACLOUD_ROUTE_OFFER=DEFAULT
+
+AFT_LATITUDE=23.4
+AFT_LONGITUDE=33.6
+AFT_ENVIRONMENT=AFTUAT
+
+#Restlet Component Default Properties
+RESTLET_COMPONENT_CONTROLLER_DAEMON=true
+RESTLET_COMPONENT_CONTROLLER_SLEEP_TIME_MS=100
+RESTLET_COMPONENT_INBOUND_BUFFER_SIZE=8192
+RESTLET_COMPONENT_MIN_THREADS=1
+RESTLET_COMPONENT_MAX_THREADS=10
+RESTLET_COMPONENT_LOW_THREADS=8
+RESTLET_COMPONENT_MAX_QUEUED=0
+RESTLET_COMPONENT_MAX_CONNECTIONS_PER_HOST=-1
+RESTLET_COMPONENT_MAX_TOTAL_CONNECTIONS=-1
+RESTLET_COMPONENT_OUTBOUND_BUFFER_SIZE=8192
+RESTLET_COMPONENT_PERSISTING_CONNECTIONS=true
+RESTLET_COMPONENT_PIPELINING_CONNECTIONS=false
+RESTLET_COMPONENT_THREAD_MAX_IDLE_TIME_MS=60000
+RESTLET_COMPONENT_USE_FORWARDED_HEADER=false
+RESTLET_COMPONENT_REUSE_ADDRESS=true
+
+#Externalized jar and properties file location. In CSI environments, there are a few libs that have been externalized to aid
+#in CSTEM maintenance of the versions of these libs. The most important to the AJSC is the DME2 lib. Not only is this lib necessary
+#for proper registration of your AJSC service on a node, but it is also necessary for running locally as well. Another framework
+#used in CSI envs is the CSM framework. These 2 framework libs are shown as "provided" dependencies within the pom.xml. These
+#dependencies will be copied into the target/commonLibs folder with the normal "mvn clean package" goal of the AJSC. They will
+#then be added to the classpath via AJSC_EXTERNAL_LIB_FOLDERS system property. Any files (mainly property files) that need
+#to be on the classpath should be added to the AJSC_EXTERNAL_PROPERTIES_FOLDERS system property. The default scenario when
+#testing your AJSC service locally will utilize the target/commonLibs directory for DME2 and CSM related artifacts and 2
+#default csm properties files will be used for local testing with anything CSM knorelated.
+#NOTE: we are using maven-replacer-plugin to replace "(doubleUnderscore)basedir(doubleUnderscore)" with ${basedir} within the
+#target directory for running locally. Multiple folder locations can be separated by the pipe ("|") character.
+#Please, NOTE: for running locally, we are setting this system property in the antBuild/build.xml "runLocal" target and in the
+#"runAjsc" profile within the pom.xml. This is to most effectively use maven variables (${basedir}, most specifically. Therefore,
+#when running locally, the following 2 properties should be set within the profile(s) themselves.
+#Example: target/commonLibs|target/otherLibs
+#AJSC_EXTERNAL_LIB_FOLDERS=__basedir__/target/commonLibs
+#AJSC_EXTERNAL_PROPERTIES_FOLDERS=__basedir__/ajsc-shared-config/etc
+#End of AJSC System Properties
+
+#Service System Properties. Please, place any Service related System Properties below.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <artifactId>ajsc-archetype-parent</artifactId>
+ <groupId>com.att.ajsc</groupId>
+ <version>2.0.0</version>
+ </parent>
+
<groupId>org.openecomp.aai.model-loader</groupId>
<artifactId>model-loader</artifactId>
<version>1.1.0-SNAPSHOT</version>
- <packaging>war</packaging>
<properties>
<docker.location>${basedir}/target</docker.location>
- <!-- Ecomp Version -->
- <ecomp.version>1.0.0</ecomp.version>
+ <module.ajsc.namespace.name>model-loader</module.ajsc.namespace.name>
+ <module.ajsc.namespace.version>v1</module.ajsc.namespace.version>
+ <ajscRuntimeVersion>2.0.0</ajscRuntimeVersion>
+ <absoluteDistFilesRoot>/appl/${project.artifactId}</absoluteDistFilesRoot>
+ <distFilesRoot>/appl/${project.artifactId}/${project.version}</distFilesRoot>
+ <runAjscHome>${basedir}/target/swm/package/nix/dist_files${distFilesRoot}</runAjscHome>
+
+ <!-- Port Selection. A value of 0 will allow for dynamic port selection.
+ For local testing, you may choose to hardcode this value to something like
+ 8080 -->
+ <serverPort>0</serverPort>
+ <sslport>0</sslport>
+
+
+ <!-- For SOA Cloud Installation -->
+ <installOwnerUser>aaiadmin</installOwnerUser>
+ <installOwnerGroup>aaiadmin</installOwnerGroup>
+ <ownerManagementGroup>org.openecomp.aai.dev</ownerManagementGroup>
+
+ <testRouteOffer>workstation</testRouteOffer>
+ <testEnv>DEV</testEnv>
+
<dependency.scope>provided</dependency.scope>
<checkstyle.config.location>google_checks.xml</checkstyle.config.location>
<maven.compiler.source>1.8</maven.compiler.source>
- <maven.compiler.target>1.8</maven.compiler.target>
+ <maven.compiler.target>1.8</maven.compiler.target>
<sonar.language>java</sonar.language>
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.surefire.reportsPath>${project.build.directory}/surefire-reports</sonar.surefire.reportsPath>
<sonar.jacoco.reportPath>${project.build.directory}/coverage-reports/jacoco.exec</sonar.jacoco.reportPath>
<sonar.jacoco.reportMissing.force.zero>false</sonar.jacoco.reportMissing.force.zero>
<sonar.projectVersion>${project.version}</sonar.projectVersion>
- <nexusproxy>https://nexus.openecomp.org</nexusproxy>
+ <nexusproxy>https://nexus.onap.org</nexusproxy>
</properties>
<distributionManagement>
<dependency>
<groupId>org.openecomp.aai.logging-service</groupId>
<artifactId>common-logging</artifactId>
- <version>${ecomp.version}</version>
+ <version>1.0.0</version>
</dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-core</artifactId>
+ <version>1.1.7</version>
+ </dependency>
+
<dependency>
<groupId>org.openecomp.sdc</groupId>
<artifactId>sdc-distribution-client</artifactId>
- <version>${ecomp.version}</version>
+ <version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<repository>
<id>ecomp-releases</id>
<name>ECOMP Release Repository</name>
- <url>https://nexus.openecomp.org/content/repositories/releases/</url>
+ <url>${nexusproxy}/content/repositories/releases/</url>
</repository>
<repository>
<id>ecomp-snapshots</id>
<name>ECOMP Snapshot Repository</name>
- <url>https://nexus.openecomp.org/content/repositories/snapshots/</url>
+ <url>${nexusproxy}/content/repositories/snapshots/</url>
</repository>
<repository>
<id>ecomp-staging</id>
<name>ECOMP Staging Repository</name>
- <url>https://nexus.openecomp.org/content/repositories/staging/</url>
+ <url>${nexusproxy}/content/repositories/staging/</url>
</repository>
</repositories>
+ <profiles>
+ <profile>
+ <id>runAjsc</id>
+ <build>
+ <defaultGoal>initialize</defaultGoal>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>1.3.2</version>
+ <executions>
+ <execution>
+ <phase>initialize</phase>
+ <goals>
+ <goal>java</goal>
+ </goals>
+ <configuration>
+ <includeProjectDependencies>false</includeProjectDependencies>
+ <includePluginDependencies>true</includePluginDependencies>
+ <executable>java</executable>
+ <mainClass>com.att.ajsc.runner.Runner</mainClass>
+ <executableDependency>
+ <groupId>com.att.ajsc</groupId>
+ <artifactId>ajsc-runner</artifactId>
+ </executableDependency>
+ <additionalClasspathElements>
+ <additionalClasspathElement>${basedir}/ajsc-shared-config/etc</additionalClasspathElement>
+ </additionalClasspathElements>
+
+ <environmentVariables>
+ <AJSC_HOME>${runAjscHome}</AJSC_HOME>
+ </environmentVariables>
+
+ <!-- Main AJSC System Properties below (necessary for proper startup) -->
+ <systemProperties>
+ <systemProperty>
+ <key>AJSC_HOME</key>
+ <value>${runAjscHome}</value>
+ </systemProperty>
+ <systemProperty>
+ <key>CONFIG_HOME</key>
+ <value>${basedir}/appconfig-local/</value>
+ </systemProperty>
+ <systemProperty>
+ <key>AJSC_CONF_HOME</key>
+ <value>${basedir}/bundleconfig-local</value>
+ </systemProperty>
+ <systemProperty>
+ <key>logback.configurationFile</key>
+ <value>${basedir}/ajsc-shared-config/etc/logback.xml</value>
+ </systemProperty>
+ <systemProperty>
+ <key>AJSC_SHARED_CONFIG</key>
+ <value>${basedir}/ajsc-shared-config</value>
+ </systemProperty>
+
+ <sysproperty>
+ <key>AJSC_EXTERNAL_LIB_FOLDERS</key>
+ <value>${basedir}/target/commonLibs</value>
+ </sysproperty>
+ <sysproperty>
+ <key>AJSC_EXTERNAL_PROPERTIES_FOLDERS</key>
+ <value>${basedir}/ajsc-shared-config/etc</value>
+ </sysproperty>
+ <systemProperty>
+ <key>AJSC_SERVICE_NAMESPACE</key>
+ <value>${module.ajsc.namespace.name}</value>
+ </systemProperty>
+ <systemProperty>
+ <key>AJSC_SERVICE_VERSION</key>
+ <value>${module.ajsc.namespace.version}</value>
+ </systemProperty>
+ <systemProperty>
+ <key>SOACLOUD_SERVICE_VERSION</key>
+ <value>${project.version}</value>
+ </systemProperty>
+ <systemProperty>
+ <key>server.port</key>
+ <value>${serverPort}</value>
+ </systemProperty>
+ </systemProperties>
+
+ <!-- Command Line Arguments to add to the java command. Here, you
+ can specify the port as well as the Context you want your service to run
+ in. Use context=/ to run in an unnamed Context (Root Context). The default
+ configuration of the AJSC is to run under the / Context. Setting the port
+ here can aid during the development phase of your service. However, you can
+ leave this argument out entirely, and the AJSC will default to using an Ephemeral
+ port. -->
+ <arguments>
+ <argument>context=//</argument>
+ <argument>port=${serverPort}</argument>
+ <argument>sslport=${sslport}</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ </executions>
+ <configuration>
+ <executable>java</executable>
+ </configuration>
+ <dependencies>
+ <dependency>
+ <groupId>com.att.ajsc</groupId>
+ <artifactId>ajsc-runner</artifactId>
+ <version>${ajscRuntimeVersion}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
<build>
<plugins>
<include>**/*</include>
</includes>
</resource>
+ <resource>
+ <directory>${basedir}/src/main/bin/</directory>
+ </resource>
</resources>
</configuration>
</execution>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
- <version>2.5.1</version>
+ <version>2.8</version>
<executions>
<execution>
<id>copy-agent</id>
<!-- license plugin -->
<plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>license-maven-plugin</artifactId>
- <version>1.10</version>
- <configuration>
- <addJavaLicenseAfterPackage>false</addJavaLicenseAfterPackage>
- <excludes>
- <exclude>**.json</exclude>
- <exclude>**.properties</exclude>
- </excludes>
- <processStartTag>============LICENSE_START=======================================================</processStartTag>
- <processEndTag>============LICENSE_END=========================================================</processEndTag>
- <sectionDelimiter>================================================================================</sectionDelimiter>
- <licenseName>apache_v2</licenseName>
- <inceptionYear>2017</inceptionYear>
- <organizationName>AT&T Intellectual Property. All rights reserved.</organizationName>
- <projectName>MODEL LOADER SERVICE</projectName>
- <canUpdateCopyright>true</canUpdateCopyright>
- <canUpdateDescription>true</canUpdateDescription>
- <canUpdateLicense>true</canUpdateLicense>
- <emptyLineAfterHeader>true</emptyLineAfterHeader>
- <roots>
- <root>.</root>
- </roots>
- <excludes>
- <exclude>**/*.json</exclude>
- </excludes>
- <extraExtensions>
- <route>xml</route>
- <props>properties</props>
- <xsd>xml</xsd>
- <txt>java</txt>
- </extraExtensions>
- </configuration>
- <executions>
- <execution>
- <id>first</id>
- <goals>
- <goal>update-file-header</goal>
- </goals>
- <phase>process-sources</phase>
- </execution>
- </executions>
- </plugin>
+ <groupId>com.mycila</groupId>
+ <artifactId>license-maven-plugin</artifactId>
+ <version>3.0</version>
+ <configuration>
+ <header>License.txt</header>
+ <includes>
+ <include>src/main/java/**</include>
+ <include>src/test/java/**</include>
+ </includes>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>format</goal>
+ </goals>
+ <phase>process-sources</phase>
+ </execution>
+ </executions>
+ </plugin>
+
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================
+ * MODEL LOADER SERVICE
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+beans{\r
+ xmlns cxf: "http://camel.apache.org/schema/cxf"\r
+ xmlns jaxrs: "http://cxf.apache.org/jaxrs"\r
+ xmlns util: "http://www.springframework.org/schema/util"\r
+ \r
+ modelLoader(org.openecomp.modelloader.service.ModelLoaderService)\r
+ \r
+ util.list(id: 'modelLoaderServices') {\r
+ ref(bean:'modelLoader')\r
+ }\r
+}\r
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================
+ * MODEL LOADER SERVICE
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+Place any docs here that you want to access within the ajsc upon deployment of your service.\r
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================
+ * MODEL LOADER SERVICE
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+3rd party JAR's needed by your jars (if any) for a ajsc deployment package go here...\r
-###
+###\r
# ============LICENSE_START=======================================================
# MODEL LOADER SERVICE
# ================================================================================
# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
+# Licensed under the Apache License, Version 2.0 (the "License");\r
+# you may not use this file except in compliance with the License.\r
+# You may obtain a copy of the License at\r
+# \r
+# http://www.apache.org/licenses/LICENSE-2.0\r
+# \r
+# Unless required by applicable law or agreed to in writing, software\r
+# distributed under the License is distributed on an "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+# See the License for the specific language governing permissions and\r
# limitations under the License.
-# ============LICENSE_END=========================================================
-###
-
-BIN_DIR=`dirname $0`
-
-echo "Checking environment for configuration options"
-$BIN_DIR/update_config.sh
-
-echo "Starting up model loader..."
-$BIN_DIR/jetty.sh run > /dev/null 2>&1
+# ============LICENSE_END=========================================================\r
+###\r
+\r
+EXAMPLE.PROPERTY=EXAMLE_VALUE\r
-<!--
+<!--\r
============LICENSE_START=======================================================
MODEL LOADER SERVICE
================================================================================
Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+ \r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+ \r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
limitations under the License.
- ============LICENSE_END=========================================================
- -->
-
-<model xmlns="http://org.openecomp.aai.inventory/v8">
- <model-id>model-id</model-id>
- <model-type>widget</model-type>
- <model-name>generic-vnf</model-name>
- <model-version>v1.0</model-version>
- <model-name-version-id>model-vid</model-name-version-id>
-</model>
+ ============LICENSE_END=========================================================\r
+ -->\r
+\r
+<route xmlns="http://camel.apache.org/schema/spring" trace="true">\r
+ <from uri="att-dme2-servlet:///__module_ajsc_namespace_name__/__module_ajsc_namespace_version__/model-service?matchOnUriPrefix=true" />\r
+ <to uri="cxfbean:modelLoaderServices" />\r
+</route>\r
--- /dev/null
+<!--\r
+ ============LICENSE_START=======================================================
+ MODEL LOADER SERVICE
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+ \r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+ \r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.
+ ============LICENSE_END=========================================================\r
+ -->\r
+\r
+<assembly\r
+ xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">\r
+ <id>${version}</id>\r
+ <includeBaseDirectory>false</includeBaseDirectory>\r
+ <formats>\r
+ <format>zip</format>\r
+ </formats>\r
+ <fileSets>\r
+ <fileSet>\r
+ <directory>${project.basedir}/target/versioned-ajsc/routes/</directory>\r
+ <outputDirectory>${module.ajsc.namespace.name}/${module.ajsc.namespace.version}/routes/</outputDirectory>\r
+ <includes>\r
+ <include>*.route</include>\r
+ </includes>\r
+\r
+ </fileSet>\r
+\r
+ <fileSet>\r
+ <directory>${project.basedir}/target/versioned-ajsc/docs/</directory>\r
+ <outputDirectory>${module.ajsc.namespace.name}/${module.ajsc.namespace.version}/docs/</outputDirectory>\r
+ <includes>\r
+ <include>*.*</include>\r
+ <!-- <include>*.vm</include> -->\r
+ </includes>\r
+\r
+ </fileSet>\r
+\r
+ <fileSet>\r
+ <directory>${project.basedir}/target/versioned-ajsc/lib/</directory>\r
+ <outputDirectory>${module.ajsc.namespace.name}/${module.ajsc.namespace.version}/lib/</outputDirectory>\r
+ <includes>\r
+ <include>*.jar</include>\r
+ </includes>\r
+\r
+ </fileSet>\r
+ <fileSet>\r
+ <directory>${project.basedir}/target/versioned-ajsc/extJars/</directory>\r
+ <outputDirectory>${module.ajsc.namespace.name}/${module.ajsc.namespace.version}/extJars/</outputDirectory>\r
+ <includes>\r
+ <include>*.jar</include>\r
+ </includes>\r
+ </fileSet>\r
+ \r
+ <!-- also try to grab outputs from the "jar" plugin's package phase -->\r
+ <fileSet>\r
+ <directory>${project.basedir}/target/</directory>\r
+ <outputDirectory>${module.ajsc.namespace.name}/${module.ajsc.namespace.version}/lib/</outputDirectory>\r
+ <includes>\r
+ <include>*.jar</include>\r
+ </includes>\r
+ </fileSet>\r
+\r
+ <fileSet>\r
+ <directory>${project.basedir}/target/versioned-ajsc/conf/</directory>\r
+ <outputDirectory>${module.ajsc.namespace.name}/${module.ajsc.namespace.version}/conf/</outputDirectory>\r
+ <includes>\r
+ <include>*.*</include>\r
+ </includes>\r
+\r
+ </fileSet>\r
+ </fileSets>\r
+\r
+</assembly>\r
+\r
-<!--
+<!--\r
============LICENSE_START=======================================================
MODEL LOADER SERVICE
================================================================================
Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+ \r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+ \r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
limitations under the License.
- ============LICENSE_END=========================================================
- -->
-
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:mvc="http://www.springframework.org/schema/mvc"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
- http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
-
- <bean id="modelLoader" class="org.openecomp.modelloader.service.ModelLoaderService" init-method="start"/>
-
-
-</beans>
+ ============LICENSE_END=========================================================\r
+ -->\r
+\r
+<assembly\r
+ xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">\r
+ <id>${version}_properties</id>\r
+ <includeBaseDirectory>false</includeBaseDirectory>\r
+ <formats>\r
+ <format>zip</format>\r
+ </formats>\r
+ <fileSets>\r
+ <fileSet>\r
+ <directory>${project.basedir}/target/versioned-ajsc/props</directory>\r
+ <outputDirectory>${module.ajsc.namespace.name}/${module.ajsc.namespace.version}/props/</outputDirectory>\r
+ <includes>\r
+ <include>*.props</include>\r
+ </includes>\r
+\r
+ </fileSet>\r
+\r
+ </fileSets>\r
+\r
+</assembly>\r
+\r
--- /dev/null
+<!--\r
+ ============LICENSE_START=======================================================
+ MODEL LOADER SERVICE
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+ \r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+ \r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.
+ ============LICENSE_END=========================================================\r
+ -->\r
+\r
+<assembly\r
+ xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">\r
+ <id>runtimeEnvironment</id>\r
+ <includeBaseDirectory>false</includeBaseDirectory>\r
+ <formats>\r
+ <format>zip</format>\r
+ </formats>\r
+ <fileSets>\r
+ <fileSet>\r
+ <directory>${project.basedir}/target/versioned-runtime/context/</directory>\r
+ <outputDirectory>runtime/context/</outputDirectory>\r
+ <includes>\r
+ <include>*.context</include>\r
+ </includes>\r
+ </fileSet>\r
+ <fileSet>\r
+ <directory>${project.basedir}/target/versioned-runtime/serviceProperties/</directory>\r
+ <outputDirectory>runtime/serviceProperties/</outputDirectory>\r
+ <includes>\r
+ <include>*.props</include>\r
+ </includes>\r
+ </fileSet><fileSet>\r
+ <directory>${project.basedir}/target/versioned-runtime/shiroRole</directory>\r
+ <outputDirectory>runtime/shiroRole/</outputDirectory>\r
+ <includes>\r
+ <include>*.json</include>\r
+ </includes>\r
+ </fileSet><fileSet>\r
+ <directory>${project.basedir}/target/versioned-runtime/shiroUser</directory>\r
+ <outputDirectory>runtime/shiroUser/</outputDirectory>\r
+ <includes>\r
+ <include>*.json</include>\r
+ </includes>\r
+ </fileSet><fileSet>\r
+ <directory>${project.basedir}/target/versioned-runtime/shiroUserRole</directory>\r
+ <outputDirectory>runtime/shiroUserRole</outputDirectory>\r
+ <includes>\r
+ <include>*.json</include>\r
+ </includes>\r
+ </fileSet>\r
+ </fileSets>\r
+</assembly>\r
--- /dev/null
+#!/bin/sh
+
+BASEDIR="/opt/app/model-loader/"
+AJSC_HOME="$BASEDIR"
+
+if [ -z "$CONFIG_HOME" ]; then
+ echo "CONFIG_HOME must be set in order to start up process"
+ exit 1
+fi
+
+CLASSPATH="$AJSC_HOME/lib/*"
+CLASSPATH="$CLASSPATH:$AJSC_HOME/extJars/"
+CLASSPATH="$CLASSPATH:$AJSC_HOME/etc/"
+PROPS="-DAJSC_HOME=$AJSC_HOME"
+PROPS="$PROPS -DAJSC_CONF_HOME=$BASEDIR/bundleconfig/"
+PROPS="$PROPS -Dlogback.configurationFile=$BASEDIR/bundleconfig/etc/logback.xml"
+PROPS="$PROPS -DAJSC_SHARED_CONFIG=$AJSC_CONF_HOME"
+PROPS="$PROPS -DAJSC_SERVICE_NAMESPACE=model-loader"
+PROPS="$PROPS -DAJSC_SERVICE_VERSION=v1"
+PROPS="$PROPS -Dserver.port=8080"
+PROPS="$PROPS -DCONFIG_HOME=$CONFIG_HOME"
+JVM_MAX_HEAP=${MAX_HEAP:-1024}
+
+echo $CLASSPATH
+
+exec java -Xmx${JVM_MAX_HEAP}m $PROPS -classpath $CLASSPATH com.att.ajsc.runner.Runner context=// sslport=8081
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+ ============LICENSE_START=======================================================
+ MODEL LOADER SERVICE
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+ \r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+ \r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.
+ ============LICENSE_END=========================================================\r
+ -->\r
+\r
+<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">\r
+<Configure id="ajsc-server" class="org.eclipse.jetty.server.Server">\r
+ <!-- DO NOT REMOVE!!!! This is setting up the AJSC Context -->\r
+ <New id="ajscContext" class="org.eclipse.jetty.webapp.WebAppContext">\r
+ <Set name="contextPath"><SystemProperty name="AJSC_CONTEXT_PATH" /></Set>\r
+ <Set name="extractWAR">true</Set>\r
+ <Set name="tempDirectory"><SystemProperty name="AJSC_TEMP_DIR" /></Set>\r
+ <Set name="war"><SystemProperty name="AJSC_WAR_PATH" /></Set>\r
+ <Set name="descriptor"><SystemProperty name="AJSC_HOME" />/etc/runner-web.xml</Set>\r
+ <Set name="overrideDescriptor"><SystemProperty name="AJSC_HOME" />/etc/ajsc-override-web.xml</Set>\r
+ <Set name="throwUnavailableOnStartupException">true</Set>\r
+ <Set name="servletHandler">\r
+ <New class="org.eclipse.jetty.servlet.ServletHandler">\r
+ <Set name="startWithUnavailable">false</Set>\r
+ </New>\r
+ </Set>\r
+ <Set name="extraClasspath"><SystemProperty name="AJSC_HOME" />/extJars/httpclient-4.5.jar,<SystemProperty name="AJSC_HOME" />/extJars/httpcore-4.4.1.jar,<SystemProperty name="AJSC_HOME" />/extJars/json-20131018.jar</Set>\r
+ </New>\r
+ \r
+ <Set name="handler">\r
+ <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection">\r
+ <Set name="Handlers">\r
+ <Array type="org.eclipse.jetty.webapp.WebAppContext">\r
+ <Item>\r
+ <Ref refid="ajscContext" />\r
+ </Item>\r
+ </Array>\r
+ </Set>\r
+ </New>\r
+ </Set>\r
+ \r
+ <Call name="addBean">\r
+ <Arg>\r
+ <New id="DeploymentManager" class="org.eclipse.jetty.deploy.DeploymentManager">\r
+ <Set name="contexts">\r
+ <Ref refid="Contexts" />\r
+ </Set>\r
+ <Call id="extAppHotDeployProvider" name="addAppProvider">\r
+ <Arg>\r
+ <New class="org.eclipse.jetty.deploy.providers.WebAppProvider">\r
+ <Set name="monitoredDirName"><SystemProperty name="AJSC_HOME" />/extApps</Set>\r
+ <Set name="scanInterval">10</Set>\r
+ <Set name="extractWars">true</Set>\r
+ </New>\r
+ </Arg>\r
+ </Call>\r
+ </New>\r
+ </Arg>\r
+ </Call>\r
+ \r
+ <Call name="addConnector">\r
+ <Arg>\r
+ <New class="org.eclipse.jetty.server.ServerConnector">\r
+ <Arg name="server">\r
+ <Ref refid="ajsc-server" />\r
+ </Arg>\r
+ <Set name="port"><SystemProperty name="AJSC_HTTP_PORT" default="80" /></Set>\r
+ </New>\r
+ </Arg>\r
+ </Call>\r
+ \r
+ <Get name="ThreadPool">\r
+ <Set name="minThreads"><SystemProperty name="AJSC_JETTY_ThreadCount_MIN" /></Set>\r
+ <Set name="maxThreads"><SystemProperty name="AJSC_JETTY_ThreadCount_MAX" /></Set>\r
+ <Set name="idleTimeout"><SystemProperty name="AJSC_JETTY_IDLETIME_MAX" /></Set>\r
+ <Set name="detailedDump">false</Set>\r
+ </Get>\r
+ \r
+</Configure>\r
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>\r
+<!--\r
+ ============LICENSE_START=======================================================
+ MODEL LOADER SERVICE
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+ \r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+ \r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.
+ ============LICENSE_END=========================================================\r
+ -->\r
+\r
+<!-- \r
+ Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.\r
+-->\r
+<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"\r
+ metadata-complete="false" version="3.0">\r
+\r
+ <filter-mapping>\r
+ <filter-name>InterceptorFilter</filter-name>\r
+ <url-pattern>/services/*</url-pattern>\r
+ </filter-mapping> \r
+ <filter-mapping>\r
+ <filter-name>InterceptorFilter</filter-name>\r
+ <url-pattern>/rest/*</url-pattern>\r
+ </filter-mapping> \r
+\r
+ <filter-mapping>\r
+ <filter-name>springSecurityFilterChain</filter-name>\r
+ <url-pattern>/*</url-pattern>\r
+ </filter-mapping>\r
+ \r
+ <servlet-mapping>\r
+ <servlet-name>ManagementServlet</servlet-name>\r
+ <url-pattern>/mgmt</url-pattern>\r
+ </servlet-mapping>\r
+ \r
+ <servlet-mapping>\r
+ <servlet-name>RestletServlet</servlet-name>\r
+ <url-pattern>/rest/*</url-pattern>\r
+ </servlet-mapping>\r
+\r
+ <servlet-mapping>\r
+ <servlet-name>CamelServlet</servlet-name>\r
+ <url-pattern>/services/*</url-pattern>\r
+ </servlet-mapping>\r
+\r
+ <servlet-mapping>\r
+ <servlet-name>jsp</servlet-name>\r
+ <url-pattern>*.jsp</url-pattern>\r
+ <url-pattern>*.jspf</url-pattern>\r
+ <url-pattern>*.jspx</url-pattern>\r
+ <url-pattern>*.xsp</url-pattern>\r
+ <url-pattern>*.JSP</url-pattern>\r
+ <url-pattern>*.JSPF</url-pattern>\r
+ <url-pattern>*.JSPX</url-pattern>\r
+ <url-pattern>*.XSP</url-pattern>\r
+ </servlet-mapping>\r
+ <servlet-mapping>\r
+ <servlet-name>default</servlet-name>\r
+ <url-pattern>/*</url-pattern>\r
+ </servlet-mapping>\r
+</web-app>\r
--- /dev/null
+###\r
+# ============LICENSE_START=======================================================
+# MODEL LOADER SERVICE
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");\r
+# you may not use this file except in compliance with the License.\r
+# You may obtain a copy of the License at\r
+# \r
+# http://www.apache.org/licenses/LICENSE-2.0\r
+# \r
+# Unless required by applicable law or agreed to in writing, software\r
+# distributed under the License is distributed on an "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+# See the License for the specific language governing permissions and\r
+# limitations under the License.
+# ============LICENSE_END=========================================================\r
+###\r
+\r
+#This properties file is used for defining AAF properties related to the CADI framework. This file is used for running AAF framework\r
+\r
+#In order to test functionality of cadi-ajsc-plugin locally cross domain cookie. Cadi "should" find your hostname for you. \r
+#However, we have seen some situations where this fails. A Local testing\r
+#modification can include modifying your hosts file so that you can use "mywebserver.att.com" for your localhost in order\r
+#to test/verify GLO functionality locally. If you are on a Windows machine, you will already have a machine name associated with \r
+#it that will utilize an AT&T domain such as "sbc.com". You may need to add your domain to this as a comma separated list depending\r
+#upon your particular machine domain. This property is commented out as cadi SHOULD find your machine name. With version 1.2.1 of cadi, \r
+#it appears to resolve Mac machine names as well, now. But, this can be somewhat inconsistent depending on your specific working envrironment.\r
+hostname=mywebserver.att.com\r
+\r
+#Setting csp_domain to PROD will allow for testing using your attuid and password through GLO.\r
+csp_domain=PROD\r
+csp_devl_localhost=true\r
+\r
+basic_realm=csp.att.com\r
+#basic_realm=aaf.att.com\r
+basic_warn=TRUE\r
+\r
+cadi_loglevel=WARN\r
+cadi_keyfile=target/swm/package/nix/dist_files/appl/model-loader/etc/keyfile\r
+\r
+# Configure AAF\r
+#These are dummy values add appropriate values required\r
+aaf_url=url\r
+\r
+#AJSC - MECHID\r
+#These are dummy values add appropriate values required\r
+aaf_id=dummyid@ajsc.att.com\r
+aaf_password=enc:277edqJCjT0RlUI3BtbDQa-3Ha-CQGd\r
+aaf_timeout=5000\r
+aaf_clean_interval=30000\r
+aaf_user_expires=5000\r
+aaf_high_count=1000\r
+\r
+\r
-###
+###\r
# ============LICENSE_START=======================================================
# MODEL LOADER SERVICE
# ================================================================================
# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
+# Licensed under the Apache License, Version 2.0 (the "License");\r
+# you may not use this file except in compliance with the License.\r
+# You may obtain a copy of the License at\r
+# \r
+# http://www.apache.org/licenses/LICENSE-2.0\r
+# \r
+# Unless required by applicable law or agreed to in writing, software\r
+# distributed under the License is distributed on an "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+# See the License for the specific language governing permissions and\r
# limitations under the License.
-# ============LICENSE_END=========================================================
-###
-
-# Model Loader Distribution Client Configuration
-ml.distribution.ACTIVE_SERVER_TLS_AUTH=false
-ml.distribution.ASDC_ADDRESS=
-ml.distribution.CONSUMER_GROUP=aai-ml-group
-ml.distribution.CONSUMER_ID=aai-ml
-ml.distribution.ENVIRONMENT_NAME=
-ml.distribution.KEYSTORE_PASSWORD=
-ml.distribution.KEYSTORE_FILE=asdc-client.jks
-ml.distribution.PASSWORD=
-ml.distribution.POLLING_INTERVAL=30
-ml.distribution.POLLING_TIMEOUT=20
-ml.distribution.USER=ci
-ml.distribution.ARTIFACT_TYPES=MODEL_INVENTORY_PROFILE,MODEL_QUERY_SPEC,VNF_CATALOG
-
-# Model Loader AAI REST Client Configuration
-ml.aai.BASE_URL=
-ml.aai.MODEL_URL=/aai/v8/service-design-and-creation/models/model/
-ml.aai.NAMED_QUERY_URL=/aai/v8/service-design-and-creation/named-queries/named-query/
-ml.aai.VNF_IMAGE_URL=/aai/v8/service-design-and-creation/vnf-images
-ml.aai.KEYSTORE_FILE=aai-os-cert.p12
-ml.aai.KEYSTORE_PASSWORD=
-ml.aai.AUTH_USER=ModelLoader
-ml.aai.AUTH_PASSWORD=
+# ============LICENSE_END=========================================================\r
+###\r
+\r
+# Bridge JUL->slf4j Logging Configuration File\r
+#\r
+# This file bridges the JUL logging infrastructure into\r
+# SLF4J so JUL logs go to logback implementation provided\r
+# in this project. SLF4J also captures log4j and has \r
+# other framework options as well providing a common\r
+# logging infrastructure for capturing all logs from different\r
+# libraries using different frameworks in one place.\r
+\r
+# Global properties\r
+handlers=org.slf4j.bridge.SLF4JBridgeHandler\r
+.level= ALL\r
--- /dev/null
+ZuIwp0TkyVPDeX1Up-8JtkMWvjsCpoiu1_VKeWrtrvxunvAke8_tiFyHPPyb2nkhepFYj6tXzpfS
+rGz5XF_TH9NbsKaP8u0HV5clz2WriYQRvHS85vjY7hXxkpFuLb7zkLAPqTyIDpj7FiW61NzsRUAq
+TM8jH16jr7mBNnb56w24mNGOwznMPcIZKcjgZU1ekaPDFpWyhQElU7Y0q_94P_Gkk45r66Hj22sU
+OiOaaftmudZlswLw8-8Zaakqf2yW9HjMVfuYCwSodBHCW5rdB3Ctb5W36rnD_AQco3Ky2PgPmqvk
+QkJYuUHpbuDqVHqLOajlKSIGMTIqAIBg51fRaaONtD-Q5xzY8E5wO1YWTLKcP5tsNvUpzM8Wu3NS
+ynpGpUcvlTqWWsGzTbzOyamyKkdNdx97sSqjM25Zh1-ps48h6cddGYWpab7SUvqRCS11QBUyLTry
+2iwTEHMhHRIbo7PO99ALQfuq9gI1zKGfurJdvLBeBaFs5SCF0AiCZ3WcDO8Rv3HpxVZ2_ShbDxb0
+eMoO6SotXu51fj8Y3-WqsfZziQyEsHyqpg5uQ6yUtz01h5YHLEoVuotF1U4agmQR6kEkYk-wNOiZ
+v-8gaA9gtbLoAdKhuKFxQgQLNMf6GzVzZNujbmDzLoZAP_mXAv29aBPaf64Ugzv-Oa5GZdBgD-Xd
+_pahML-ionw99r0TnkpShYmDqMKhMdjaP3m87WIAZkIB-L-VTyKcEsJ4340VSzCOsv3waiM0S89u
+4cMcG5y-PLY8IoipIlLUPTWD3SjcQ9DV1Dt3T5KjdWLsj48D3W4K4e9PB8yxs0gtUjgVUR2_xEir
+G5eDO9Ac1eHFWGDFFP0SgG-TbHJUKlvy9mwLzmU0fC3xPjhqmIr-v0HxF7HN-tmb1LHDorno8tSN
+u7kUGcKSchIiFfvkd066crUb2mH7PnXTaWmAjyVj9VsBExFUYEdpHMAV4sAP9-RxZGDRt46UhrDK
+QZvvNhBVyOEjHPHWI4vl1r1v8HNH1_2jZu5DVJWyHWR56aCo1lhFH9_X6UAHUHbnXViDONZOVXlT
+9-WD0tk2zJGuwrhdZDAnPnAmjfwbwbpnr5Hmex1i1JiD7WVyP1kbfoej2TmdiYbxr9oBYaGQ29JI
+aHod7MQCLtvL1z5XgnDPLZ4y3_9SbqHKYbNa8UgZkTLF5EacGThYVFDLA9cbafHDtR1kMGE3vv4D
+EJ-0pAYTOGmKlVI7DwNyKsY9JTyudrxTqhOxi9jgcJNWiUaNe9yhL8Pyc2YBqUTTYhh_a2d1rvkZ
+0Gh1crviVxqBrIkRKaMRXZ4f1vDLz-3NvG_vwPOo8WRFo5nGmSdTw7CjBaigJ_cYCfDhoP11pEnw
+cndsZNcHs-v05LlxeIIMDD_f5Bvz-il_DLA4eK2HqgLdxh8ziSDl2azk14MJY4amzz6reEXUuKLV
+RsZGf_jbDGKhE2HuDQ5ovoLOi4OqE1oRuqh-dGxitrYouP2SN1l_1tCEMRth86FMV-6AQtZsvdUo
+y9MtQ7e35atjA8nHtgADlDTmJBKQiUHUsOZ77p1qp17HAFMovUkc739opfEYnKUn6Itpw5Ipm_Is
+ra6chJUfMpOFof5rb5OjqFAN27c_-mPo1lQU3ndYlKGh_n5V8ufX6v2Yri8WzOPf6hjVYotkmoMP
+NPAICDCB8W5ddBjsopzLVVEtaXDu9Qj6-zf77hT4iQ7rBd2Ner8iLqN3Kis0dvkNM3_uH8onau1G
+Y_YYw7PPSZyd2S_7Dd6G-IG4ayO6e5DD6oUwwekyiQI_3rTXNa_wldGxqW9u818010ekE4Qdlfcj
+beIn7fAeaOjReZ87hRgWyMs-EgTVHw8RL3yI_O6VvRTVRONRF1Y4C_-IYa8z-bfrwXx3BBd9TTgb
+EnS9wVOyC2OgUN6BhPLGLhxzkJ05nEjizXEc9t5EPYoSRwesajGGrrG_0-qWbuU5hKLPLkyeJLHb
+5HXOTVsrUR59Vov2M3_EswkxcImblox3k3VS2yihZMGyfqLzZIUXgd8ufkevKKU6DxwacGTb
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>\r
+<!--\r
+ ============LICENSE_START=======================================================
+ MODEL LOADER SERVICE
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+ \r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+ \r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.
+ ============LICENSE_END=========================================================\r
+ -->\r
+\r
+<!-- \r
+ Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.\r
+-->\r
+<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"\r
+ metadata-complete="false" version="3.0">\r
+\r
+ <context-param>\r
+ <param-name>contextConfigLocation</param-name>\r
+ <param-value>/WEB-INF/spring-servlet.xml,\r
+ classpath:applicationContext.xml\r
+ </param-value>\r
+ </context-param>\r
+ \r
+ <context-param>\r
+ <param-name>spring.profiles.default</param-name>\r
+ <param-value>nooauth</param-value>\r
+ </context-param>\r
+ \r
+ <listener>\r
+ <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>\r
+ </listener>\r
+ \r
+ <servlet>\r
+ <servlet-name>ManagementServlet</servlet-name>\r
+ <servlet-class>ajsc.ManagementServlet</servlet-class>\r
+ </servlet>\r
+\r
+ \r
+ <filter> \r
+ <filter-name>InterceptorFilter</filter-name>\r
+ <filter-class>ajsc.filters.InterceptorFilter</filter-class>\r
+ <init-param>\r
+ <param-name>preProcessor_interceptor_config_file</param-name>\r
+ <param-value>/etc/PreProcessorInterceptors.properties</param-value>\r
+ </init-param>\r
+ <init-param>\r
+ <param-name>postProcessor_interceptor_config_file</param-name>\r
+ <param-value>/etc/PostProcessorInterceptors.properties</param-value>\r
+ </init-param>\r
+ \r
+ </filter>\r
+\r
+ <servlet>\r
+ <servlet-name>RestletServlet</servlet-name>\r
+ <servlet-class>ajsc.restlet.RestletSpringServlet</servlet-class>\r
+ <init-param>\r
+ <param-name>org.restlet.component</param-name>\r
+ <param-value>restletComponent</param-value>\r
+ </init-param>\r
+ </servlet>\r
+ \r
+ <servlet>\r
+ <servlet-name>CamelServlet</servlet-name>\r
+ <servlet-class>ajsc.servlet.AjscCamelServlet</servlet-class>\r
+ </servlet>\r
+\r
+\r
+ <filter>\r
+ <filter-name>springSecurityFilterChain</filter-name>\r
+ <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>\r
+ </filter>\r
+\r
+ <servlet>\r
+ <servlet-name>spring</servlet-name>\r
+ <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>\r
+ <load-on-startup>1</load-on-startup>\r
+ </servlet> \r
+ \r
+<!-- <servlet-mapping>\r
+ <servlet-name>spring</servlet-name>\r
+ <url-pattern>/</url-pattern>\r
+ </servlet-mapping>-->\r
+\r
+<!-- BEGIN jsp -->\r
+\r
+ <servlet id="jsp">\r
+ <servlet-name>jsp</servlet-name>\r
+ <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>\r
+ </servlet>\r
+\r
+ \r
+ \r
+\r
+ \r
+ <!-- BEGIN static content -->\r
+ <servlet>\r
+ <servlet-name>default</servlet-name>\r
+ <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>\r
+ <init-param>\r
+ <param-name>dirAllowed</param-name>\r
+ <param-value>true</param-value>\r
+ </init-param>\r
+ </servlet>\r
+ <!-- END static content --> \r
+</web-app>\r
+++ /dev/null
-*.war
-*.jsonld
\ No newline at end of file
-###
-# ============LICENSE_START=======================================================
-# MODEL LOADER SERVICE
-# ================================================================================
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ============LICENSE_END=========================================================
-###
-
FROM ubuntu:14.04
-ARG jettyrel=9.3.9.v20160517
-ARG jettydist=jetty-distribution-${jettyrel}
-ARG jettybase=/opt/jetty
-
-RUN apt-get update && apt-get --force-yes -y -f install wget
-
-# Install java8
-RUN apt-get install -y software-properties-common
-# sudo -E is required to preserve the environment
-# If you remove that line, it will most like freeze at this step
+ARG MICRO_HOME=/opt/app/model-loader
+ARG BIN_HOME=$MICRO_HOME/bin
-RUN apt-get install --reinstall ca-certificates && \
- sudo -E add-apt-repository ppa:openjdk-r/ppa && apt-get update && apt-get install -y openjdk-8-jdk
-
-# Setup JAVA_HOME, this is useful for docker commandline
+RUN apt-get update
+# Install and setup java8
+RUN apt-get update && apt-get install -y software-properties-common
+## sudo -E is required to preserve the environment. If you remove that line, it will most like freeze at this step
+RUN sudo -E add-apt-repository ppa:openjdk-r/ppa && apt-get update && apt-get install -y openjdk-8-jdk
+## Setup JAVA_HOME, this is useful for docker commandline
ENV JAVA_HOME usr/lib/jvm/java-8-openjdk-amd64
RUN export JAVA_HOME
-RUN wget http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/${jettyrel}/${jettydist}.tar.gz
-RUN gunzip ${jettydist}.tar.gz && tar xvf ${jettydist}.tar
-
-COPY model-loader* $jettydist/webapps/model-loader/
-
-COPY startup.sh update_config.sh ${jettydist}/bin/
-RUN chmod 700 ${jettydist}/bin/startup.sh && chmod 700 ${jettydist}/bin/update_config.sh
-RUN mkdir -p ${jettybase}
-RUN mv ${jettydist} ${jettybase}/${jettydist}
-RUN rm -rf $jettybase/$jettydist/demo-base
+# Build up the deployment folder structure
+RUN mkdir -p $MICRO_HOME
+ADD swm/package/nix/dist_files/appl/model-loader/* $MICRO_HOME/
+RUN mkdir -p $BIN_HOME
+COPY *.sh $BIN_HOME
+RUN chmod 755 $BIN_HOME/*
+RUN ln -s /logs $MICRO_HOME/logs
-CMD /opt/jetty/*/bin/startup.sh
+CMD ["/opt/app/model-loader/bin/start.sh"]
+++ /dev/null
-#!/bin/bash
-
-###
-# ============LICENSE_START=======================================================
-# MODEL LOADER SERVICE
-# ================================================================================
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ============LICENSE_END=========================================================
-###
-
-#
-# This script will update the config file, with config values supplied
-# through environment variables, if set
-#
-
-CONFIG_FILE=`dirname $0`/../webapps/model-loader/WEB-INF/classes/model-loader.properties
-
-# Distribution client configuration
-ENVVAR=DISTR_CLIENT_ACTIVE_SERVER_TLS_AUTH
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.distribution.ACTIVE_SERVER_TLS_AUTH/s/.*/ml.distribution.ACTIVE_SERVER_TLS_AUTH=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=DISTR_CLIENT_ASDC_ADDRESS
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.distribution.ASDC_ADDRESS/s/.*/ml.distribution.ASDC_ADDRESS=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=DISTR_CLIENT_CONSUMER_GROUP
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.distribution.CONSUMER_GROUP/s/.*/ml.distribution.CONSUMER_GROUP=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=DISTR_CLIENT_CONSUMER_ID
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.distribution.CONSUMER_ID/s/.*/ml.distribution.CONSUMER_ID=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=DISTR_CLIENT_ENVIRONMENT_NAME
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.distribution.ENVIRONMENT_NAME/s/.*/ml.distribution.ENVIRONMENT_NAME=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=DISTR_CLIENT_KEYSTORE_PASSWORD
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.distribution.KEYSTORE_PASSWORD/s/.*/ml.distribution.KEYSTORE_PASSWORD=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=DISTR_CLIENT_KEYSTORE_FILE
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.distribution.KEYSTORE_FILE/s/.*/ml.distribution.KEYSTORE_FILE=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=DISTR_CLIENT_PASSWORD
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.distribution.PASSWORD/s/.*/ml.distribution.PASSWORD=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=DISTR_CLIENT_POLLING_INTERVAL
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.distribution.POLLING_INTERVAL/s/.*/ml.distribution.POLLING_INTERVAL=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=DISTR_CLIENT_POLLING_TIMEOUT
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.distribution.POLLING_TIMEOUT/s/.*/ml.distribution.POLLING_TIMEOUT=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=DISTR_CLIENT_USER
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.distribution.USER/s/.*/ml.distribution.USER=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=DISTR_CLIENT_ARTIFACT_TYPES
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.distribution.ARTIFACT_TYPES/s/.*/ml.distribution.ARTIFACT_TYPES=$ENVVALUE/" $CONFIG_FILE;
-
-
-# Model Loader Application Server REST Client Configuration
-ENVVAR=APP_SERVER_BASE_URL
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.aai.BASE_URL/s/.*/ml.aai.BASE_URL=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=APP_SERVER_MODEL_URL
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.aai.MODEL_URL/s/.*/ml.aai.MODEL_URL=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=APP_SERVER_NAMED_QUERY_URL
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.aai.NAMED_QUERY_URL/s/.*/ml.aai.NAMED_QUERY_URL=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=APP_SERVER_VNF_IMAGE_URL
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.aai.VNF_IMAGE_URL/s/.*/ml.aai.VNF_IMAGE_URL=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=APP_SERVER_KEYSTORE_FILE
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.aai.KEYSTORE_FILE/s/.*/ml.aai.KEYSTORE_FILE=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=APP_SERVER_KEYSTORE_PASSWORD
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.aai.KEYSTORE_PASSWORD/s/.*/ml.aai.KEYSTORE_PASSWORD=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=APP_SERVER_AUTH_USER
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.aai.AUTH_USER/s/.*/ml.aai.AUTH_USER=$ENVVALUE/" $CONFIG_FILE;
-
-ENVVAR=APP_SERVER_AUTH_PASSWORD
-ENVVALUE=${!ENVVAR}
-ENVVALUE=${ENVVALUE//\//\\/}
-[ -z ${!ENVVAR+x} ] \
- || sed -i "/ml.aai.AUTH_PASSWORD/s/.*/ml.aai.AUTH_PASSWORD=$ENVVALUE/" $CONFIG_FILE;
-/*-
+/**
* ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
+ * Model Loader
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
*/
-
package org.openecomp.modelloader.config;
import org.eclipse.jetty.util.security.Password;
import org.openecomp.sdc.api.consumer.IConfiguration;
-import java.io.File;
-import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
public class ModelLoaderConfig implements IConfiguration {
-
+
// Configuration file structure
public static final String PREFIX_MODEL_LOADER_CONFIG = "ml";
public static final String PREFIX_DISTRIBUTION_CLIENT =
* @param modelLoaderProperties properties needed to be configured for the model loader
* @param certLocation location of the certificate
*/
- public ModelLoaderConfig(Properties modelLoaderProperties) {
+ public ModelLoaderConfig(Properties modelLoaderProperties, String certLocation) {
this.modelLoaderProperties = modelLoaderProperties;
-
- String aaiKeystoreFile = modelLoaderProperties.getProperty(PROP_AAI_KEYSTORE_FILE);
- if(aaiKeystoreFile != null){
- URL keystoreURL = this.getClass().getClassLoader().getResource(aaiKeystoreFile);
- if(keystoreURL != null){
- File fKeystoreLocation = new File(keystoreURL.getPath());
- this.certLocation = fKeystoreLocation.getParent();
- }
- }
+ this.certLocation = certLocation;
// Get list of artifacts
artifactTypes = new ArrayList<String>();
return modelLoaderProperties.getProperty(PROP_AAI_BASE_URL);
}
- public String getAaiModelUrl() {
- return modelLoaderProperties.getProperty(PROP_AAI_MODEL_RESOURCE_URL);
+ public String getAaiModelUrl(String version) {
+ return modelLoaderProperties.getProperty(PROP_AAI_MODEL_RESOURCE_URL).replace("v*", version);
}
- public String getAaiNamedQueryUrl() {
- return modelLoaderProperties.getProperty(PROP_AAI_NAMED_QUERY_RESOURCE_URL);
+ public String getAaiNamedQueryUrl(String version) {
+ return modelLoaderProperties.getProperty(PROP_AAI_NAMED_QUERY_RESOURCE_URL).replace("v*", version);
}
public String getAaiVnfImageUrl() {
return false;
}
+
+ public boolean isFilterInEmptyResources() {
+ return false;
+ }
+
}
-/*-
+/**
* ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
+ * Model Loader
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
*/
-
package org.openecomp.modelloader.entity;
public abstract class Artifact {
private String payload;
private ArtifactType type;
+ public Artifact(ArtifactType type) {
+ this.type = type;
+ }
+
public ArtifactType getType() {
return type;
}
- public void setType(ArtifactType type) {
- this.type = type;
- }
-
public String getPayload() {
return payload;
}
-/*-
- * ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.modelloader.entity;
-
-import org.openecomp.modelloader.config.ModelLoaderConfig;
-
-import java.util.List;
-
-public abstract class ArtifactHandler {
-
- protected ModelLoaderConfig config;
-
- public ArtifactHandler(ModelLoaderConfig config) {
- this.config = config;
- }
-
- public abstract boolean pushArtifacts(List<Artifact> artifacts, String distributionId);
-
-}
+/**\r
+ * ============LICENSE_START=======================================================\r
+ * Model Loader\r
+ * ================================================================================\r
+ * Copyright © 2017 AT&T Intellectual Property.\r
+ * Copyright © 2017 Amdocs\r
+ * All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ *\r
+ * ECOMP and OpenECOMP are trademarks\r
+ * and service marks of AT&T Intellectual Property.\r
+ */\r
+package org.openecomp.modelloader.entity;\r
+\r
+import org.openecomp.modelloader.config.ModelLoaderConfig;\r
+\r
+import java.util.List;\r
+\r
+public abstract class ArtifactHandler {\r
+\r
+ protected ModelLoaderConfig config;\r
+\r
+ public ArtifactHandler(ModelLoaderConfig config) {\r
+ this.config = config;\r
+ }\r
+\r
+ public abstract boolean pushArtifacts(List<Artifact> artifacts, String distributionId);\r
+\r
+}\r
-/*-
+/**
* ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
+ * Model Loader
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
*/
-
package org.openecomp.modelloader.entity;
public enum ArtifactType {
- MODEL, NAMED_QUERY, VNF_CATALOG;
+ MODEL,
+ MODEL_V8,
+ NAMED_QUERY,
+ VNF_CATALOG;
}
-/*-
+/**
* ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
+ * Model Loader
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
*/
-
package org.openecomp.modelloader.entity.catalog;
import org.openecomp.modelloader.entity.Artifact;
public class VnfCatalogArtifact extends Artifact {
public VnfCatalogArtifact(String payload) {
+ super(ArtifactType.VNF_CATALOG);
setPayload(payload);
- setType(ArtifactType.VNF_CATALOG);
}
}
-/*-
- * ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.modelloader.entity.catalog;
-
-import com.sun.jersey.api.client.ClientResponse;
-
-import generated.VnfCatalog;
-import generated.VnfCatalog.PartNumberList;
-
-import inventory.aai.openecomp.org.v8.VnfImage;
-
-import org.eclipse.persistence.jaxb.MarshallerProperties;
-import org.openecomp.cl.api.Logger;
-import org.openecomp.cl.eelf.LoggerFactory;
-import org.openecomp.modelloader.config.ModelLoaderConfig;
-import org.openecomp.modelloader.entity.Artifact;
-import org.openecomp.modelloader.entity.ArtifactHandler;
-import org.openecomp.modelloader.restclient.AaiRestClient;
-import org.openecomp.modelloader.restclient.AaiRestClient.MimeType;
-import org.openecomp.modelloader.service.ModelLoaderMsgs;
-
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-import javax.ws.rs.core.Response;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.Unmarshaller;
-
-
-public class VnfCatalogArtifactHandler extends ArtifactHandler {
-
- private static Logger logger = LoggerFactory.getInstance()
- .getLogger(VnfCatalogArtifactHandler.class.getName());
-
- public VnfCatalogArtifactHandler(ModelLoaderConfig config) {
- super(config);
- }
-
- @Override
- public boolean pushArtifacts(List<Artifact> artifacts, String distributionId) {
- for (Artifact art : artifacts) {
- VnfCatalogArtifact vnfCatalog = (VnfCatalogArtifact) art;
- String artifactPayload = vnfCatalog.getPayload();
-
- AaiRestClient restClient = new AaiRestClient(this.config);
- List<VnfImage> putImages = new ArrayList<VnfImage>();
-
- try {
- JAXBContext inputContext = JAXBContext.newInstance(VnfCatalog.class);
- Unmarshaller unmarshaller = inputContext.createUnmarshaller();
- StringReader reader = new StringReader(artifactPayload);
- VnfCatalog cat = (VnfCatalog) unmarshaller.unmarshal(reader);
-
- int numParts = cat.getPartNumberList().size();
-
- for (int i = 0; i < numParts; i++) {
-
- PartNumberList pnl = cat.getPartNumberList().get(i);
-
- String application = pnl.getVendorInfo().getVendorModel();
- String applicationVendor = pnl.getVendorInfo().getVendorName();
-
- int numVersions = pnl.getSoftwareVersionList().size();
-
- for (int j = 0; j < numVersions; j++) {
- String applicationVersion = pnl.getSoftwareVersionList().get(j).getSoftwareVersion();
-
- String imageId = "vnf image " + applicationVendor + " " + application + " "
- + applicationVersion;
-
- String getUrl = config.getAaiBaseUrl() + config.getAaiVnfImageUrl()
- + "?application-vendor=" + applicationVendor + "&application=" + application
- + "&application-version=" + applicationVersion;
-
- ClientResponse tryGet = restClient.getResource(getUrl, distributionId, MimeType.JSON);
- if (tryGet == null) {
- logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,
- "Ingestion failed on " + imageId + ". Rolling back distribution.");
- failureCleanup(putImages, restClient, distributionId);
- return false;
- }
- if (tryGet.getStatus() == Response.Status.NOT_FOUND.getStatusCode()) {
- // this vnf-image not already in the db, need to add
- // only do this on 404 bc other error responses could mean there
- // are problems that
- // you might not want to try to PUT against
-
- VnfImage image = new VnfImage();
- image.setApplication(application);
- image.setApplicationVendor(applicationVendor);
- image.setApplicationVersion(applicationVersion);
- String uuid = UUID.randomUUID().toString();
- image.setUuid(uuid); // need to create uuid
-
- System.setProperty("javax.xml.bind.context.factory",
- "org.eclipse.persistence.jaxb.JAXBContextFactory");
- JAXBContext jaxbContext = JAXBContext.newInstance(VnfImage.class);
- Marshaller marshaller = jaxbContext.createMarshaller();
- marshaller.setProperty(MarshallerProperties.MEDIA_TYPE, "application/json");
- marshaller.setProperty(MarshallerProperties.JSON_INCLUDE_ROOT, false);
- marshaller.setProperty(MarshallerProperties.JSON_WRAPPER_AS_ARRAY_NAME, true);
- marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);
- StringWriter writer = new StringWriter();
- marshaller.marshal(image, writer);
- String payload = writer.toString();
-
- String putUrl = config.getAaiBaseUrl() + config.getAaiVnfImageUrl() + "/vnf-image/"
- + uuid;
-
- ClientResponse putResp = restClient.putResource(putUrl, payload, distributionId,
- MimeType.JSON);
- if (putResp == null
- || putResp.getStatus() != Response.Status.CREATED.getStatusCode()) {
- logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,
- "Ingestion failed on vnf-image " + imageId + ". Rolling back distribution.");
- failureCleanup(putImages, restClient, distributionId);
- return false;
- }
- putImages.add(image);
- logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, imageId + " successfully ingested.");
- } else if (tryGet.getStatus() == Response.Status.OK.getStatusCode()) {
- logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT,
- imageId + " already exists. Skipping ingestion.");
- } else {
- // if other than 404 or 200, something went wrong
- logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,
- "Ingestion failed on vnf-image " + imageId + " with status " + tryGet.getStatus()
- + ". Rolling back distribution.");
- failureCleanup(putImages, restClient, distributionId);
- return false;
- }
- }
- }
-
- } catch (JAXBException e) {
- logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,
- "Ingestion failed. " + e.getMessage() + ". Rolling back distribution.");
- failureCleanup(putImages, restClient, distributionId);
- return false;
- }
- }
-
- return true;
- }
-
- /*
- * if something fails in the middle of ingesting the catalog we want to
- * rollback any changes to the db
- */
- private void failureCleanup(List<VnfImage> putImages, AaiRestClient restClient, String transId) {
- for (VnfImage image : putImages) {
- String url = config.getAaiBaseUrl() + config.getAaiVnfImageUrl() + "/vnf-image/"
- + image.getUuid();
- restClient.getAndDeleteResource(url, transId); // try to delete the image,
- // if something goes wrong
- // we can't really do
- // anything here
- }
- }
-
-}
+/**\r
+ * ============LICENSE_START=======================================================\r
+ * Model Loader\r
+ * ================================================================================\r
+ * Copyright © 2017 AT&T Intellectual Property.\r
+ * Copyright © 2017 Amdocs\r
+ * All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ *\r
+ * ECOMP and OpenECOMP are trademarks\r
+ * and service marks of AT&T Intellectual Property.\r
+ */\r
+package org.openecomp.modelloader.entity.catalog;\r
+\r
+import com.sun.jersey.api.client.ClientResponse;\r
+\r
+import generated.VnfCatalog;\r
+import generated.VnfCatalog.PartNumberList;\r
+\r
+import inventory.aai.openecomp.org.v8.VnfImage;\r
+\r
+import org.eclipse.persistence.jaxb.MarshallerProperties;\r
+import org.openecomp.cl.api.Logger;\r
+import org.openecomp.cl.eelf.LoggerFactory;\r
+import org.openecomp.modelloader.config.ModelLoaderConfig;\r
+import org.openecomp.modelloader.entity.Artifact;\r
+import org.openecomp.modelloader.entity.ArtifactHandler;\r
+import org.openecomp.modelloader.restclient.AaiRestClient;\r
+import org.openecomp.modelloader.restclient.AaiRestClient.MimeType;\r
+import org.openecomp.modelloader.service.ModelLoaderMsgs;\r
+import org.springframework.web.util.UriUtils;\r
+\r
+import java.io.StringReader;\r
+import java.io.StringWriter;\r
+import java.io.UnsupportedEncodingException;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+import java.util.UUID;\r
+\r
+import javax.ws.rs.core.Response;\r
+import javax.xml.bind.JAXBContext;\r
+import javax.xml.bind.JAXBException;\r
+import javax.xml.bind.Marshaller;\r
+import javax.xml.bind.Unmarshaller;\r
+\r
+\r
+public class VnfCatalogArtifactHandler extends ArtifactHandler {\r
+\r
+ private static Logger logger = LoggerFactory.getInstance()\r
+ .getLogger(VnfCatalogArtifactHandler.class.getName());\r
+\r
+ public VnfCatalogArtifactHandler(ModelLoaderConfig config) {\r
+ super(config);\r
+ }\r
+\r
+ @Override\r
+ public boolean pushArtifacts(List<Artifact> artifacts, String distributionId) {\r
+ for (Artifact art : artifacts) {\r
+ VnfCatalogArtifact vnfCatalog = (VnfCatalogArtifact) art;\r
+ String artifactPayload = vnfCatalog.getPayload();\r
+\r
+ AaiRestClient restClient = new AaiRestClient(this.config);\r
+ List<VnfImage> putImages = new ArrayList<VnfImage>();\r
+\r
+ try {\r
+ JAXBContext inputContext = JAXBContext.newInstance(VnfCatalog.class);\r
+ Unmarshaller unmarshaller = inputContext.createUnmarshaller();\r
+ StringReader reader = new StringReader(artifactPayload);\r
+ VnfCatalog cat = (VnfCatalog) unmarshaller.unmarshal(reader);\r
+\r
+ int numParts = cat.getPartNumberList().size();\r
+\r
+ for (int i = 0; i < numParts; i++) {\r
+\r
+ PartNumberList pnl = cat.getPartNumberList().get(i);\r
+\r
+ String application = pnl.getVendorInfo().getVendorModel();\r
+ String applicationVendor = pnl.getVendorInfo().getVendorName();\r
+\r
+ int numVersions = pnl.getSoftwareVersionList().size();\r
+\r
+ for (int j = 0; j < numVersions; j++) {\r
+ String applicationVersion = pnl.getSoftwareVersionList().get(j).getSoftwareVersion();\r
+\r
+ String imageId = "vnf image " + applicationVendor + " " + application + " "\r
+ + applicationVersion;\r
+\r
+ String queryURI = "application-vendor=" + applicationVendor + "&application=" + application + "&application-version=" + applicationVersion;\r
+ \r
+ String getUrl = config.getAaiBaseUrl() + config.getAaiVnfImageUrl() + "?" + UriUtils.encodePath(queryURI, "UTF-8");\r
+\r
+ ClientResponse tryGet = restClient.getResource(getUrl, distributionId, MimeType.JSON);\r
+ if (tryGet == null) {\r
+ logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,\r
+ "Ingestion failed on " + imageId + ". Rolling back distribution.");\r
+ failureCleanup(putImages, restClient, distributionId);\r
+ return false;\r
+ }\r
+ if (tryGet.getStatus() == Response.Status.NOT_FOUND.getStatusCode()) {\r
+ // this vnf-image not already in the db, need to add\r
+ // only do this on 404 bc other error responses could mean there\r
+ // are problems that\r
+ // you might not want to try to PUT against\r
+\r
+ VnfImage image = new VnfImage();\r
+ image.setApplication(application);\r
+ image.setApplicationVendor(applicationVendor);\r
+ image.setApplicationVersion(applicationVersion);\r
+ String uuid = UUID.randomUUID().toString();\r
+ image.setUuid(uuid); // need to create uuid\r
+\r
+ System.setProperty("javax.xml.bind.context.factory",\r
+ "org.eclipse.persistence.jaxb.JAXBContextFactory");\r
+ JAXBContext jaxbContext = JAXBContext.newInstance(VnfImage.class);\r
+ Marshaller marshaller = jaxbContext.createMarshaller();\r
+ marshaller.setProperty(MarshallerProperties.MEDIA_TYPE, "application/json");\r
+ marshaller.setProperty(MarshallerProperties.JSON_INCLUDE_ROOT, false);\r
+ marshaller.setProperty(MarshallerProperties.JSON_WRAPPER_AS_ARRAY_NAME, true);\r
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);\r
+ StringWriter writer = new StringWriter();\r
+ marshaller.marshal(image, writer);\r
+ String payload = writer.toString();\r
+\r
+ String putUrl = config.getAaiBaseUrl() + config.getAaiVnfImageUrl() + "/vnf-image/"\r
+ + uuid;\r
+\r
+ ClientResponse putResp = restClient.putResource(putUrl, payload, distributionId,\r
+ MimeType.JSON);\r
+ if (putResp == null\r
+ || putResp.getStatus() != Response.Status.CREATED.getStatusCode()) {\r
+ logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,\r
+ "Ingestion failed on vnf-image " + imageId + ". Rolling back distribution.");\r
+ failureCleanup(putImages, restClient, distributionId);\r
+ return false;\r
+ }\r
+ putImages.add(image);\r
+ logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, imageId + " successfully ingested.");\r
+ } else if (tryGet.getStatus() == Response.Status.OK.getStatusCode()) {\r
+ logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT,\r
+ imageId + " already exists. Skipping ingestion.");\r
+ } else {\r
+ // if other than 404 or 200, something went wrong\r
+ logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,\r
+ "Ingestion failed on vnf-image " + imageId + " with status " + tryGet.getStatus()\r
+ + ". Rolling back distribution.");\r
+ failureCleanup(putImages, restClient, distributionId);\r
+ return false;\r
+ }\r
+ }\r
+ }\r
+\r
+ } catch (JAXBException e) {\r
+ logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,\r
+ "Ingestion failed. " + e.getMessage() + ". Rolling back distribution.");\r
+ failureCleanup(putImages, restClient, distributionId);\r
+ return false;\r
+ } catch (UnsupportedEncodingException e) {\r
+ logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR, "Ingestion failed. " + e.getMessage() + ". Rolling back distribution.");\r
+ failureCleanup(putImages, restClient, distributionId);\r
+ return false;\r
+ }\r
+ }\r
+\r
+ return true;\r
+ }\r
+\r
+ /*\r
+ * if something fails in the middle of ingesting the catalog we want to\r
+ * rollback any changes to the db\r
+ */\r
+ private void failureCleanup(List<VnfImage> putImages, AaiRestClient restClient, String transId) {\r
+ for (VnfImage image : putImages) {\r
+ String url = config.getAaiBaseUrl() + config.getAaiVnfImageUrl() + "/vnf-image/"\r
+ + image.getUuid();\r
+ restClient.getAndDeleteResource(url, transId); // try to delete the image,\r
+ // if something goes wrong\r
+ // we can't really do\r
+ // anything here\r
+ }\r
+ }\r
+\r
+}\r
--- /dev/null
+/**
+ * ============LICENSE_START=======================================================
+ * Model Loader
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ */
+package org.openecomp.modelloader.entity.model;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.openecomp.modelloader.config.ModelLoaderConfig;
+import org.openecomp.modelloader.entity.Artifact;
+import org.openecomp.modelloader.entity.ArtifactType;
+import org.openecomp.modelloader.restclient.AaiRestClient;
+
+public abstract class AbstractModelArtifact extends Artifact {
+
+ private String modelNamespace;
+ private String modelNamespaceVersion;
+ private Set<String> referencedModelIds = new HashSet<String>();
+
+ public AbstractModelArtifact(ArtifactType type) {
+ super(type);
+ }
+
+ public Set<String> getDependentModelIds() {
+ return referencedModelIds;
+ }
+
+ public void addDependentModelId(String dependentModelId) {
+ this.referencedModelIds.add(dependentModelId);
+ }
+
+ public String getModelNamespace() {
+ return modelNamespace;
+ }
+
+ public void setModelNamespace(String modelNamespace) {
+ this.modelNamespace = modelNamespace;
+
+ // Get the version from the namespace (in format 'http://org.openecomp.aai.inventory/v9')
+ String[] parts = modelNamespace.split("/");
+ modelNamespaceVersion = parts[parts.length-1].trim();
+ }
+
+ public String getModelNamespaceVersion() {
+ return modelNamespaceVersion;
+ }
+
+ public abstract String getUniqueIdentifier();
+
+ public abstract boolean push(AaiRestClient aaiClient, ModelLoaderConfig config, String distId, List<AbstractModelArtifact> addedModels);
+
+ public abstract void rollbackModel(AaiRestClient aaiClient, ModelLoaderConfig config, String distId);
+
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("\nType=" + getType().toString() +"\nId=" + getUniqueIdentifier() +"\nVersion=" + getModelNamespaceVersion() + "\nDependant models: ");
+ for (String dep : referencedModelIds) {
+ sb.append(dep + " ");
+ }
+
+ return sb.toString();
+ }
+
+
+}
--- /dev/null
+/**
+ * ============LICENSE_START=======================================================
+ * Model Loader
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ */
+package org.openecomp.modelloader.entity.model;
+
+import java.util.List;
+
+import org.openecomp.modelloader.entity.Artifact;
+
+public interface IModelParser {
+ public List<Artifact> parse(byte[] artifactPayload, String artifactName);
+}
-/*-
+/**
* ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
+ * Model Loader
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
*/
-
package org.openecomp.modelloader.entity.model;
-import org.openecomp.modelloader.entity.Artifact;
+import java.io.StringWriter;
+import java.util.List;
-import java.util.HashSet;
-import java.util.Set;
+import javax.ws.rs.core.Response;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
-public class ModelArtifact extends Artifact {
+import org.openecomp.cl.api.Logger;
+import org.openecomp.cl.eelf.LoggerFactory;
+import org.openecomp.modelloader.config.ModelLoaderConfig;
+import org.openecomp.modelloader.entity.ArtifactType;
+import org.openecomp.modelloader.restclient.AaiRestClient;
+import org.openecomp.modelloader.service.ModelLoaderMsgs;
+import org.w3c.dom.Node;
- String nameVersionId;
- Set<String> referencedModelIds = new HashSet<String>();
+import com.sun.jersey.api.client.ClientResponse;
- public String getNameVersionId() {
- return nameVersionId;
- }
+public class ModelArtifact extends AbstractModelArtifact {
- public void setNameVersionId(String nameVersionId) {
- this.nameVersionId = nameVersionId;
- }
+ private static final String AAI_MODEL_VER_SUB_URL = "/model-vers/model-ver";
+
+ private static Logger logger = LoggerFactory.getInstance().getLogger(ModelArtifact.class.getName());
+
+ private String modelVerId;
+ private String modelInvariantId;
+ private Node modelVer;
+ private boolean firstVersionOfModel = false;
- public Set<String> getDependentModelIds() {
- return referencedModelIds;
- }
+ public ModelArtifact() {
+ super(ArtifactType.MODEL);
+ }
- public void addDependentModelId(String dependentModelId) {
- this.referencedModelIds.add(dependentModelId);
+ public String getModelVerId() {
+ return modelVerId;
+ }
+
+ public void setModelVerId(String modelVerId) {
+ this.modelVerId = modelVerId;
+ }
+
+ public String getModelInvariantId() {
+ return modelInvariantId;
+ }
+
+ public void setModelInvariantId(String modelInvariantId) {
+ this.modelInvariantId = modelInvariantId;
+ }
+
+ public Node getModelVer() {
+ return modelVer;
+ }
+
+ public void setModelVer(Node modelVer) {
+ this.modelVer = modelVer;
+ }
+
+ @Override
+ public String getUniqueIdentifier() {
+ return getModelInvariantId() + "|" + getModelVerId();
}
@Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("NameVersId=" + nameVersionId + "(" + getType().toString() + ") ==> ");
- for (String dep : referencedModelIds) {
- sb.append(dep + " ");
+ public boolean push(AaiRestClient aaiClient, ModelLoaderConfig config, String distId, List<AbstractModelArtifact> addedModels) {
+ ClientResponse getResponse = aaiClient.getResource(getModelUrl(config), distId, AaiRestClient.MimeType.XML);
+ if ( (getResponse == null) || (getResponse.getStatus() != Response.Status.OK.getStatusCode()) ) {
+ // Only attempt the PUT if the model doesn't already exist
+ ClientResponse putResponse = aaiClient.putResource(getModelUrl(config), getPayload(), distId, AaiRestClient.MimeType.XML);
+ if ( (putResponse != null) && (putResponse.getStatus() == Response.Status.CREATED.getStatusCode()) ) {
+ addedModels.add(this);
+
+ // Flag this as the first version of the model that has been added.
+ firstVersionOfModel = true;
+
+ logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, getType().toString() + " " + getUniqueIdentifier() + " successfully ingested.");
+ }
+ else {
+ logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR, "Ingestion failed for " + getType().toString() + " " + getUniqueIdentifier() +
+ ". Rolling back distribution.");
+ return false;
+ }
}
+ else {
+ logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, getType().toString() + " " + getModelInvariantId() + " already exists. Skipping ingestion.");
+ getResponse = aaiClient.getResource(getModelVerUrl(config), distId, AaiRestClient.MimeType.XML);
+ if ( (getResponse == null) || (getResponse.getStatus() != Response.Status.OK.getStatusCode()) ) {
+ // Only attempt the PUT if the model-ver doesn't already exist
+ ClientResponse putResponse = null;
- return sb.toString();
+ try {
+ putResponse = aaiClient.putResource(getModelVerUrl(config), nodeToString(getModelVer()), distId, AaiRestClient.MimeType.XML);
+ } catch (TransformerException e) {
+ logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR, "Ingestion failed for " + getType().toString() + " " + getUniqueIdentifier()
+ + ": " + e.getMessage() + ". Rolling back distribution.");
+ return false;
+ }
+ if ( (putResponse != null) && (putResponse.getStatus() == Response.Status.CREATED.getStatusCode()) ) {
+ addedModels.add(this);
+ logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, getType().toString() + " " + getUniqueIdentifier() + " successfully ingested.");
+ }
+ else {
+ logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR, "Ingestion failed for " + getType().toString() + " "
+ + getUniqueIdentifier() + ". Rolling back distribution.");
+ return false;
+ }
+ }
+ else {
+ logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, getType().toString() + " " + getUniqueIdentifier() + " already exists. Skipping ingestion.");
+ }
+ }
+
+ return true;
}
+
+ @Override
+ public void rollbackModel(AaiRestClient aaiClient, ModelLoaderConfig config, String distId) {
+ String url = getModelVerUrl(config);
+ if (firstVersionOfModel) {
+ // If this was the first version of the model which was added, we want to remove the entire
+ // model rather than just the version.
+ url = getModelUrl(config);
+ }
+
+ // Best effort to delete. Nothing we can do in the event this fails.
+ aaiClient.getAndDeleteResource(url, distId);
+ }
+
+ private String getModelUrl(ModelLoaderConfig config) {
+ String baseURL = config.getAaiBaseUrl().trim();
+ String subURL = null;
+ String instance = null;
+
+ subURL = config.getAaiModelUrl(getModelNamespaceVersion()).trim();
+ instance = getModelInvariantId();
+
+ if ( (!baseURL.endsWith("/")) && (!subURL.startsWith("/")) ) {
+ baseURL = baseURL + "/";
+ }
+
+ if ( baseURL.endsWith("/") && subURL.startsWith("/") ) {
+ baseURL = baseURL.substring(0, baseURL.length()-1);
+ }
+ if (!subURL.endsWith("/")) {
+ subURL = subURL + "/";
+ }
+
+ String url = baseURL + subURL + instance;
+ return url;
+ }
+
+ private String getModelVerUrl(ModelLoaderConfig config) {
+ String baseURL = config.getAaiBaseUrl().trim();
+ String subURL = null;
+ String instance = null;
+
+ subURL = config.getAaiModelUrl(getModelNamespaceVersion()).trim() + getModelInvariantId() + AAI_MODEL_VER_SUB_URL;
+ instance = getModelVerId();
+
+ if ( (!baseURL.endsWith("/")) && (!subURL.startsWith("/")) ) {
+ baseURL = baseURL + "/";
+ }
+
+ if ( baseURL.endsWith("/") && subURL.startsWith("/") ) {
+ baseURL = baseURL.substring(0, baseURL.length()-1);
+ }
+
+ if (!subURL.endsWith("/")) {
+ subURL = subURL + "/";
+ }
+
+ String url = baseURL + subURL + instance;
+ return url;
+ }
+
+ private String nodeToString(Node node) throws TransformerException {
+ StringWriter sw = new StringWriter();
+ Transformer t = TransformerFactory.newInstance().newTransformer();
+ t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+ t.transform(new DOMSource(node), new StreamResult(sw));
+ return sw.toString();
+ }
}
-/*-
+/**
* ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
+ * Model Loader
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
*/
-
package org.openecomp.modelloader.entity.model;
-import com.sun.jersey.api.client.ClientResponse;
-
import org.openecomp.cl.api.Logger;
import org.openecomp.cl.eelf.LoggerFactory;
import org.openecomp.modelloader.config.ModelLoaderConfig;
import org.openecomp.modelloader.entity.Artifact;
import org.openecomp.modelloader.entity.ArtifactHandler;
-import org.openecomp.modelloader.entity.ArtifactType;
import org.openecomp.modelloader.restclient.AaiRestClient;
import org.openecomp.modelloader.service.ModelLoaderMsgs;
import java.util.ArrayList;
import java.util.List;
-import javax.ws.rs.core.Response;
public class ModelArtifactHandler extends ArtifactHandler {
- private static Logger logger = LoggerFactory.getInstance()
- .getLogger(ArtifactHandler.class.getName());
-
+ private static Logger logger = LoggerFactory.getInstance().getLogger(ModelArtifactHandler.class.getName());
+
public ModelArtifactHandler(ModelLoaderConfig config) {
super(config);
}
@Override
- public boolean pushArtifacts(List<Artifact> artifacts, String distributionId) {
+ public boolean pushArtifacts(List<Artifact> artifacts, String distributionID) {
ModelSorter modelSorter = new ModelSorter();
- List<Artifact> sortedModelArtifacts = modelSorter.sort(artifacts);
-
- // Push the ordered list of model artifacts to A&AI. If one fails, we need
- // to roll back
+ List<Artifact> sortedModelArtifacts;
+ try {
+ sortedModelArtifacts = modelSorter.sort(artifacts);
+ }
+ catch (RuntimeException ex) {
+ logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR, "Unable to resolve models: " + ex.getMessage());
+ return false;
+ }
+
+ // Push the ordered list of model artifacts to A&AI. If one fails, we need to roll back
// the changes.
- List<ModelArtifact> completedModels = new ArrayList<ModelArtifact>();
+ List<AbstractModelArtifact> completedModels = new ArrayList<AbstractModelArtifact>();
AaiRestClient aaiClient = new AaiRestClient(config);
for (Artifact art : sortedModelArtifacts) {
- ModelArtifact model = (ModelArtifact) art;
- ClientResponse getResponse = aaiClient.getResource(getUrl(model), distributionId,
- AaiRestClient.MimeType.XML);
- if ((getResponse == null)
- || (getResponse.getStatus() != Response.Status.OK.getStatusCode())) {
- // Only attempt the PUT if the model doesn't already exist
- ClientResponse putResponse = aaiClient.putResource(getUrl(model), model.getPayload(),
- distributionId, AaiRestClient.MimeType.XML);
- if ((putResponse != null)
- && (putResponse.getStatus() == Response.Status.CREATED.getStatusCode())) {
- completedModels.add(model);
- logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, model.getType().toString() + " "
- + model.getNameVersionId() + " successfully ingested.");
- } else {
- logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,
- "Ingestion failed for " + model.getType().toString() + " " + model.getNameVersionId()
- + ". Rolling back distribution.");
-
- for (ModelArtifact modelToDelete : completedModels) {
- // Best effort to delete. Nothing we can do in the event this fails.
- aaiClient.getAndDeleteResource(getUrl(modelToDelete), distributionId);
- }
-
- return false;
+ AbstractModelArtifact model = (AbstractModelArtifact)art;
+ if (model.push(aaiClient, config, distributionID, completedModels) != true) {
+ for (AbstractModelArtifact modelToDelete : completedModels) {
+ modelToDelete.rollbackModel(aaiClient, config, distributionID);
}
- } else {
- logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, model.getType().toString() + " "
- + model.getNameVersionId() + " already exists. Skipping ingestion.");
+
+ return false;
}
}
return true;
}
- private String getUrl(ModelArtifact model) {
- String baseUrl = config.getAaiBaseUrl().trim();
- String subUrl = null;
- if (model.getType().equals(ArtifactType.MODEL)) {
- subUrl = config.getAaiModelUrl().trim();
- } else {
- subUrl = config.getAaiNamedQueryUrl().trim();
- }
-
- if ((!baseUrl.endsWith("/")) && (!subUrl.startsWith("/"))) {
- baseUrl = baseUrl + "/";
- }
-
- if (baseUrl.endsWith("/") && subUrl.startsWith("/")) {
- baseUrl = baseUrl.substring(0, baseUrl.length() - 1);
- }
-
- if (!subUrl.endsWith("/")) {
- subUrl = subUrl + "/";
- }
-
- String url = baseUrl + subUrl + model.getNameVersionId();
- return url;
- }
-
- /**
- * This method is used for the test REST interface to load models without an
- * ASDC.
- *
- * @param payload content of the request
- */
+ // This method is used for the test REST interface to load models without an ASDC
public void loadModelTest(byte[] payload) {
List<Artifact> modelArtifacts = new ArrayList<Artifact>();
ModelArtifactParser parser = new ModelArtifactParser();
-/*-
+/**
* ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
+ * Model Loader
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
*/
-
package org.openecomp.modelloader.entity.model;
import org.openecomp.cl.api.Logger;
import org.openecomp.cl.eelf.LoggerFactory;
import org.openecomp.modelloader.entity.Artifact;
-import org.openecomp.modelloader.entity.ArtifactType;
import org.openecomp.modelloader.service.ModelLoaderMsgs;
-import org.openecomp.modelloader.util.JsonXmlConverter;
+
import org.w3c.dom.Document;
+import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import java.io.StringReader;
-import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
+import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-public class ModelArtifactParser {
-
- private static String MODELS_ELEMENT = "models";
- private static String MODEL_ELEMENT = "model";
- private static String NAMED_QUERIES_ELEMENT = "named-queries";
- private static String NAMED_QUERY_ELEMENT = "named-query";
- private static String MODEL_NAME_VERSION_ID = "model-name-version-id";
- private static String NAMED_QUERY_VERSION_ID = "named-query-uuid";
- private static String RELATIONSHIP_DATA = "relationship-data";
- private static String RELATIONSHIP_KEY = "relationship-key";
- private static String RELATIONSHIP_VALUE = "relationship-value";
- private static String MODEL_ELEMENT_RELATIONSHIP_KEY = "model.model-name-version-id";
-
- private static Logger logger = LoggerFactory.getInstance()
- .getLogger(ModelArtifactParser.class.getName());
-
- /**
- * This method parses the given artifact payload in byte array format and
- * generates a list of model artifacts according to the content.
- *
- * @param artifactPayload
- * artifact content to be parsed
- * @param artifactName
- * name of the artifact
- * @return a list of model artifacts
- */
- public List<Artifact> parse(byte[] artifactPayload, String artifactName) {
- String payload = new String(artifactPayload);
- List<Artifact> modelList = new ArrayList<Artifact>();
-
- try {
- // Artifact could be JSON or XML
- if (JsonXmlConverter.isValidJson(payload)) {
- payload = JsonXmlConverter.convertJsonToXml(payload);
- }
-
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = factory.newDocumentBuilder();
- InputSource is = new InputSource(new StringReader(payload));
- Document doc = builder.parse(is);
-
- if ((doc.getDocumentElement().getNodeName().equalsIgnoreCase(MODEL_ELEMENT))
- || (doc.getDocumentElement().getNodeName().equalsIgnoreCase(NAMED_QUERY_ELEMENT))) {
- ModelArtifact model = parseModel(doc.getDocumentElement(), payload);
- if (model != null) {
- modelList.add(model);
- } else {
- // TODO: A WARN message?
- logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT,
- "Unable to parse artifact " + artifactName);
- }
- } else if ((doc.getDocumentElement().getNodeName().equalsIgnoreCase(MODELS_ELEMENT))
- || (doc.getDocumentElement().getNodeName().equalsIgnoreCase(NAMED_QUERIES_ELEMENT))) {
- // The complete set of models/named-queries were contained in this
- // artifact
- NodeList nodeList = doc.getDocumentElement().getChildNodes();
- for (int i = 0; i < nodeList.getLength(); i++) {
- Node childNode = nodeList.item(i);
- if ((childNode.getNodeName().equalsIgnoreCase(MODEL_ELEMENT))
- || (childNode.getNodeName().equalsIgnoreCase(NAMED_QUERY_ELEMENT))) {
- String modelPayload = nodeToString(childNode);
- ModelArtifact model = parseModel(childNode, modelPayload);
- if (model != null) {
- modelList.add(model);
- } else {
- // TODO: A WARN message?
- logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT,
- "Unable to parse artifact " + artifactName);
- modelList.clear();
- break;
- }
- }
- }
- }
- } catch (Exception ex) {
- // This may not be an error. We may be receiving an artifact that is
- // unrelated
- // to models. In this case, we just ignore it.
- // TODO: A WARN message?
- logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT,
- "Unable to parse artifact " + artifactName + ": " + ex.getLocalizedMessage());
- }
-
- return modelList;
- }
-
- private ModelArtifact parseModel(Node modelNode, String payload) {
- ModelArtifact model = new ModelArtifact();
- model.setPayload(payload);
-
- if (modelNode.getNodeName().equalsIgnoreCase(MODEL_ELEMENT)) {
- model.setType(ArtifactType.MODEL);
- } else {
- model.setType(ArtifactType.NAMED_QUERY);
- }
-
- parseNode(modelNode, model);
-
- if (model.getNameVersionId() == null) {
- return null;
- }
-
- return model;
- }
-
- private void parseNode(Node node, ModelArtifact model) {
- if (node.getNodeName().equalsIgnoreCase(MODEL_NAME_VERSION_ID)) {
- model.setNameVersionId(node.getTextContent().trim());
- } else if (node.getNodeName().equalsIgnoreCase(NAMED_QUERY_VERSION_ID)) {
- model.setNameVersionId(node.getTextContent().trim());
- } else if (node.getNodeName().equalsIgnoreCase(RELATIONSHIP_DATA)) {
- parseRelationshipNode(node, model);
- } else {
- NodeList nodeList = node.getChildNodes();
- for (int i = 0; i < nodeList.getLength(); i++) {
- Node childNode = nodeList.item(i);
- parseNode(childNode, model);
- }
- }
- }
-
- private void parseRelationshipNode(Node node, ModelArtifact model) {
- String key = null;
- String value = null;
-
- NodeList nodeList = node.getChildNodes();
- for (int i = 0; i < nodeList.getLength(); i++) {
- Node childNode = nodeList.item(i);
- if (childNode.getNodeName().equalsIgnoreCase(RELATIONSHIP_KEY)) {
- key = childNode.getTextContent().trim();
- } else if (childNode.getNodeName().equalsIgnoreCase(RELATIONSHIP_VALUE)) {
- value = childNode.getTextContent().trim();
- }
- }
-
- if ((key != null) && (key.equalsIgnoreCase(MODEL_ELEMENT_RELATIONSHIP_KEY))) {
- if (value != null) {
- model.addDependentModelId(value);
- }
- }
- }
-
- private String nodeToString(Node node) throws TransformerException {
- StringWriter sw = new StringWriter();
- Transformer transfomer = TransformerFactory.newInstance().newTransformer();
- transfomer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
- transfomer.transform(new DOMSource(node), new StreamResult(sw));
- return sw.toString();
- }
+
+
+public class ModelArtifactParser implements IModelParser {
+
+ private static String MODEL_VER = "model-ver";
+ private static String MODEL_VERSION_ID = "model-version-id";
+ private static String MODEL_INVARIANT_ID = "model-invariant-id";
+ private static String RELATIONSHIP = "relationship";
+ private static String RELATIONSHIP_DATA = "relationship-data";
+ private static String RELATIONSHIP_KEY = "relationship-key";
+ private static String RELATIONSHIP_VALUE = "relationship-value";
+ private static String MODEL_ELEMENT_RELATIONSHIP_KEY = "model.model-invariant-id";
+ private static String MODEL_VER_ELEMENT_RELATIONSHIP_KEY = "model-ver.model-version-id";
+
+ private static Logger logger = LoggerFactory.getInstance().getLogger(ModelArtifactParser.class.getName());
+
+ public List<Artifact> parse(byte[] artifactPayload, String artifactName) {
+ String payload = new String(artifactPayload);
+ List<Artifact> modelList = new ArrayList<Artifact>();
+
+ try {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ InputSource is = new InputSource(new StringReader(payload));
+ Document doc = builder.parse(is);
+
+ ModelArtifact model = parseModel(doc.getDocumentElement(), payload);
+
+ if (model != null) {
+ logger.info( ModelLoaderMsgs.DISTRIBUTION_EVENT, "Model parsed =====>>>> "
+ + "Model-invariant-Id: "+ model.getModelInvariantId()
+ + " Model-Version-Id: "+ model.getModelVerId());
+ modelList.add(model);
+ }
+ else {
+ logger.error(ModelLoaderMsgs.ARTIFACT_PARSE_ERROR, "Unable to parse artifact " + artifactName);
+ return null;
+ }
+ }
+ catch (Exception ex) {
+ logger.error(ModelLoaderMsgs.ARTIFACT_PARSE_ERROR, "Unable to parse artifact " + artifactName + ": " + ex.getLocalizedMessage());
+ }
+
+ return modelList;
+ }
+
+ private ModelArtifact parseModel(Node modelNode, String payload) {
+ ModelArtifact model = new ModelArtifact();
+ model.setPayload(payload);
+
+ Element e = (Element)modelNode;
+ model.setModelNamespace(e.getAttribute("xmlns"));
+
+ parseNode(modelNode, model);
+
+ if ( (model.getModelInvariantId() == null) || (model.getModelVerId() == null) ){
+ return null;
+ }
+
+ return model;
+ }
+
+ private void parseNode(Node node, ModelArtifact model) {
+ if (node.getNodeName().equalsIgnoreCase(MODEL_INVARIANT_ID)) {
+ model.setModelInvariantId(node.getTextContent().trim());
+ }
+ else if (node.getNodeName().equalsIgnoreCase(MODEL_VERSION_ID)) {
+ model.setModelVerId(node.getTextContent().trim());
+ }
+ else if (node.getNodeName().equalsIgnoreCase(RELATIONSHIP)) {
+ String dependentModelKey = parseRelationshipNode(node, model);
+ if (dependentModelKey != null) {
+ model.addDependentModelId(dependentModelKey);
+ }
+ }
+ else {
+ if (node.getNodeName().equalsIgnoreCase(MODEL_VER)) {
+ model.setModelVer(node);
+ if ( (model.getModelNamespace() != null) && (!model.getModelNamespace().isEmpty()) ) {
+ Element e = (Element) node;
+ e.setAttributeNS(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, "xmlns", model.getModelNamespace());
+ }
+ }
+
+ NodeList nodeList = node.getChildNodes();
+
+ for (int i = 0; i < nodeList.getLength(); i++) {
+ Node childNode = nodeList.item(i);
+ parseNode(childNode, model);
+ }
+ }
+ }
+
+ private String parseRelationshipNode(Node node, ModelArtifact model) {
+ String currentKey = null;
+ String currentValue = null;
+ String modelVersionIdValue = null;
+ String modelInvariantIdValue = null;
+
+ NodeList nodeList = node.getChildNodes();
+ for (int i = 0; i < nodeList.getLength(); i++) {
+ Node childNode = nodeList.item(i);
+
+ if (childNode.getNodeName().equalsIgnoreCase(RELATIONSHIP_DATA)) {
+ NodeList relDataChildList = childNode.getChildNodes();
+
+ for (int j = 0; j < relDataChildList.getLength(); j++) {
+ Node relDataChildNode = relDataChildList.item(j);
+
+ if (relDataChildNode.getNodeName().equalsIgnoreCase(RELATIONSHIP_KEY)) {
+ currentKey = relDataChildNode.getTextContent().trim();
+
+ if (currentValue != null) {
+ if (currentKey.equalsIgnoreCase(MODEL_VER_ELEMENT_RELATIONSHIP_KEY)) {
+ modelVersionIdValue = currentValue;
+ }
+ else if (currentKey.equalsIgnoreCase(MODEL_ELEMENT_RELATIONSHIP_KEY)) {
+ modelInvariantIdValue = currentValue;
+ }
+
+ currentKey = null;
+ currentValue = null;
+ }
+ }
+ else if (relDataChildNode.getNodeName().equalsIgnoreCase(RELATIONSHIP_VALUE)) {
+ currentValue = relDataChildNode.getTextContent().trim();
+
+ if (currentKey != null) {
+ if (currentKey.equalsIgnoreCase(MODEL_VER_ELEMENT_RELATIONSHIP_KEY)) {
+ modelVersionIdValue = currentValue;
+ }
+ else if (currentKey.equalsIgnoreCase(MODEL_ELEMENT_RELATIONSHIP_KEY)) {
+ modelInvariantIdValue = currentValue;
+ }
+
+ currentKey = null;
+ currentValue = null;
+ }
+ }
+ }
+ }
+ }
+
+ if ( (modelVersionIdValue != null) && (modelInvariantIdValue != null) ) {
+ return modelInvariantIdValue + "|" + modelVersionIdValue;
+ }
+
+ return null;
+
+ }
+
}
--- /dev/null
+/**
+ * ============LICENSE_START=======================================================
+ * Model Loader
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ */
+package org.openecomp.modelloader.entity.model;
+
+import java.io.StringReader;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.openecomp.cl.api.Logger;
+import org.openecomp.cl.eelf.LoggerFactory;
+import org.openecomp.modelloader.service.ModelLoaderMsgs;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.xml.sax.InputSource;
+
+public class ModelParserFactory {
+ private static Logger logger = LoggerFactory.getInstance().getLogger(ModelParserFactory.class.getName());
+
+ private static String MODEL_ELEMENT = "model";
+ private static String NAMED_QUERY_ELEMENT = "named-query";
+
+ public static IModelParser createModelParser(byte[] artifactPayload, String artifactName) {
+ Document doc = null;
+
+ try {
+ String payload = new String(artifactPayload);
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder;
+ builder = factory.newDocumentBuilder();
+ InputSource is = new InputSource(new StringReader(payload));
+ doc = builder.parse(is);
+ } catch (Exception e) {
+ logger.error(ModelLoaderMsgs.ARTIFACT_PARSE_ERROR, "Unable to parse artifact " + artifactName);
+ return null;
+ }
+
+ if (doc.getDocumentElement().getNodeName().equalsIgnoreCase(NAMED_QUERY_ELEMENT)) {
+ return new NamedQueryArtifactParser();
+ }
+
+ if (!doc.getDocumentElement().getNodeName().equalsIgnoreCase(MODEL_ELEMENT)) {
+ logger.error(ModelLoaderMsgs.ARTIFACT_PARSE_ERROR, "Unable to parse artifact " + artifactName
+ + ": Invalid root element: " + doc.getDocumentElement().getNodeName());
+ return null;
+ }
+
+ Element e = doc.getDocumentElement();
+ String ns = e.getAttribute("xmlns");
+ String[] parts = ns.split("/");
+
+ if (parts.length < 1) {
+ logger.error(ModelLoaderMsgs.ARTIFACT_PARSE_ERROR, "Unable to parse artifact " + artifactName
+ + ": Could not parse namespace version");
+ return null;
+ }
+
+ String modelNamespaceVersion = parts[parts.length-1].trim().replace("v", "");
+ int version = Integer.parseInt(modelNamespaceVersion);
+
+ if (version > 8) {
+ return new ModelArtifactParser();
+ }
+
+ return new ModelV8ArtifactParser();
+ }
+}
-/*-
+/**
* ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
+ * Model Loader
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
*/
-
package org.openecomp.modelloader.entity.model;
import jline.internal.Log;
* Wraps a Model object to form dependencies other Models using Edges.
*/
static class Node {
- private final ModelArtifact model;
+ private final AbstractModelArtifact model;
private final HashSet<Edge> inEdges;
private final HashSet<Edge> outEdges;
- public Node(ModelArtifact model) {
+ public Node(AbstractModelArtifact model) {
this.model = model;
inEdges = new HashSet<Edge>();
outEdges = new HashSet<Edge>();
@Override
public String toString() {
- return model.getNameVersionId();
+ return model.getUniqueIdentifier();
}
@Override
public boolean equals(Object other) {
- ModelArtifact otherModel = ((Node) other).model;
- return this.model.getNameVersionId().equals(otherModel.getNameVersionId());
+ AbstractModelArtifact otherModel = ((Node) other).model;
+ return this.model.getUniqueIdentifier().equals(otherModel.getUniqueIdentifier());
}
@Override
public int hashCode() {
- return this.model.getNameVersionId().hashCode();
-
+ return this.model.getUniqueIdentifier().hashCode();
}
}
Collection<Node> nodes = createNodes(originalList);
Collection<Node> sortedNodes = sortNodes(nodes);
-
+
List<Artifact> sortedModelsList = new ArrayList<Artifact>(sortedNodes.size());
for (Node node : sortedNodes) {
sortedModelsList.add(node.model);
// load list of models into a map, so we can later replace referenceIds with
// real Models
- HashMap<String, ModelArtifact> versionIdToModelMap = new HashMap<String, ModelArtifact>();
+ HashMap<String, AbstractModelArtifact> versionIdToModelMap = new HashMap<String, AbstractModelArtifact>();
for (Artifact art : models) {
- ModelArtifact ma = (ModelArtifact) art;
- versionIdToModelMap.put(ma.getNameVersionId(), ma);
+ AbstractModelArtifact ma = (AbstractModelArtifact) art;
+ versionIdToModelMap.put(ma.getUniqueIdentifier(), ma);
}
HashMap<String, Node> nodes = new HashMap<String, Node>();
// create a node for each model and its referenced models
for (Artifact art : models) {
- ModelArtifact model = (ModelArtifact) art;
+ AbstractModelArtifact model = (AbstractModelArtifact) art;
+
// node might have been created by another model referencing it
- Node node = nodes.get(model.getNameVersionId());
+ Node node = nodes.get(model.getUniqueIdentifier());
if (null == node) {
node = new Node(model);
- nodes.put(model.getNameVersionId(), node);
+ nodes.put(model.getUniqueIdentifier(), node);
}
for (String referencedModelId : model.getDependentModelIds()) {
if (null == referencedNode) {
// create node
- ModelArtifact referencedModel = versionIdToModelMap.get(referencedModelId);
+ AbstractModelArtifact referencedModel = versionIdToModelMap.get(referencedModelId);
if (referencedModel == null) {
Log.debug("ignoring " + referencedModelId);
continue; // referenced model not supplied, no need to sort it
* @return a sorted collection of the given nodes
*/
private Collection<Node> sortNodes(Collection<Node> unsortedNodes) {
-
// L <- Empty list that will contain the sorted elements
ArrayList<Node> nodeList = new ArrayList<Node>();
return nodeList;
}
+
}
--- /dev/null
+/**
+ * ============LICENSE_START=======================================================
+ * Model Loader
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ */
+package org.openecomp.modelloader.entity.model;
+
+import java.util.List;
+
+import javax.ws.rs.core.Response;
+
+import org.openecomp.cl.api.Logger;
+import org.openecomp.cl.eelf.LoggerFactory;
+import org.openecomp.modelloader.config.ModelLoaderConfig;
+import org.openecomp.modelloader.entity.Artifact;
+import org.openecomp.modelloader.entity.ArtifactType;
+import org.openecomp.modelloader.restclient.AaiRestClient;
+import org.openecomp.modelloader.service.ModelLoaderMsgs;
+
+import com.sun.jersey.api.client.ClientResponse;
+
+public class ModelV8Artifact extends AbstractModelArtifact {
+ private static String AAI_CONVERSION_URL = "/aai/tools/modeltransform";
+
+ private static Logger logger = LoggerFactory.getInstance().getLogger(ModelArtifact.class.getName());
+
+ private String modelNameVersionId;
+ private ModelArtifact translatedModel;
+
+ public ModelV8Artifact() {
+ super(ArtifactType.MODEL_V8);
+ }
+
+ public String getModelNameVersionId() {
+ return modelNameVersionId;
+ }
+
+ public void setModelNameVersionId(String modelNameVersionId) {
+ this.modelNameVersionId = modelNameVersionId;
+ }
+
+ @Override
+ public String getUniqueIdentifier() {
+ return getModelNameVersionId();
+ }
+
+ @Override
+ public boolean push(AaiRestClient aaiClient, ModelLoaderConfig config, String distId, List<AbstractModelArtifact> addedModels) {
+ // For a legacy model (version <= v8), we need to call out to an A&AI endpoint to convert to the proper format
+ ClientResponse response = aaiClient.postResource(getConversionUrl(config), constructTransformPayload(), distId, AaiRestClient.MimeType.XML);
+ if ( (response == null) || (response.getStatus() != Response.Status.OK.getStatusCode()) ) {
+ logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR, "Ingestion failed for " +
+ getType().toString() + " " + getModelNameVersionId() + ". Unable to convert model. Rolling back distribution.");
+ return false;
+ }
+
+ String translatedPayload = response.getEntity(String.class);
+
+ logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, "Translated artifact payload:\n" + translatedPayload);
+
+ ModelArtifactParser parser = new ModelArtifactParser();
+
+ List<Artifact> parsedArtifacts = parser.parse(translatedPayload.getBytes(), "translated-payload");
+ if (parsedArtifacts == null || parsedArtifacts.isEmpty()) {
+ return false;
+ }
+
+ translatedModel = (ModelArtifact)parsedArtifacts.get(0);
+ return translatedModel.push(aaiClient, config, distId, addedModels);
+ }
+
+ @Override
+ public void rollbackModel(AaiRestClient aaiClient, ModelLoaderConfig config, String distId) {
+ if (translatedModel != null) {
+ translatedModel.rollbackModel(aaiClient, config, distId);
+ }
+ }
+
+
+ private String constructTransformPayload() {
+ // A&AI requires that to transform a legacy model, we need to use the v8 namespace (even
+ // if the version < 8)
+ return getPayload().replaceFirst("aai.inventory/v.", "aai.inventory/v8");
+ }
+
+ private String getConversionUrl(ModelLoaderConfig config) {
+ String baseUrl = config.getAaiBaseUrl().trim();
+ String subUrl = AAI_CONVERSION_URL;
+
+ if ( (!baseUrl.endsWith("/")) && (!subUrl.startsWith("/")) ) {
+ baseUrl = baseUrl + "/";
+ }
+
+ if ( baseUrl.endsWith("/") && subUrl.startsWith("/") ) {
+ baseUrl = baseUrl.substring(0, baseUrl.length()-1);
+ }
+
+ if (!subUrl.endsWith("/")) {
+ subUrl = subUrl + "/";
+ }
+
+ String url = baseUrl + subUrl;
+ return url;
+ }
+}
--- /dev/null
+/**
+ * ============LICENSE_START=======================================================
+ * Model Loader
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ */
+package org.openecomp.modelloader.entity.model;
+
+import org.openecomp.cl.api.Logger;
+import org.openecomp.cl.eelf.LoggerFactory;
+import org.openecomp.modelloader.entity.Artifact;
+import org.openecomp.modelloader.service.ModelLoaderMsgs;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+
+public class ModelV8ArtifactParser implements IModelParser {
+
+ private static String MODEL_NAME_VERSION_ID = "model-name-version-id";
+ private static String RELATIONSHIP_DATA = "relationship-data";
+ private static String RELATIONSHIP_KEY = "relationship-key";
+ private static String RELATIONSHIP_VALUE = "relationship-value";
+ private static String MODEL_ELEMENT_RELATIONSHIP_KEY = "model.model-name-version-id";
+
+
+ private static Logger logger = LoggerFactory.getInstance().getLogger(ModelV8ArtifactParser.class.getName());
+
+ public List<Artifact> parse(byte[] artifactPayload, String artifactName) {
+ String payload = new String(artifactPayload);
+ List<Artifact> modelList = new ArrayList<Artifact>();
+
+ try {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ InputSource is = new InputSource(new StringReader(payload));
+ Document doc = builder.parse(is);
+
+ ModelV8Artifact model = parseModel(doc.getDocumentElement(), payload);
+
+ if (model != null) {
+ logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, "Model parsed =====>>>> " + "Model-Named-Version-Id: "+ model.getModelNameVersionId());
+ modelList.add(model);
+ }
+ else {
+ logger.error(ModelLoaderMsgs.ARTIFACT_PARSE_ERROR, "Unable to parse legacy model artifact " + artifactName);
+ return null;
+ }
+ }
+ catch (Exception ex) {
+ logger.error(ModelLoaderMsgs.ARTIFACT_PARSE_ERROR, "Unable to parse legacy model artifact " + artifactName + ": " + ex.getLocalizedMessage());
+ }
+
+ return modelList;
+ }
+
+ private ModelV8Artifact parseModel(Node modelNode, String payload) {
+ ModelV8Artifact model = new ModelV8Artifact();
+ model.setPayload(payload);
+
+ Element e = (Element)modelNode;
+ model.setModelNamespace(e.getAttribute("xmlns"));
+
+ parseNode(modelNode, model);
+
+ if (model.getModelNameVersionId() == null) {
+ return null;
+ }
+
+ return model;
+ }
+
+ private void parseNode(Node node, ModelV8Artifact model) {
+ if (node.getNodeName().equalsIgnoreCase(MODEL_NAME_VERSION_ID)) {
+ model.setModelNameVersionId(node.getTextContent().trim());
+ }
+ else if (node.getNodeName().equalsIgnoreCase(RELATIONSHIP_DATA)) {
+ parseRelationshipNode(node, model);
+ }
+ else {
+ NodeList nodeList = node.getChildNodes();
+ for (int i = 0; i < nodeList.getLength(); i++) {
+ Node childNode = nodeList.item(i);
+ parseNode(childNode, model);
+ }
+ }
+ }
+
+ private void parseRelationshipNode(Node node, ModelV8Artifact model) {
+ String key = null;
+ String value = null;
+
+ NodeList nodeList = node.getChildNodes();
+ for (int i = 0; i < nodeList.getLength(); i++) {
+ Node childNode = nodeList.item(i);
+ if (childNode.getNodeName().equalsIgnoreCase(RELATIONSHIP_KEY)) {
+ key = childNode.getTextContent().trim();
+ }
+ else if (childNode.getNodeName().equalsIgnoreCase(RELATIONSHIP_VALUE)) {
+ value = childNode.getTextContent().trim();
+ }
+ }
+
+ if ( (key != null) && (key.equalsIgnoreCase(MODEL_ELEMENT_RELATIONSHIP_KEY )) ) {
+ if (value != null) {
+ model.addDependentModelId(value);
+ }
+ }
+ }
+}
--- /dev/null
+/**
+ * ============LICENSE_START=======================================================
+ * Model Loader
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ */
+package org.openecomp.modelloader.entity.model;
+
+import java.util.List;
+
+import javax.ws.rs.core.Response;
+
+import org.openecomp.cl.api.Logger;
+import org.openecomp.cl.eelf.LoggerFactory;
+import org.openecomp.modelloader.config.ModelLoaderConfig;
+import org.openecomp.modelloader.entity.ArtifactType;
+import org.openecomp.modelloader.restclient.AaiRestClient;
+import org.openecomp.modelloader.service.ModelLoaderMsgs;
+
+import com.sun.jersey.api.client.ClientResponse;
+
+public class NamedQueryArtifact extends AbstractModelArtifact {
+
+ private Logger logger = LoggerFactory.getInstance().getLogger(NamedQueryArtifact.class.getName());
+
+ private String namedQueryUuid;
+
+ public NamedQueryArtifact() {
+ super(ArtifactType.NAMED_QUERY);
+ }
+
+ public String getNamedQueryUuid() {
+ return namedQueryUuid;
+ }
+
+ public void setNamedQueryUuid(String namedQueryUuid) {
+ this.namedQueryUuid = namedQueryUuid;
+ }
+
+ @Override
+ public String getUniqueIdentifier() {
+ return getNamedQueryUuid();
+ }
+
+ @Override
+ public boolean push(AaiRestClient aaiClient, ModelLoaderConfig config, String distId, List<AbstractModelArtifact> addedModels) {
+ ClientResponse getResponse = aaiClient.getResource(getNamedQueryUrl(config), distId, AaiRestClient.MimeType.XML);
+ if ( (getResponse == null) || (getResponse.getStatus() != Response.Status.OK.getStatusCode()) ) {
+ // Only attempt the PUT if the model doesn't already exist
+ ClientResponse putResponse = aaiClient.putResource(getNamedQueryUrl(config), getPayload(), distId, AaiRestClient.MimeType.XML);
+ if ( (putResponse != null) && (putResponse.getStatus() == Response.Status.CREATED.getStatusCode()) ) {
+ addedModels.add(this);
+ logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, getType().toString() + " " + getUniqueIdentifier() + " successfully ingested.");
+ }
+ else {
+ logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR, "Ingestion failed for " + getType().toString() + " " + getUniqueIdentifier() +
+ ". Rolling back distribution.");
+ return false;
+ }
+ }
+ else {
+ logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, getType().toString() + " " + getUniqueIdentifier() + " already exists. Skipping ingestion.");
+ }
+
+ return true;
+ }
+
+ @Override
+ public void rollbackModel(AaiRestClient aaiClient, ModelLoaderConfig config, String distId) {
+ // Best effort to delete. Nothing we can do in the event this fails.
+ aaiClient.getAndDeleteResource(getNamedQueryUrl(config), distId);
+ }
+
+ private String getNamedQueryUrl(ModelLoaderConfig config) {
+ String baseURL = config.getAaiBaseUrl().trim();
+ String subURL = null;
+ String instance = null;
+
+ subURL = config.getAaiNamedQueryUrl(getModelNamespaceVersion()).trim();
+ instance = this.getNamedQueryUuid();
+
+ if ( (!baseURL.endsWith("/")) && (!subURL.startsWith("/")) ) {
+ baseURL = baseURL + "/";
+ }
+
+ if ( baseURL.endsWith("/") && subURL.startsWith("/") ) {
+ baseURL = baseURL.substring(0, baseURL.length()-1);
+ }
+
+ if (!subURL.endsWith("/")) {
+ subURL = subURL + "/";
+ }
+
+ String url = baseURL + subURL + instance;
+ return url;
+ }
+}
--- /dev/null
+/**
+ * ============LICENSE_START=======================================================
+ * Model Loader
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ */
+package org.openecomp.modelloader.entity.model;
+
+import org.openecomp.cl.api.Logger;
+import org.openecomp.cl.eelf.LoggerFactory;
+import org.openecomp.modelloader.entity.Artifact;
+import org.openecomp.modelloader.service.ModelLoaderMsgs;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+
+public class NamedQueryArtifactParser implements IModelParser {
+
+ private static String NAMED_QUERY_VERSION_ID = "named-query-uuid";
+ private static String RELATIONSHIP_DATA = "relationship-data";
+ private static String RELATIONSHIP_KEY = "relationship-key";
+ private static String RELATIONSHIP_VALUE = "relationship-value";
+ private static String MODEL_ELEMENT_RELATIONSHIP_KEY = "model.model-invariant-id";
+
+
+ private static Logger logger = LoggerFactory.getInstance().getLogger(NamedQueryArtifactParser.class.getName());
+
+ public List<Artifact> parse(byte[] artifactPayload, String artifactName) {
+ String payload = new String(artifactPayload);
+ List<Artifact> modelList = new ArrayList<Artifact>();
+
+ try {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ InputSource is = new InputSource(new StringReader(payload));
+ Document doc = builder.parse(is);
+
+ NamedQueryArtifact model = parseModel(doc.getDocumentElement(), payload);
+
+ if (model != null) {
+ logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, "Named-Query parsed =====>>>> " + "Named-Query-UUID: "+ model.getNamedQueryUuid());
+ modelList.add(model);
+ }
+ else {
+ logger.error(ModelLoaderMsgs.ARTIFACT_PARSE_ERROR, "Unable to parse named-query artifact " + artifactName);
+ return null;
+ }
+ }
+ catch (Exception ex) {
+ logger.error(ModelLoaderMsgs.ARTIFACT_PARSE_ERROR, "Unable to parse named-query artifact " + artifactName + ": " + ex.getLocalizedMessage());
+ }
+
+ return modelList;
+ }
+
+ private NamedQueryArtifact parseModel(Node modelNode, String payload) {
+ NamedQueryArtifact model = new NamedQueryArtifact();
+ model.setPayload(payload);
+
+ Element e = (Element)modelNode;
+ model.setModelNamespace(e.getAttribute("xmlns"));
+
+ parseNode(modelNode, model);
+
+ if (model.getNamedQueryUuid() == null) {
+ return null;
+ }
+
+ return model;
+ }
+
+ private void parseNode(Node node, NamedQueryArtifact model) {
+ if (node.getNodeName().equalsIgnoreCase(NAMED_QUERY_VERSION_ID)) {
+ model.setNamedQueryUuid(node.getTextContent().trim());
+ }
+ else if (node.getNodeName().equalsIgnoreCase(RELATIONSHIP_DATA)) {
+ parseRelationshipNode(node, model);
+ }
+ else {
+ NodeList nodeList = node.getChildNodes();
+ for (int i = 0; i < nodeList.getLength(); i++) {
+ Node childNode = nodeList.item(i);
+ parseNode(childNode, model);
+ }
+ }
+ }
+
+ private void parseRelationshipNode(Node node, NamedQueryArtifact model) {
+ String key = null;
+ String value = null;
+
+ NodeList nodeList = node.getChildNodes();
+ for (int i = 0; i < nodeList.getLength(); i++) {
+ Node childNode = nodeList.item(i);
+ if (childNode.getNodeName().equalsIgnoreCase(RELATIONSHIP_KEY)) {
+ key = childNode.getTextContent().trim();
+ }
+ else if (childNode.getNodeName().equalsIgnoreCase(RELATIONSHIP_VALUE)) {
+ value = childNode.getTextContent().trim();
+ }
+ }
+
+ if ( (key != null) && (key.equalsIgnoreCase(MODEL_ELEMENT_RELATIONSHIP_KEY )) ) {
+ if (value != null) {
+ model.addDependentModelId(value);
+ }
+ }
+ }
+}
-/*-
- * ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.modelloader.notification;
-
-import org.openecomp.sdc.api.consumer.IDistributionStatusMessage;
-import org.openecomp.sdc.utils.DistributionStatusEnum;
-
-public class DistributionStatusMsg implements IDistributionStatusMessage {
- private DistributionStatusEnum status;
- private String distributionId;
- private String consumerId;
- private String artifactUrl;
-
- /**
- * Creates a new DistributionStatusMsg instance.
- *
- * @param status - The distribution status to be reported.
- * @param distributionId - The identifier of the distribution who's status is being rported on.
- * @param consumerId - Identifier of the consumer associated with the distribution.
- * @param artifactUrl - Resource identifier for the artifact.
- */
- public DistributionStatusMsg(DistributionStatusEnum status,
- String distributionId,
- String consumerId,
- String artifactUrl) {
- this.status = status;
- this.distributionId = distributionId;
- this.consumerId = consumerId;
- this.artifactUrl = artifactUrl;
- }
-
- @Override
- public long getTimestamp() {
- long currentTimeMillis = System.currentTimeMillis();
- return currentTimeMillis;
- }
-
- @Override
- public DistributionStatusEnum getStatus() {
- return status;
- }
-
- @Override
- public String getDistributionID() {
- return distributionId;
- }
-
- @Override
- public String getConsumerID() {
- return consumerId;
- }
-
- @Override
- public String getArtifactURL() {
- return artifactUrl;
- }
-}
+/**\r
+ * ============LICENSE_START=======================================================\r
+ * Model Loader\r
+ * ================================================================================\r
+ * Copyright © 2017 AT&T Intellectual Property.\r
+ * Copyright © 2017 Amdocs\r
+ * All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ *\r
+ * ECOMP and OpenECOMP are trademarks\r
+ * and service marks of AT&T Intellectual Property.\r
+ */\r
+package org.openecomp.modelloader.notification;\r
+\r
+import org.openecomp.sdc.api.consumer.IDistributionStatusMessage;\r
+import org.openecomp.sdc.utils.DistributionStatusEnum;\r
+\r
+public class DistributionStatusMsg implements IDistributionStatusMessage {\r
+ private DistributionStatusEnum status;\r
+ private String distributionId;\r
+ private String consumerId;\r
+ private String artifactUrl;\r
+\r
+ /**\r
+ * Creates a new DistributionStatusMsg instance.\r
+ * \r
+ * @param status - The distribution status to be reported.\r
+ * @param distributionId - The identifier of the distribution who's status is being rported on.\r
+ * @param consumerId - Identifier of the consumer associated with the distribution.\r
+ * @param artifactUrl - Resource identifier for the artifact.\r
+ */\r
+ public DistributionStatusMsg(DistributionStatusEnum status, \r
+ String distributionId,\r
+ String consumerId, \r
+ String artifactUrl) {\r
+ this.status = status;\r
+ this.distributionId = distributionId;\r
+ this.consumerId = consumerId;\r
+ this.artifactUrl = artifactUrl;\r
+ }\r
+\r
+ @Override\r
+ public long getTimestamp() {\r
+ long currentTimeMillis = System.currentTimeMillis();\r
+ return currentTimeMillis;\r
+ }\r
+\r
+ @Override\r
+ public DistributionStatusEnum getStatus() {\r
+ return status;\r
+ }\r
+\r
+ @Override\r
+ public String getDistributionID() {\r
+ return distributionId;\r
+ }\r
+\r
+ @Override\r
+ public String getConsumerID() {\r
+ return consumerId;\r
+ }\r
+ \r
+ @Override\r
+ public String getArtifactURL() {\r
+ return artifactUrl;\r
+ }\r
+}\r
-/*-
+/**
* ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
+ * Model Loader
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
*/
-
package org.openecomp.modelloader.notification;
import org.openecomp.sdc.api.IDistributionClient;
import org.openecomp.modelloader.entity.Artifact;
import org.openecomp.modelloader.entity.catalog.VnfCatalogArtifact;
import org.openecomp.modelloader.entity.catalog.VnfCatalogArtifactHandler;
+import org.openecomp.modelloader.entity.model.IModelParser;
import org.openecomp.modelloader.entity.model.ModelArtifactHandler;
-import org.openecomp.modelloader.entity.model.ModelArtifactParser;
+import org.openecomp.modelloader.entity.model.ModelParserFactory;
import org.openecomp.modelloader.service.ModelLoaderMsgs;
import org.slf4j.MDC;
List<IArtifactInfo> artifacts = getArtifacts(data);
List<Artifact> modelArtifacts = new ArrayList<Artifact>();
List<Artifact> catalogArtifacts = new ArrayList<Artifact>();
- ModelArtifactParser modelArtParser = new ModelArtifactParser();
for (IArtifactInfo artifact : artifacts) {
// Grab the current time so we can measure the download time for the
break;
}
- logger.debug("Artifact: " + artifact.getArtifactName() + " Payload:\n" + new String(downloadResult.getArtifactPayload()));
+ logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT,
+ "Downloaded artifact: " + artifact.getArtifactName() + " Payload:\n" + new String(downloadResult.getArtifactPayload()));
publishDownloadSuccess(data, artifact, downloadResult);
- if ((artifact.getArtifactType()
- .compareToIgnoreCase(ArtifactTypeEnum.MODEL_INVENTORY_PROFILE.toString()) == 0)
- || (artifact.getArtifactType()
- .compareToIgnoreCase(ArtifactTypeEnum.MODEL_QUERY_SPEC.toString()) == 0)) {
- modelArtifacts.addAll(modelArtParser.parse(downloadResult.getArtifactPayload(),
- downloadResult.getArtifactName()));
+ if ((artifact.getArtifactType().compareToIgnoreCase(ArtifactTypeEnum.MODEL_INVENTORY_PROFILE.toString()) == 0)
+ || (artifact.getArtifactType().compareToIgnoreCase(ArtifactTypeEnum.MODEL_QUERY_SPEC.toString()) == 0)) {
+ IModelParser parser = ModelParserFactory.createModelParser(downloadResult.getArtifactPayload(), downloadResult.getArtifactName());
+ List<Artifact> parsedArtifacts = parser.parse(downloadResult.getArtifactPayload(), downloadResult.getArtifactName());
+ if (parsedArtifacts != null && !parsedArtifacts.isEmpty()) {
+ modelArtifacts.addAll(parsedArtifacts);
+ } else {
+ success = false;
+ publishDeployFailure(data, artifact);
+ break;
+ }
} else if (artifact.getArtifactType()
.compareToIgnoreCase(ArtifactTypeEnum.VNF_CATALOG.toString()) == 0) {
catalogArtifacts
}
}
}
+ } else {
+ statusString = "FAILURE";
}
auditLogger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT,
metricsLogger.info(ModelLoaderMsgs.EVENT_PUBLISHED, null, override, "download success",
artifact.getArtifactName(), sendDownloadStatus.getDistributionActionResult().toString());
- logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT,
- "Downloaded artifact: " + artifact.getArtifactName());
-
if (sendDownloadStatus.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
logger.error(ModelLoaderMsgs.DISTRIBUTION_EVENT_ERROR,
"Failed to publish download success status: "
-/*-
+/**
* ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
+ * Model Loader
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
*/
-
package org.openecomp.modelloader.restclient;
import com.sun.jersey.api.client.Client;
return result;
}
+ /**
+ * Send a POST request to the A&AI.
+ *
+ * @param url
+ * - the url
+ * @param transId
+ * - transaction ID
+ * @param payload
+ * - the XML or JSON payload for the request
+ * @param mimeType
+ * - the content type (XML or JSON)
+ * @return ClientResponse
+ */
+ public ClientResponse postResource(String url, String payload, String transId, MimeType mimeType) {
+ ClientResponse result = null;
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ long startTimeInMs = 0;
+ MdcOverride override = new MdcOverride();
+
+ try {
+ Client client = setupClient();
+
+ baos = new ByteArrayOutputStream();
+ PrintStream ps = new PrintStream(baos);
+ if (logger.isDebugEnabled()) {
+ client.addFilter(new LoggingFilter(ps));
+ }
+
+ // Grab the current time so that we can use it for metrics purposes later.
+ startTimeInMs = System.currentTimeMillis();
+ override.addAttribute(MdcContext.MDC_START_TIME, dateFormatter.format(startTimeInMs));
+
+ if (useBasicAuth()) {
+ result = client.resource(url).header(HEADER_TRANS_ID, transId)
+ .header(HEADER_FROM_APP_ID, ML_APP_NAME)
+ .header(HEADER_AUTHORIZATION, getAuthenticationCredentials())
+ .type(mimeType.getHttpHeaderType()).post(ClientResponse.class, payload);
+ } else {
+ result = client.resource(url).header(HEADER_TRANS_ID, transId)
+ .header(HEADER_FROM_APP_ID, ML_APP_NAME).type(mimeType.getHttpHeaderType())
+ .post(ClientResponse.class, payload);
+ }
+ } catch (Exception ex) {
+ logger.error(ModelLoaderMsgs.AAI_REST_REQUEST_ERROR, "POST", url, ex.getLocalizedMessage());
+ return null;
+ } finally {
+ if (logger.isDebugEnabled()) {
+ logger.debug(baos.toString());
+ }
+ }
+
+ if ((result != null) && ((result.getStatus() == Response.Status.CREATED.getStatusCode())
+ || (result.getStatus() == Response.Status.OK.getStatusCode()))) {
+ logger.info(ModelLoaderMsgs.AAI_REST_REQUEST_SUCCESS, "POST", url,
+ Integer.toString(result.getStatus()));
+ metricsLogger.info(ModelLoaderMsgs.AAI_REST_REQUEST_SUCCESS,
+ new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, result.getStatus())
+ .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION,
+ result.getResponseStatus().toString()),
+ override, "POST", url, Integer.toString(result.getStatus()));
+ } else {
+ // If response is not 200 OK, then additionally log the reason
+ String respMsg = result.getEntity(String.class);
+ if (respMsg == null) {
+ respMsg = result.getStatusInfo().getReasonPhrase();
+ }
+ logger.info(ModelLoaderMsgs.AAI_REST_REQUEST_UNSUCCESSFUL, "POST", url,
+ Integer.toString(result.getStatus()), respMsg);
+ metricsLogger.info(ModelLoaderMsgs.AAI_REST_REQUEST_UNSUCCESSFUL,
+ new LogFields().setField(LogLine.DefinedFields.RESPONSE_CODE, result.getStatus())
+ .setField(LogLine.DefinedFields.RESPONSE_DESCRIPTION,
+ result.getResponseStatus().toString()),
+ override, "POST", url, Integer.toString(result.getStatus()), respMsg);
+ }
+
+ return result;
+ }
+
/**
* Does a GET on a resource to retrieve the resource version, and then DELETE
* that version.
-/*-
- * ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.modelloader.service;
-
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.Response;
-
-public interface ModelLoaderInterface {
-
- @GET
- @Path("/loadModel/{modelid}")
- public Response loadModel(@PathParam("modelid") String modelid);
-
- @PUT
- @Path("/saveModel/{modelid}/{modelname}")
- public Response saveModel(@PathParam("modelid") String modelid,
- @PathParam("modelname") String modelname);
-
- @POST
- @Consumes("application/xml")
- @Produces("application/xml")
- @Path("/ingestModel/{modelid}")
- public Response ingestModel(@PathParam("modelid") String modelid, @Context HttpServletRequest req,
- String payload) throws IOException;
-}
+/**\r
+ * ============LICENSE_START=======================================================\r
+ * Model Loader\r
+ * ================================================================================\r
+ * Copyright © 2017 AT&T Intellectual Property.\r
+ * Copyright © 2017 Amdocs\r
+ * All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ *\r
+ * ECOMP and OpenECOMP are trademarks\r
+ * and service marks of AT&T Intellectual Property.\r
+ */\r
+package org.openecomp.modelloader.service;\r
+\r
+import java.io.IOException;\r
+\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.ws.rs.Consumes;\r
+import javax.ws.rs.GET;\r
+import javax.ws.rs.POST;\r
+import javax.ws.rs.PUT;\r
+import javax.ws.rs.Path;\r
+import javax.ws.rs.PathParam;\r
+import javax.ws.rs.Produces;\r
+import javax.ws.rs.core.Context;\r
+import javax.ws.rs.core.Response;\r
+\r
+public interface ModelLoaderInterface {\r
+\r
+ @GET\r
+ @Path("/loadModel/{modelid}")\r
+ public Response loadModel(@PathParam("modelid") String modelid);\r
+\r
+ @PUT\r
+ @Path("/saveModel/{modelid}/{modelname}")\r
+ public Response saveModel(@PathParam("modelid") String modelid,\r
+ @PathParam("modelname") String modelname);\r
+\r
+ @POST\r
+ @Consumes("application/xml")\r
+ @Produces("application/xml")\r
+ @Path("/ingestModel/{modelid}")\r
+ public Response ingestModel(@PathParam("modelid") String modelid, @Context HttpServletRequest req,\r
+ String payload) throws IOException;\r
+}\r
-/*-
- * ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.modelloader.service;
-
-import com.att.eelf.i18n.EELFResourceManager;
-
-import org.openecomp.cl.eelf.LogMessageEnum;
-
-public enum ModelLoaderMsgs implements LogMessageEnum {
-
- /**
- * Arguments: None.
- */
- LOADING_CONFIGURATION,
-
- /**
- * Arguments: None.
- */
- STOPPING_CLIENT,
-
- /**
- * Arguments: {0} = message.
- */
- INITIALIZING,
-
- /**
- * Arguments: {0} = reason.
- */
- ASDC_CONNECTION_ERROR,
-
- /**
- * Arguments: {0} = message.
- */
- DISTRIBUTION_EVENT,
-
- /**
- * Arguments: {0} = error message.
- */
- DISTRIBUTION_EVENT_ERROR,
-
- /**
- * Arguments: {0} = request type.
- * {1} = endpoint.
- * {2} = result code.
- */
- AAI_REST_REQUEST_SUCCESS,
-
- /**
- * Arguments: {0} = request type.
- * {1} = endpoint.
- * {2} = result code.
- * {3} = result.
- * message
- */
- AAI_REST_REQUEST_UNSUCCESSFUL,
-
- /**
- * Arguments: {0} = request type.
- * {1} = endpoint.
- * {2} = error message.
- */
- AAI_REST_REQUEST_ERROR,
-
- /**
- * Arguments: {0} = artifact name.
- * {1} = result.
- */
- DOWNLOAD_COMPLETE,
-
- /**
- * Arguments: {0} = event.
- * {1} = artifact name.
- * {2} = result.
- */
- EVENT_PUBLISHED;
-
- /**
- * Load message bundle (ModelLoaderMsgs.properties file)
- */
- static {
- EELFResourceManager.loadMessageBundle("org/openecomp/modelloader/service/ModelLoaderMsgs");
- }
-
-}
+/**\r
+ * ============LICENSE_START=======================================================\r
+ * Model Loader\r
+ * ================================================================================\r
+ * Copyright © 2017 AT&T Intellectual Property.\r
+ * Copyright © 2017 Amdocs\r
+ * All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ *\r
+ * ECOMP and OpenECOMP are trademarks\r
+ * and service marks of AT&T Intellectual Property.\r
+ */\r
+package org.openecomp.modelloader.service;\r
+\r
+import com.att.eelf.i18n.EELFResourceManager;\r
+\r
+import org.openecomp.cl.eelf.LogMessageEnum;\r
+\r
+public enum ModelLoaderMsgs implements LogMessageEnum {\r
+\r
+ /**\r
+ * Arguments: None.\r
+ */\r
+ LOADING_CONFIGURATION,\r
+\r
+ /**\r
+ * Arguments: None.\r
+ */\r
+ STOPPING_CLIENT,\r
+\r
+ /**\r
+ * Arguments: {0} = message.\r
+ */\r
+ INITIALIZING,\r
+\r
+ /**\r
+ * Arguments: {0} = reason.\r
+ */\r
+ ASDC_CONNECTION_ERROR,\r
+\r
+ /**\r
+ * Arguments: {0} = message.\r
+ */\r
+ DISTRIBUTION_EVENT,\r
+\r
+ /**\r
+ * Arguments: {0} = error message.\r
+ */\r
+ DISTRIBUTION_EVENT_ERROR, \r
+ \r
+ /**\r
+ * Arguments: {0} = request type.\r
+ * {1} = endpoint. \r
+ * {2} = result code.\r
+ */\r
+ AAI_REST_REQUEST_SUCCESS,\r
+\r
+ /**\r
+ * Arguments: {0} = request type. \r
+ * {1} = endpoint. \r
+ * {2} = result code. \r
+ * {3} = result.\r
+ * message\r
+ */\r
+ AAI_REST_REQUEST_UNSUCCESSFUL,\r
+\r
+ /**\r
+ * Arguments: {0} = request type. \r
+ * {1} = endpoint.\r
+ * {2} = error message.\r
+ */\r
+ AAI_REST_REQUEST_ERROR,\r
+\r
+ /**\r
+ * Arguments:\r
+ * {0} = artifact name\r
+ */\r
+ ARTIFACT_PARSE_ERROR,\r
+ \r
+ /**\r
+ * Arguments: {0} = artifact name. \r
+ * {1} = result.\r
+ */\r
+ DOWNLOAD_COMPLETE,\r
+\r
+ /**\r
+ * Arguments: {0} = event. \r
+ * {1} = artifact name. \r
+ * {2} = result.\r
+ */\r
+ EVENT_PUBLISHED;\r
+\r
+ /**\r
+ * Load message bundle (ModelLoaderMsgs.properties file)\r
+ */\r
+ static {\r
+ EELFResourceManager.loadMessageBundle("org/openecomp/modelloader/service/ModelLoaderMsgs");\r
+ }\r
+\r
+}\r
-/*-
+/**
* ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
+ * Model Loader
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
*/
-
package org.openecomp.modelloader.service;
import org.openecomp.sdc.api.IDistributionClient;
import org.openecomp.modelloader.entity.model.ModelArtifactHandler;
import org.openecomp.modelloader.notification.EventCallback;
+import java.io.FileInputStream;
import java.io.IOException;
+import java.util.Date;
import java.util.Properties;
+import java.util.Timer;
+import java.util.TimerTask;
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.Response;
* capabilities between AAI and an ASDC.
*/
public class ModelLoaderService implements ModelLoaderInterface {
-
- protected static String CONFIG_FILE = "model-loader.properties";
-
- private IDistributionClient client;
- private ModelLoaderConfig config;
-
- static Logger logger = LoggerFactory.getInstance().getLogger(ModelLoaderService.class.getName());
-
- /**
- * Responsible for loading configuration files and calling initialization.
- */
- @PostConstruct
- protected void start() {
- // Load model loader system configuration
- logger.info(ModelLoaderMsgs.LOADING_CONFIGURATION);
- Properties configProperties = new Properties();
- try {
- configProperties.load(this.getClass().getClassLoader().getResourceAsStream(CONFIG_FILE));
- } catch (IOException e) {
- String errorMsg = "Failed to load configuration: " + e.getMessage();
- logger.error(ModelLoaderMsgs.ASDC_CONNECTION_ERROR, errorMsg);
- shutdown();
- }
-
- config = new ModelLoaderConfig(configProperties);
- init();
- }
-
- /**
- * Responsible for stopping the connection to the distribution client before
- * the resource is destroyed.
- */
- @PreDestroy
- protected void preShutdownOperations() {
- logger.info(ModelLoaderMsgs.STOPPING_CLIENT);
- if (client != null) {
- client.stop();
- }
- }
-
- /**
- * Responsible for loading configuration files, initializing model
- * distribution clients, and starting them.
- */
- protected void init() {
- // Initialize distribution client
- logger.debug(ModelLoaderMsgs.INITIALIZING, "Initializing distribution client...");
- client = DistributionClientFactory.createDistributionClient();
- IDistributionClientResult initResult = client.init(config, new EventCallback(client, config));
- if (initResult.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
- String errorMsg = "Failed to initialize distribution client: "
- + initResult.getDistributionMessageResult();
- logger.error(ModelLoaderMsgs.ASDC_CONNECTION_ERROR, errorMsg);
- shutdown();
- }
-
- // Start distribution client
- logger.debug(ModelLoaderMsgs.INITIALIZING, "Starting distribution client...");
- IDistributionClientResult startResult = client.start();
- if (startResult.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
- String errorMsg = "Failed to start distribution client: "
- + startResult.getDistributionMessageResult();
- logger.error(ModelLoaderMsgs.ASDC_CONNECTION_ERROR, errorMsg);
- shutdown();
- }
-
- logger.debug(ModelLoaderMsgs.INITIALIZING,
- "Succcessfully loaded service: " + this.getClass().getSimpleName());
- }
-
- /**
- * Shut down the process.
- */
- private void shutdown() {
- preShutdownOperations();
-
- // TODO: Find a better way to shut down the model loader.
- try {
- // Give logs time to write to file
- Thread.sleep(2000);
- } catch (InterruptedException e) {
- // Nothing we can do at this point
- }
-
- Runtime.getRuntime().halt(1);
- }
-
- /** (non-Javadoc)
- * @see org.openecomp.modelloader.service.ModelLoaderInterface#loadModel(java.lang.String)
- */
- @Override
- public Response loadModel(String modelid) {
- Response response = Response.ok("{\"model_loaded\":\"" + modelid + "\"}").build();
-
- return response;
- }
-
- /** (non-Javadoc)
- * @see org.openecomp.modelloader.service.ModelLoaderInterface#saveModel(java.lang.String, java.lang.String)
- */
- @Override
- public Response saveModel(String modelid, String modelname) {
- Response response = Response.ok("{\"model_saved\":\"" + modelid + "-" + modelname + "\"}")
- .build();
-
- return response;
- }
-
- @Override
- public Response ingestModel(String modelid, HttpServletRequest req, String payload)
- throws IOException {
- Response response;
-
- if (config.getIngestSimulatorEnabled()) {
- logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, "Received test artifact");
-
- ModelArtifactHandler handler = new ModelArtifactHandler(config);
- handler.loadModelTest(payload.getBytes());
-
- response = Response.ok().build();
- } else {
- logger.debug("Simulation interface disabled");
- response = Response.serverError().build();
- }
-
- return response;
- }
+
+ protected static final String FILESEP = (System.getProperty("file.separator") == null) ? "/"
+ : System.getProperty("file.separator");
+
+ protected static final String CONFIG_DIR = System.getProperty("CONFIG_HOME") + FILESEP;
+ protected static final String CONFIG_AUTH_LOCATION = CONFIG_DIR + "auth" + FILESEP;
+ protected static final String CONFIG_FILE = CONFIG_DIR + "model-loader.properties";
+
+ private IDistributionClient client;
+ private ModelLoaderConfig config;
+ private Timer timer = null;
+
+ static Logger logger = LoggerFactory.getInstance().getLogger(ModelLoaderService.class.getName());
+
+ /**
+ * Responsible for loading configuration files and calling initialization.
+ */
+ public ModelLoaderService() {
+ start();
+ }
+
+ protected void start() {
+ // Load model loader system configuration
+ logger.info(ModelLoaderMsgs.LOADING_CONFIGURATION);
+ Properties configProperties = new Properties();
+ try {
+ configProperties.load(new FileInputStream(CONFIG_FILE));
+ } catch (IOException e) {
+ String errorMsg = "Failed to load configuration: " + e.getMessage();
+ logger.error(ModelLoaderMsgs.ASDC_CONNECTION_ERROR, errorMsg);
+ shutdown();
+ }
+
+ config = new ModelLoaderConfig(configProperties, CONFIG_AUTH_LOCATION);
+ init();
+
+ Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){
+ public void run() {
+ preShutdownOperations();
+ }
+ }));
+ }
+
+ /**
+ * Responsible for stopping the connection to the distribution client before
+ * the resource is destroyed.
+ */
+ protected void preShutdownOperations() {
+ logger.info(ModelLoaderMsgs.STOPPING_CLIENT);
+ if (client != null) {
+ client.stop();
+ }
+ }
+
+ /**
+ * Responsible for loading configuration files, initializing model
+ * distribution clients, and starting them.
+ */
+ protected void init() {
+ // Initialize distribution client
+ logger.debug(ModelLoaderMsgs.INITIALIZING, "Initializing distribution client...");
+ client = DistributionClientFactory.createDistributionClient();
+ EventCallback callback = new EventCallback(client, config);
+
+ IDistributionClientResult initResult = client.init(config, callback);
+
+ if (initResult.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
+ String errorMsg = "Failed to initialize distribution client: "
+ + initResult.getDistributionMessageResult();
+ logger.error(ModelLoaderMsgs.ASDC_CONNECTION_ERROR, errorMsg);
+
+ // Kick off a timer to retry the SDC connection
+ timer = new Timer();
+ TimerTask task = new SdcConnectionJob(client, config, callback, timer);
+ timer.schedule(task, new Date(), 60000);
+ }
+ else {
+ // Start distribution client
+ logger.debug(ModelLoaderMsgs.INITIALIZING, "Starting distribution client...");
+ IDistributionClientResult startResult = client.start();
+ if (startResult.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
+ String errorMsg = "Failed to start distribution client: "
+ + startResult.getDistributionMessageResult();
+ logger.error(ModelLoaderMsgs.ASDC_CONNECTION_ERROR, errorMsg);
+
+ // Kick off a timer to retry the SDC connection
+ timer = new Timer();
+ TimerTask task = new SdcConnectionJob(client, config, callback, timer);
+ timer.schedule(task, new Date(), 60000);
+ }
+ else {
+ logger.info(ModelLoaderMsgs.INITIALIZING, "Connection to SDC established");
+ }
+ }
+ }
+
+ /**
+ * Shut down the process.
+ */
+ private void shutdown() {
+ preShutdownOperations();
+
+ // TODO: Find a better way to shut down the model loader.
+ try {
+ // Give logs time to write to file
+ Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ // Nothing we can do at this point
+ }
+
+ Runtime.getRuntime().halt(1);
+ }
+
+ /** (non-Javadoc)
+ * @see org.openecomp.modelloader.service.ModelLoaderInterface#loadModel(java.lang.String)
+ */
+ @Override
+ public Response loadModel(String modelid) {
+ Response response = Response.ok("{\"model_loaded\":\"" + modelid + "\"}").build();
+
+ return response;
+ }
+
+ /** (non-Javadoc)
+ * @see org.openecomp.modelloader.service.ModelLoaderInterface#saveModel(java.lang.String, java.lang.String)
+ */
+ @Override
+ public Response saveModel(String modelid, String modelname) {
+ Response response = Response.ok("{\"model_saved\":\"" + modelid + "-" + modelname + "\"}")
+ .build();
+
+ return response;
+ }
+
+ @Override
+ public Response ingestModel(String modelid, HttpServletRequest req, String payload)
+ throws IOException {
+ Response response;
+
+ if (config.getIngestSimulatorEnabled()) {
+ logger.info(ModelLoaderMsgs.DISTRIBUTION_EVENT, "Received test artifact");
+
+ ModelArtifactHandler handler = new ModelArtifactHandler(config);
+ handler.loadModelTest(payload.getBytes());
+
+ response = Response.ok().build();
+ } else {
+ logger.debug("Simulation interface disabled");
+ response = Response.serverError().build();
+ }
+
+ return response;
+ }
}
--- /dev/null
+/**
+ * ============LICENSE_START=======================================================
+ * Model Loader
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ */
+package org.openecomp.modelloader.service;
+
+import java.util.Date;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import org.openecomp.cl.api.Logger;
+import org.openecomp.cl.eelf.LoggerFactory;
+import org.openecomp.modelloader.config.ModelLoaderConfig;
+import org.openecomp.modelloader.notification.EventCallback;
+import org.openecomp.sdc.api.IDistributionClient;
+import org.openecomp.sdc.api.results.IDistributionClientResult;
+import org.openecomp.sdc.utils.DistributionActionResultEnum;
+
+public class SdcConnectionJob extends TimerTask {
+ static Logger logger = LoggerFactory.getInstance().getLogger(SdcConnectionJob.class.getName());
+
+ private IDistributionClient client;
+ private ModelLoaderConfig config;
+ private EventCallback callback;
+ private Timer timer;
+
+ public SdcConnectionJob(IDistributionClient client,
+ ModelLoaderConfig config,
+ EventCallback callback,
+ Timer timer) {
+ this.client = client;
+ this.timer = timer;
+ this.callback = callback;
+ this.config = config;
+ }
+
+ @Override
+ public void run() {
+
+ IDistributionClientResult initResult = client.init(config, callback);
+
+ if (initResult.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
+ String errorMsg = "Failed to initialize distribution client: "
+ + initResult.getDistributionMessageResult();
+ logger.error(ModelLoaderMsgs.ASDC_CONNECTION_ERROR, errorMsg);
+ return;
+ }
+
+ IDistributionClientResult startResult = client.start();
+ if (startResult.getDistributionActionResult() != DistributionActionResultEnum.SUCCESS) {
+ String errorMsg = "Failed to start distribution client: "
+ + startResult.getDistributionMessageResult();
+ logger.error(ModelLoaderMsgs.ASDC_CONNECTION_ERROR, errorMsg);
+ return;
+ }
+
+ // Success. Cancel the timer job
+ timer.cancel();
+ logger.info(ModelLoaderMsgs.INITIALIZING, "Connection to SDC established");
+ }
+}
-/*-
- * ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.modelloader.util;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.json.XML;
-
-public class JsonXmlConverter {
-
- /**
- * Determines whether or not the supplied text string represents a valid
- * JSON structure or not.
- *
- * @param text - The text to be evaluated.
- *
- * @return - true if the string represents a valid JSON object,
- * false, otherwise.
- */
- public static boolean isValidJson(String text) {
- try {
- new JSONObject(text);
- } catch (JSONException ex) {
- try {
- new JSONArray(text);
- } catch (JSONException ex1) {
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Takes a text string representing a valid JSON structure and converts it to
- * an equivalent XML string.
- *
- * @param jsonText - The JSON string to convert to XML.
- *
- * @return - An XML string representation of the supplied JSON string.
- */
- public static String convertJsonToXml(String jsonText) {
- JSONObject jsonObj = new JSONObject(jsonText);
- String xmlText = XML.toString(jsonObj);
- return xmlText;
- }
-
- /**
- * Takes a text string representing a valid XML structure and converts it to
- * an equivalent JSON string.
- *
- * @param xmlText - The XML string to convert to JSON.
- *
- * @return - A JSON string representation of the supplied XML string.
- */
- public static String convertXmlToJson(String xmlText) {
- JSONObject jsonObj = XML.toJSONObject(xmlText);
- return jsonObj.toString();
- }
-}
+/**\r
+ * ============LICENSE_START=======================================================\r
+ * Model Loader\r
+ * ================================================================================\r
+ * Copyright © 2017 AT&T Intellectual Property.\r
+ * Copyright © 2017 Amdocs\r
+ * All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ *\r
+ * ECOMP and OpenECOMP are trademarks\r
+ * and service marks of AT&T Intellectual Property.\r
+ */\r
+package org.openecomp.modelloader.util;\r
+\r
+import org.json.JSONArray;\r
+import org.json.JSONException;\r
+import org.json.JSONObject;\r
+import org.json.XML;\r
+\r
+public class JsonXmlConverter {\r
+\r
+ /**\r
+ * Determines whether or not the supplied text string represents a valid\r
+ * JSON structure or not.\r
+ * \r
+ * @param text - The text to be evaluated.\r
+ * \r
+ * @return - true if the string represents a valid JSON object,\r
+ * false, otherwise.\r
+ */\r
+ public static boolean isValidJson(String text) {\r
+ try {\r
+ new JSONObject(text);\r
+ } catch (JSONException ex) {\r
+ try {\r
+ new JSONArray(text);\r
+ } catch (JSONException ex1) {\r
+ return false;\r
+ }\r
+ }\r
+\r
+ return true;\r
+ }\r
+\r
+ /**\r
+ * Takes a text string representing a valid JSON structure and converts it to\r
+ * an equivalent XML string.\r
+ * \r
+ * @param jsonText - The JSON string to convert to XML.\r
+ * \r
+ * @return - An XML string representation of the supplied JSON string.\r
+ */\r
+ public static String convertJsonToXml(String jsonText) {\r
+ JSONObject jsonObj = new JSONObject(jsonText);\r
+ String xmlText = XML.toString(jsonObj);\r
+ return xmlText;\r
+ }\r
+\r
+ /**\r
+ * Takes a text string representing a valid XML structure and converts it to\r
+ * an equivalent JSON string.\r
+ * \r
+ * @param xmlText - The XML string to convert to JSON.\r
+ * \r
+ * @return - A JSON string representation of the supplied XML string.\r
+ */\r
+ public static String convertXmlToJson(String xmlText) {\r
+ JSONObject jsonObj = XML.toJSONObject(xmlText);\r
+ return jsonObj.toString();\r
+ }\r
+}\r
+++ /dev/null
-###
-# ============LICENSE_START=======================================================
-# MODEL LOADER SERVICE
-# ================================================================================
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ============LICENSE_END=========================================================
-###
-
-#Resource key=Error Code|Message text|Resolution text |Description text
-#######
-#Newlines can be utilized to add some clarity ensuring continuing line
-#has atleast one leading space
-#ResourceKey=\
-# ERR0000E\
-# Sample error msg txt\
-# Sample resolution msg\
-# Sample description txt
-#
-######
-#Error code classification category
-#100 Permission errors
-#200 Availability errors/Timeouts
-#300 Data errors
-#400 Schema Interface type/validation errors
-#500 Business process errors
-#900 Unknown errors
-#
-########################################################################
-
-#AVAILABILITY ERRORS
-
-LOADING_FROM_FILE=\
- FILEMON2001I|\
- Loading service properties from file {0}|\
- None. Attempting to load file|\
- Attempting to load service properties from the given service file
-
-FILE_SUCCESSFULLY_LOADED=\
- FILEMON2002I|\
- File {0} is loaded into the map and the corresponding system properties have been refreshed|\
- None. Successfully loaded file|\
- The given service file and its properties were successfully loaded
-
-FILE_CANNOT_BE_LOADED=\
- FILEMON2003E|\
- File {0} cannot be loaded into the map|\
- Please check the file permissions and format of the file|\
- Unable to load the given service file due to an error
-
-CANNOT_READ_FILE_STREAM=\
- FILEMON2004E|\
- Error reading the file stream for file {0}|\
- Please ensure that the file exists and the permissions are set correctly|\
- Unable to read the file stream for the given file
-
-#UNKNOWN ERRORS
-
-FILE_LISTENER_ATTACH_FAILED=\
- FILEMON9002W|\
- Unable to attach file change listener to file {0} due to an internal error|\
- Failed to attach file change listener to the given file. Please check the reported exception for details|\
- The file will not be actively monitored for changes
-
-
-PROP_MAP_CREATION_FAILED=\
- FILEMON9001E|\
- Internal Error occurred while creating property map for service files|\
- Error occurred due to an internal issue. Please check the reported exception for details |\
- Failed to create a property map for the service files
-###
+###\r
# ============LICENSE_START=======================================================
# MODEL LOADER SERVICE
# ================================================================================
# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
+# Licensed under the Apache License, Version 2.0 (the "License");\r
+# you may not use this file except in compliance with the License.\r
+# You may obtain a copy of the License at\r
+# \r
+# http://www.apache.org/licenses/LICENSE-2.0\r
+# \r
+# Unless required by applicable law or agreed to in writing, software\r
+# distributed under the License is distributed on an "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+# See the License for the specific language governing permissions and\r
# limitations under the License.
-# ============LICENSE_END=========================================================
-###
-
-#Resource key=Error Code|Message text|Resolution text |Description text
-#######
-#Newlines can be utilized to add some clarity ensuring continuing line
-#has at least one leading space
-#ResourceKey=\
-# ERR0000E\
-# Sample error msg txt\
-# Sample resolution msg\
-# Sample description txt
-#
-######
-#Error code classification category
-#000 Info/Debug
-#100 Permission errors
-#200 Availability errors/Timeouts
-#300 Data errors
-#400 Schema Interface type/validation errors
-#500 Business process errors
-#900 Unknown errors
-#
-########################################################################
-
-# INFO Level Logs
-LOADING_CONFIGURATION=\
- MDLSVC0001I|\
- Loading configuration |\
- None. Attempting to load configuration|\
- Attempting to load Model Loader Service configuration
-
-STOPPING_CLIENT=\
- MDLSVC0002I|\
- Stopping distribution client|\
- None. Stopping service|\
- Stopping the Model Service distribution client
-
-DISTRIBUTION_EVENT=\
- MDLSVC0003I|\
- Distribution event: {0}|\
- None. Processing distribution.|\
- A distribution event was received from the ASDC
-
-AAI_REST_REQUEST_SUCCESS=\
- MDLSVC0004I|\
- Sent {0} request to {1}. Response: {2}|\
- None. Successfully sent REST request to AAI.|\
- The given request was sent to the specified endpoint.
-
-AAI_REST_REQUEST_UNSUCCESSFUL=\
- MDLSVC0005I|\
- Sent {0} request to {1}. Response code: {2}, Response message: {3}|\
- REST request to AAI unsuccessful. Check response code, and message. |\
- The given request was unsuccessful.
-
-DOWNLOAD_COMPLETE=\
- MDLSVC0006I|\
- Download of artifact {0} from ASDC complete. Result: {1}|\
- None.|\
- An artifact was downloaded from the ASDC
-
-EVENT_PUBLISHED=\
- MDLSVC0007I|\
- Published {0} event for artifact {1}. Result: {2}|\
- None.|\
- An event was published to the event bus
-
-# ERROR Level Logs
-ASDC_CONNECTION_ERROR=\
- MDLSVC2001E|\
- Unable to register with ASDC: {0}|\
- Check configuration. Check network connection to ASDC|\
- During initialization, was not able to register with the configured ASDC instance
-
-DISTRIBUTION_EVENT_ERROR=\
- MDLSVC2002E|\
- Distribution event error: {0}|\
- Check configuration. Check network connection to ASDC and UEB|\
- A failure occurred processing a distribution event
-
-AAI_REST_REQUEST_ERROR=\
- MDLSVC2003E|\
- Failed to send {0} request to {1}: {2}|\
- Check configuration. Check network connection to AAI.|\
- A failure occurred attempting to send a request to the AAI
-
-# DEBUG Level Logs
-INITIALIZING=\
- MDLSVC0001D|\
- init(): {0}|\
- None. Initializing service|\
- Debug information during model loader initialization
-
-
+# ============LICENSE_END=========================================================\r
+###\r
+\r
+#Resource key=Error Code|Message text|Resolution text |Description text\r
+#######\r
+#Newlines can be utilized to add some clarity ensuring continuing line\r
+#has at least one leading space\r
+#ResourceKey=\\r
+# ERR0000E\\r
+# Sample error msg txt\\r
+# Sample resolution msg\\r
+# Sample description txt\r
+#\r
+######\r
+#Error code classification category\r
+#000 Info/Debug\r
+#100 Permission errors\r
+#200 Availability errors/Timeouts\r
+#300 Data errors\r
+#400 Schema Interface type/validation errors\r
+#500 Business process errors\r
+#900 Unknown errors\r
+#\r
+########################################################################\r
+\r
+# INFO Level Logs\r
+LOADING_CONFIGURATION=\\r
+ MDLSVC0001I|\\r
+ Loading configuration |\\r
+ None. Attempting to load configuration|\\r
+ Attempting to load Model Loader Service configuration\r
+ \r
+STOPPING_CLIENT=\\r
+ MDLSVC0002I|\\r
+ Stopping distribution client|\\r
+ None. Stopping service|\\r
+ Stopping the Model Service distribution client\r
+ \r
+DISTRIBUTION_EVENT=\\r
+ MDLSVC0003I|\\r
+ Distribution event: {0}|\\r
+ None. Processing distribution.|\\r
+ A distribution event was received from the ASDC\r
+ \r
+AAI_REST_REQUEST_SUCCESS=\\r
+ MDLSVC0004I|\\r
+ Sent {0} request to {1}. Response: {2}|\\r
+ None. Successfully sent REST request to AAI.|\\r
+ The given request was sent to the specified endpoint.\r
+ \r
+AAI_REST_REQUEST_UNSUCCESSFUL=\\r
+ MDLSVC0005I|\\r
+ Sent {0} request to {1}. Response code: {2}, Response message: {3}|\\r
+ REST request to AAI unsuccessful. Check response code, and message. |\\r
+ The given request was unsuccessful. \r
+\r
+DOWNLOAD_COMPLETE=\\r
+ MDLSVC0006I|\\r
+ Download of artifact {0} from ASDC complete. Result: {1}|\\r
+ None.|\\r
+ An artifact was downloaded from the ASDC\r
+ \r
+EVENT_PUBLISHED=\\r
+ MDLSVC0007I|\\r
+ Published {0} event for artifact {1}. Result: {2}|\\r
+ None.|\\r
+ An event was published to the event bus\r
+ \r
+# ERROR Level Logs \r
+ASDC_CONNECTION_ERROR=\\r
+ MDLSVC2001E|\\r
+ Unable to register with ASDC: {0}|\\r
+ Check configuration. Check network connection to ASDC|\\r
+ During initialization, was not able to register with the configured ASDC instance\r
+ \r
+DISTRIBUTION_EVENT_ERROR=\\r
+ MDLSVC2002E|\\r
+ Distribution event error: {0}|\\r
+ Check configuration. Check network connection to ASDC and UEB|\\r
+ A failure occurred processing a distribution event\r
+ \r
+AAI_REST_REQUEST_ERROR=\\r
+ MDLSVC2003E|\\r
+ Failed to send {0} request to {1}: {2}|\\r
+ Check configuration. Check network connection to AAI.|\\r
+ A failure occurred attempting to send a request to the AAI\r
+\r
+ARTIFACT_PARSE_ERROR=\\r
+ MDLSVC2004E|\\r
+ Failed to parse artifact: {0}|\\r
+ Check artifact. |\\r
+ A failure occurred attempting to parse artifact from SDC\r
+ \r
+# DEBUG Level Logs \r
+INITIALIZING=\\r
+ MDLSVC0001D|\\r
+ init(): {0}|\\r
+ None. Initializing service|\\r
+ Debug information during model loader initialization\r
+ \r
+ \r
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r
+<!--\r
============LICENSE_START=======================================================
MODEL LOADER SERVICE
================================================================================
Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+ \r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+ \r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
limitations under the License.
- ============LICENSE_END=========================================================
- -->
-
-<xs:schema elementFormDefault="qualified" version="1.0"
- targetNamespace="http://org.openecomp.aai.inventory/v8" xmlns:tns="http://org.openecomp.aai.inventory/v8"
- xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- <xs:element name="inventory-item-data">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="property-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="property-value" type="xs:string"
- minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="inventory-item">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="inventory-item-type" type="xs:string"
- minOccurs="0" />
- <xs:element name="inventory-item-link" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:inventory-item-data" minOccurs="0"
- maxOccurs="unbounded" />
- <xs:element ref="tns:tagged-inventory-item-list"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="tagged-inventory-item-list">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:inventory-item" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="edge-tag-query-result">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:tagged-inventory-item-list"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="start-node-filter">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="property-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="property-value" type="xs:string"
- minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="include-node-filter">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="include-node-type" type="xs:string"
- minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="secondary-filter">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="property-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="filter-type" type="xs:string"
- minOccurs="0" />
- <xs:element name="property-value" type="xs:string"
- minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="edge-tag-query-request">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="edge-tag" type="xs:string" minOccurs="0" />
- <xs:element name="result-detail" type="xs:string"
- minOccurs="0" />
- <xs:element name="start-node-type" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:start-node-filter" minOccurs="0"
- maxOccurs="unbounded" />
- <xs:element ref="tns:include-node-filter" minOccurs="0"
- maxOccurs="unbounded" />
- <xs:element ref="tns:secondary-filter" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="result-data">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="resource-type" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-link" type="xs:string"
- minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="search-results">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:result-data" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="relationship-data">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="relationship-key" type="xs:string" />
- <xs:element name="relationship-value" type="xs:string" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="related-to-property">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="property-key" type="xs:string"
- minOccurs="0" />
- <xs:element name="property-value" type="xs:string"
- minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="relationship">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="related-to" type="xs:string" minOccurs="0" />
- <xs:element name="related-link" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-data" minOccurs="0"
- maxOccurs="unbounded" />
- <xs:element ref="tns:related-to-property" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="relationship-list">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:relationship" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="oam-network">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="network-uuid" type="xs:string" />
- <xs:element name="network-name" type="xs:string" />
- <xs:element name="cvlan-tag" type="xs:unsignedInt" />
- <xs:element name="ipv4-oam-gateway-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipv4-oam-gateway-address-prefix-length"
- type="xs:int" minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="oam-networks">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:oam-network" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="dvs-switch">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="switch-name" type="xs:string" />
- <xs:element name="vcenter-url" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="dvs-switches">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:dvs-switch" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="availability-zone">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="availability-zone-name" type="xs:string" />
- <xs:element name="hypervisor-type" type="xs:string" />
- <xs:element name="operational-state" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="az-and-dvs-switches">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:dvs-switches" minOccurs="0" />
- <xs:element ref="tns:availability-zone" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="sdn-zone-response">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:oam-networks" minOccurs="0" />
- <xs:element ref="tns:az-and-dvs-switches" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="search">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:edge-tag-query-result" minOccurs="0" />
- <xs:element ref="tns:edge-tag-query-request" minOccurs="0" />
- <xs:element ref="tns:search-results" minOccurs="0" />
- <xs:element ref="tns:sdn-zone-response" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="update-node-key">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="key-name" type="xs:string" minOccurs="0" />
- <xs:element name="key-value" type="xs:string" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="action-data">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="property-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="property-value" type="xs:string"
- minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="action">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="action-type" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:action-data" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="update">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="update-node-type" type="xs:string" />
- <xs:element ref="tns:update-node-key" minOccurs="0"
- maxOccurs="unbounded" />
- <xs:element name="update-node-uri" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:action" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="key-data">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="key-name" type="xs:string" minOccurs="0" />
- <xs:element name="key-value" type="xs:string" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="notify">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="event-id" type="xs:string" />
- <xs:element name="node-type" type="xs:string" minOccurs="0" />
- <xs:element name="event-trigger" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:key-data" minOccurs="0" maxOccurs="unbounded" />
- <xs:element name="selflink" type="xs:string" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="actions">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:update" minOccurs="0" />
- <xs:element ref="tns:notify" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="ctag-pool">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="target-pe" type="xs:string" />
- <xs:element name="availability-zone-name" type="xs:string" />
- <xs:element name="ctag-pool-purpose" type="xs:string" />
- <xs:element name="ctag-values" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="ctag-pools">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:ctag-pool" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="complex">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="physical-location-id" type="xs:string" />
- <xs:element name="data-center-code" type="xs:string"
- minOccurs="0" />
- <xs:element name="complex-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="identity-url" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="physical-location-type" type="xs:string" />
- <xs:element name="street1" type="xs:string" />
- <xs:element name="street2" type="xs:string" minOccurs="0" />
- <xs:element name="city" type="xs:string" />
- <xs:element name="state" type="xs:string" minOccurs="0" />
- <xs:element name="postal-code" type="xs:string" />
- <xs:element name="country" type="xs:string" />
- <xs:element name="region" type="xs:string" />
- <xs:element name="latitude" type="xs:string" minOccurs="0" />
- <xs:element name="longitude" type="xs:string" minOccurs="0" />
- <xs:element name="elevation" type="xs:string" minOccurs="0" />
- <xs:element name="lata" type="xs:string" minOccurs="0" />
- <xs:element ref="tns:ctag-pools" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="complexes">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:complex" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="volume-group">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="volume-group-id" type="xs:string" />
- <xs:element name="volume-group-name" type="xs:string" />
- <xs:element name="heat-stack-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="vnf-type" type="xs:string" />
- <xs:element name="orchestration-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="volume-groups">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:volume-group" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="volume">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="volume-id" type="xs:string" />
- <xs:element name="volume-selflink" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="volumes">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:volume" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="l3-interface-ipv4-address-list">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="l3-interface-ipv4-address" type="xs:string" />
- <xs:element name="l3-interface-ipv4-prefix-length" type="xs:unsignedInt"
- minOccurs="0" />
- <xs:element name="vlan-id-inner" type="xs:unsignedInt"
- minOccurs="0" />
- <xs:element name="vlan-id-outer" type="xs:unsignedInt"
- minOccurs="0" />
- <xs:element name="is-floating" type="xs:boolean"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="neutron-network-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="neutron-subnet-id" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="l3-interface-ipv6-address-list">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="l3-interface-ipv6-address" type="xs:string" />
- <xs:element name="l3-interface-ipv6-prefix-length" type="xs:unsignedInt"
- minOccurs="0" />
- <xs:element name="vlan-id-inner" type="xs:unsignedInt"
- minOccurs="0" />
- <xs:element name="vlan-id-outer" type="xs:unsignedInt"
- minOccurs="0" />
- <xs:element name="is-floating" type="xs:boolean"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="neutron-network-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="neutron-subnet-id" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vlan">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="vlan-interface" type="xs:string" />
- <xs:element name="vlan-id-inner" type="xs:unsignedInt"
- minOccurs="0" />
- <xs:element name="vlan-id-outer" type="xs:unsignedInt"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="speed-value" type="xs:string"
- minOccurs="0" />
- <xs:element name="speed-units" type="xs:string"
- minOccurs="0" />
- <xs:element name="vlan-description" type="xs:string"
- minOccurs="0" />
- <xs:element name="backdoor-connection" type="xs:string"
- minOccurs="0" />
- <xs:element name="vpn-id" type="xs:string" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- <xs:element ref="tns:l3-interface-ipv4-address-list"
- minOccurs="0" maxOccurs="unbounded" />
- <xs:element ref="tns:l3-interface-ipv6-address-list"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vlans">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:vlan" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="sriov-vf">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="pci-id" type="xs:string" />
- <xs:element name="vf-vlan-filter" type="xs:string"
- minOccurs="0" />
- <xs:element name="vf-mac-filter" type="xs:string"
- minOccurs="0" />
- <xs:element name="vf-vlan-strip" type="xs:boolean"
- minOccurs="0" />
- <xs:element name="vf-vlan-anti-spoof-check" type="xs:boolean"
- minOccurs="0" />
- <xs:element name="vf-mac-anti-spoof-check" type="xs:boolean"
- minOccurs="0" />
- <xs:element name="vf-mirrors" type="xs:string" minOccurs="0" />
- <xs:element name="vf-broadcast-allow" type="xs:boolean"
- minOccurs="0" />
- <xs:element name="vf-unknown-multicast-allow" type="xs:boolean"
- minOccurs="0" />
- <xs:element name="vf-unknown-unicast-allow" type="xs:boolean"
- minOccurs="0" />
- <xs:element name="vf-insert-stag" type="xs:boolean"
- minOccurs="0" />
- <xs:element name="vf-link-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="neutron-network-id" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="sriov-vfs">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:sriov-vf" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="l-interface">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="interface-name" type="xs:string" />
- <xs:element name="interface-role" type="xs:string"
- minOccurs="0" />
- <xs:element name="v6-wan-link-ip" type="xs:string"
- minOccurs="0" />
- <xs:element name="selflink" type="xs:string" minOccurs="0" />
- <xs:element name="interface-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="macaddr" type="xs:string" minOccurs="0" />
- <xs:element name="network-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="management-option" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:vlans" minOccurs="0" />
- <xs:element ref="tns:sriov-vfs" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- <xs:element ref="tns:l3-interface-ipv4-address-list"
- minOccurs="0" maxOccurs="unbounded" />
- <xs:element ref="tns:l3-interface-ipv6-address-list"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="l-interfaces">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:l-interface" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vserver">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="vserver-id" type="xs:string" />
- <xs:element name="vserver-name" type="xs:string" />
- <xs:element name="vserver-name2" type="xs:string"
- minOccurs="0" />
- <xs:element name="prov-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="vserver-selflink" type="xs:string" />
- <xs:element name="in-maint" type="xs:boolean" />
- <xs:element name="is-closed-loop-disabled" type="xs:boolean" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:volumes" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- <xs:element ref="tns:l-interfaces" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vservers">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:vserver" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="tenant">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="tenant-id" type="xs:string" />
- <xs:element name="tenant-name" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:vservers" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="tenants">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:tenant" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="flavor">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="flavor-id" type="xs:string" />
- <xs:element name="flavor-name" type="xs:string" />
- <xs:element name="flavor-vcpus" type="xs:int" minOccurs="0" />
- <xs:element name="flavor-ram" type="xs:int" minOccurs="0" />
- <xs:element name="flavor-disk" type="xs:int" minOccurs="0" />
- <xs:element name="flavor-ephemeral" type="xs:int"
- minOccurs="0" />
- <xs:element name="flavor-swap" type="xs:string"
- minOccurs="0" />
- <xs:element name="flavor-is-public" type="xs:boolean"
- minOccurs="0" />
- <xs:element name="flavor-selflink" type="xs:string" />
- <xs:element name="flavor-disabled" type="xs:boolean"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="flavors">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:flavor" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="group-assignment">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="group-id" type="xs:string" />
- <xs:element name="group-type" type="xs:string" />
- <xs:element name="group-name" type="xs:string" />
- <xs:element name="group-description" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="group-assignments">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:group-assignment" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="snapshot">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="snapshot-id" type="xs:string" />
- <xs:element name="snapshot-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="snapshot-architecture" type="xs:string"
- minOccurs="0" />
- <xs:element name="snapshot-os-distro" type="xs:string"
- minOccurs="0" />
- <xs:element name="snapshot-os-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="application" type="xs:string"
- minOccurs="0" />
- <xs:element name="application-vendor" type="xs:string"
- minOccurs="0" />
- <xs:element name="application-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="snapshot-selflink" type="xs:string"
- minOccurs="0" />
- <xs:element name="prev-snapshot-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="snapshots">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:snapshot" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="metadatum">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="metaname" type="xs:string" />
- <xs:element name="metaval" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="metadata">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:metadatum" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="image">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="image-id" type="xs:string" />
- <xs:element name="image-name" type="xs:string" />
- <xs:element name="image-architecture" type="xs:string"
- minOccurs="0" />
- <xs:element name="image-os-distro" type="xs:string" />
- <xs:element name="image-os-version" type="xs:string" />
- <xs:element name="application" type="xs:string"
- minOccurs="0" />
- <xs:element name="application-vendor" type="xs:string"
- minOccurs="0" />
- <xs:element name="application-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="image-selflink" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- <xs:element ref="tns:metadata" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="images">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:image" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="availability-zones">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:availability-zone" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="cloud-region">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="cloud-owner" type="xs:string" />
- <xs:element name="cloud-region-id" type="xs:string" />
- <xs:element name="cloud-type" type="xs:string" minOccurs="0" />
- <xs:element name="owner-defined-type" type="xs:string"
- minOccurs="0" />
- <xs:element name="cloud-region-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="identity-url" type="xs:string"
- minOccurs="0" />
- <xs:element name="cloud-zone" type="xs:string" minOccurs="0" />
- <xs:element name="complex-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:volume-groups" minOccurs="0" />
- <xs:element ref="tns:tenants" minOccurs="0" />
- <xs:element ref="tns:flavors" minOccurs="0" />
- <xs:element ref="tns:group-assignments" minOccurs="0" />
- <xs:element ref="tns:snapshots" minOccurs="0" />
- <xs:element ref="tns:images" minOccurs="0" />
- <xs:element ref="tns:dvs-switches" minOccurs="0" />
- <xs:element ref="tns:oam-networks" minOccurs="0" />
- <xs:element ref="tns:availability-zones" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="cloud-regions">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:cloud-region" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="network-profile">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="nm-profile-name" type="xs:string" />
- <xs:element name="community-string" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="network-profiles">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:network-profile" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="p-interface">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="interface-name" type="xs:string" />
- <xs:element name="speed-value" type="xs:string"
- minOccurs="0" />
- <xs:element name="speed-units" type="xs:string"
- minOccurs="0" />
- <xs:element name="port-description" type="xs:string"
- minOccurs="0" />
- <xs:element name="equipment-identifier" type="xs:string"
- minOccurs="0" />
- <xs:element name="interface-role" type="xs:string"
- minOccurs="0" />
- <xs:element name="interface-type" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- <xs:element ref="tns:l-interfaces" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="p-interfaces">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:p-interface" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="lag-interface">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="interface-name" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="speed-value" type="xs:string"
- minOccurs="0" />
- <xs:element name="speed-units" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- <xs:element ref="tns:l-interfaces" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="lag-interfaces">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:lag-interface" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="pserver">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="hostname" type="xs:string" />
- <xs:element name="ptnii-equip-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="number-of-cpus" type="xs:int"
- minOccurs="0" />
- <xs:element name="disk-in-gigabytes" type="xs:int"
- minOccurs="0" />
- <xs:element name="ram-in-megabytes" type="xs:int"
- minOccurs="0" />
- <xs:element name="equip-type" type="xs:string" minOccurs="0" />
- <xs:element name="equip-vendor" type="xs:string"
- minOccurs="0" />
- <xs:element name="equip-model" type="xs:string"
- minOccurs="0" />
- <xs:element name="fqdn" type="xs:string" minOccurs="0" />
- <xs:element name="pserver-selflink" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipv4-oam-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="serial-number" type="xs:string"
- minOccurs="0" />
- <xs:element name="pserver-id" type="xs:string" minOccurs="0" />
- <xs:element name="internet-topology" type="xs:string"
- minOccurs="0" />
- <xs:element name="in-maint" type="xs:boolean" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="pserver-name2" type="xs:string"
- minOccurs="0" />
- <xs:element name="purpose" type="xs:string" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- <xs:element ref="tns:p-interfaces" minOccurs="0" />
- <xs:element ref="tns:lag-interfaces" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="pservers">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:pserver" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="virtual-data-center">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="vdc-id" type="xs:string" />
- <xs:element name="vdc-name" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="virtual-data-centers">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:virtual-data-center" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="cloud-infrastructure">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:complexes" minOccurs="0" />
- <xs:element ref="tns:cloud-regions" minOccurs="0" />
- <xs:element ref="tns:network-profiles" minOccurs="0" />
- <xs:element ref="tns:pservers" minOccurs="0" />
- <xs:element ref="tns:virtual-data-centers" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="license-key-resource">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="uuid" type="xs:string" />
- <xs:element name="assignment-type" type="xs:string"
- minOccurs="0" />
- <xs:element name="assignment-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="assignment-group-uuid" type="xs:string" />
- <xs:element name="assignment-date" type="xs:string"
- minOccurs="0" />
- <xs:element name="name" type="xs:string" minOccurs="0" />
- <xs:element name="model-uuid" type="xs:string" minOccurs="0" />
- <xs:element name="model-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="license-key" type="xs:string"
- minOccurs="0" />
- <xs:element name="license-key-file-url" type="xs:string"
- minOccurs="0" />
- <xs:element name="supplier-release-list" type="xs:string"
- minOccurs="0" maxOccurs="unbounded" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="license-key-resources">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:license-key-resource" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="license-management">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:license-key-resources" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="connector">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="resource-instance-id" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="persona-model-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="persona-model-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="widget-model-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="widget-model-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- <xs:element ref="tns:metadata" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="connectors">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:connector" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="service-instance">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="service-instance-id" type="xs:string" />
- <xs:element name="service-instance-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="persona-model-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="persona-model-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="widget-model-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="widget-model-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="bandwidth-total" type="xs:string"
- minOccurs="0" />
- <xs:element name="bandwidth-up-wan1" type="xs:string"
- minOccurs="0" />
- <xs:element name="bandwidth-down-wan1" type="xs:string"
- minOccurs="0" />
- <xs:element name="bandwidth-up-wan2" type="xs:string"
- minOccurs="0" />
- <xs:element name="bandwidth-down-wan2" type="xs:string"
- minOccurs="0" />
- <xs:element name="vhn-portal-url" type="xs:string"
- minOccurs="0" />
- <xs:element name="operational-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="service-instance-location-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- <xs:element ref="tns:metadata" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="service-instances">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:service-instance" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="service-subscription">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="service-type" type="xs:string" />
- <xs:element name="temp-ub-sub-account-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:service-instances" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="service-subscriptions">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:service-subscription" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="customer">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="global-customer-id" type="xs:string" />
- <xs:element name="subscriber-name" type="xs:string" />
- <xs:element name="subscriber-type" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:service-subscriptions" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="customers">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:customer" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="business">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:connectors" minOccurs="0" />
- <xs:element ref="tns:customers" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vnf-image">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="uuid" type="xs:string" />
- <xs:element name="application" type="xs:string" />
- <xs:element name="application-vendor" type="xs:string" />
- <xs:element name="application-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="selflink" type="xs:string" minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vnf-images">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:vnf-image" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="service">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="service-id" type="xs:string" />
- <xs:element name="service-description" type="xs:string" />
- <xs:element name="service-selflink" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="service-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="services">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:service" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="service-capability">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="service-type" type="xs:string" />
- <xs:element name="vnf-type" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="service-capabilities">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:service-capability" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="element-choice-set">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="element-choice-set-uuid" type="xs:string" />
- <xs:element name="element-choice-set-name" type="xs:string" />
- <xs:element name="cardinality" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:model-elements" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="element-choice-sets">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:element-choice-set" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="constrained-element-set">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="constrained-element-set-uuid" type="xs:string" />
- <xs:element name="constraint-type" type="xs:string" />
- <xs:element name="check-type" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:element-choice-sets" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="constrained-element-sets">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:constrained-element-set" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="model-constraint">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="model-constraint-uuid" type="xs:string" />
- <xs:element name="constrained-element-set-uuid-to-replace"
- type="xs:string" />
- <xs:element ref="tns:constrained-element-sets" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="model-constraints">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:model-constraint" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="model-element">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="model-element-uuid" type="xs:string" />
- <xs:element name="new-data-del-flag" type="xs:string" />
- <xs:element name="cardinality" type="xs:string" />
- <xs:element name="linkage-points" minOccurs="0">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="linkage-point" type="xs:string"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:model-elements" minOccurs="0" />
- <xs:element ref="tns:model-constraints" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="model-elements">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:model-element" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="model">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="model-name-version-id" type="xs:string" />
- <xs:element name="model-type" type="xs:string" />
- <xs:element name="model-name" type="xs:string" />
- <xs:element name="model-id" type="xs:string" />
- <xs:element name="model-version" type="xs:string" />
- <xs:element name="model-description" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:model-elements" minOccurs="0" />
- <xs:element ref="tns:metadata" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="models">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:model" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="related-lookup">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="related-lookup-uuid" type="xs:string" />
- <xs:element name="source-node-type" type="xs:string" />
- <xs:element name="source-node-property" type="xs:string" />
- <xs:element name="target-node-type" type="xs:string" />
- <xs:element name="target-node-property" type="xs:string" />
- <xs:element name="property-collect-list" type="xs:string"
- minOccurs="0" maxOccurs="unbounded" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="related-lookups">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:related-lookup" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="property-constraint">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="property-constraint-uuid" type="xs:string" />
- <xs:element name="constraint-type" type="xs:string" />
- <xs:element name="property-name" type="xs:string" />
- <xs:element name="property-value" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="property-constraints">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:property-constraint" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="named-query-element">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="named-query-element-uuid" type="xs:string" />
- <xs:element name="property-collect-list" type="xs:string"
- minOccurs="0" maxOccurs="unbounded" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="property-limit-desc" type="xs:string"
- minOccurs="0" />
- <xs:element name="do-not-output" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:named-query-elements" minOccurs="0" />
- <xs:element ref="tns:related-lookups" minOccurs="0" />
- <xs:element ref="tns:property-constraints" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="named-query-elements">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:named-query-element" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="named-query">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="named-query-uuid" type="xs:string" />
- <xs:element name="named-query-name" type="xs:string" />
- <xs:element name="named-query-version" type="xs:string" />
- <xs:element name="required-input-params" minOccurs="0">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="required-input-param" type="xs:string"
- minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="description" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:named-query-elements" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="named-queries">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:named-query" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="service-design-and-creation">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:vnf-images" minOccurs="0" />
- <xs:element ref="tns:services" minOccurs="0" />
- <xs:element ref="tns:service-capabilities" minOccurs="0" />
- <xs:element ref="tns:models" minOccurs="0" />
- <xs:element ref="tns:named-queries" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="logical-link">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="link-name" type="xs:string" />
- <xs:element name="link-type" type="xs:string" />
- <xs:element name="speed-value" type="xs:string"
- minOccurs="0" />
- <xs:element name="speed-units" type="xs:string"
- minOccurs="0" />
- <xs:element name="ip-version" type="xs:string" minOccurs="0" />
- <xs:element name="routing-protocol" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="persona-model-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="persona-model-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="widget-model-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="widget-model-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="operational-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="link-role" type="xs:string" minOccurs="0" />
- <xs:element name="link-name2" type="xs:string" minOccurs="0" />
- <xs:element name="link-id" type="xs:string" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="logical-links">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:logical-link" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="class-of-service">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="cos" type="xs:string" />
- <xs:element name="probe-id" type="xs:string" minOccurs="0" />
- <xs:element name="probe-type" type="xs:string" minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="classes-of-service">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:class-of-service" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="site-pair">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="site-pair-id" type="xs:string" />
- <xs:element name="source-ip" type="xs:string" minOccurs="0" />
- <xs:element name="destination-ip" type="xs:string"
- minOccurs="0" />
- <xs:element name="ip-version" type="xs:string" minOccurs="0" />
- <xs:element name="destination-hostname" type="xs:string"
- minOccurs="0" />
- <xs:element name="destination-equip-type" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:classes-of-service" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="site-pairs">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:site-pair" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="routing-instance">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="routing-instance-id" type="xs:string" />
- <xs:element name="rpm-owner" type="xs:string" minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:site-pairs" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="routing-instances">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:routing-instance" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="site-pair-set">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="site-pair-set-id" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:routing-instances" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="site-pair-sets">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:site-pair-set" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vpn-binding">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="vpn-id" type="xs:string" />
- <xs:element name="vpn-name" type="xs:string" />
- <xs:element name="global-route-target" type="xs:string" />
- <xs:element name="vpn-platform" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vpn-bindings">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:vpn-binding" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vpls-pe">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="equipment-name" type="xs:string" />
- <xs:element name="prov-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipv4-oam-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="equipment-role" type="xs:string"
- minOccurs="0" />
- <xs:element name="vlan-id-outer" type="xs:unsignedInt"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- <xs:element ref="tns:p-interfaces" minOccurs="0" />
- <xs:element ref="tns:lag-interfaces" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vpls-pes">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:vpls-pe" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="multicast-configuration">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="multicast-configuration-id" type="xs:string" />
- <xs:element name="multicast-protocol" type="xs:string" />
- <xs:element name="rp-type" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="multicast-configurations">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:multicast-configuration" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="cvlan-tag-entry">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="cvlan-tag" type="xs:unsignedInt" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="cvlan-tags">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:cvlan-tag-entry" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="port-group">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="interface-id" type="xs:string" />
- <xs:element name="neutron-network-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="neutron-network-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="interface-role" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="port-group-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="port-group-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="switch-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="orchestration-status" type="xs:string" />
- <xs:element name="heat-stack-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="mso-catalog-key" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:cvlan-tags" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="port-groups">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:port-group" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vce">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="vnf-id" type="xs:string" />
- <xs:element name="vnf-name" type="xs:string" />
- <xs:element name="vnf-name2" type="xs:string" minOccurs="0" />
- <xs:element name="vnf-type" type="xs:string" />
- <xs:element name="service-id" type="xs:string" minOccurs="0" />
- <xs:element name="regional-resource-zone" type="xs:string"
- minOccurs="0" />
- <xs:element name="prov-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="operational-state" type="xs:string"
- minOccurs="0" />
- <xs:element name="license-key" type="xs:string"
- minOccurs="0" />
- <xs:element name="equipment-role" type="xs:string"
- minOccurs="0" />
- <xs:element name="orchestration-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="heat-stack-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="mso-catalog-key" type="xs:string"
- minOccurs="0" />
- <xs:element name="vpe-id" type="xs:string" minOccurs="0" />
- <xs:element name="v6-vce-wan-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipv4-oam-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipv4-loopback0-address" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:port-groups" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vces">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:vce" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vpe">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="vnf-id" type="xs:string" />
- <xs:element name="vnf-name" type="xs:string" />
- <xs:element name="vnf-name2" type="xs:string" minOccurs="0" />
- <xs:element name="vnf-type" type="xs:string" />
- <xs:element name="service-id" type="xs:string" minOccurs="0" />
- <xs:element name="regional-resource-zone" type="xs:string"
- minOccurs="0" />
- <xs:element name="prov-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="operational-state" type="xs:string"
- minOccurs="0" />
- <xs:element name="license-key" type="xs:string"
- minOccurs="0" />
- <xs:element name="equipment-role" type="xs:string"
- minOccurs="0" />
- <xs:element name="orchestration-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="heat-stack-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="mso-catalog-key" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipv4-oam-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipv4-oam-gateway-address-prefix-length"
- type="xs:int" minOccurs="0" />
- <xs:element name="ipv4-oam-gateway-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="v4-loopback0-ip-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="vlan-id-outer" type="xs:unsignedInt"
- minOccurs="0" />
- <xs:element name="as-number" type="xs:string" minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="summary-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="encrypted-access-flag" type="xs:boolean"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- <xs:element ref="tns:l-interfaces" minOccurs="0" />
- <xs:element ref="tns:lag-interfaces" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vpes">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:vpe" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vnfc">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="vnfc-name" type="xs:string" />
- <xs:element name="vnfc-function-code" type="xs:string" />
- <xs:element name="vnfc-type" type="xs:string" />
- <xs:element name="prov-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="orchestration-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipaddress-v4-oam-vip" type="xs:string"
- minOccurs="0" />
- <xs:element name="in-maint" type="xs:boolean" />
- <xs:element name="is-closed-loop-disabled" type="xs:boolean" />
- <xs:element name="group-notation" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vnfcs">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:vnfc" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="subnet">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="subnet-id" type="xs:string" />
- <xs:element name="subnet-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="neutron-subnet-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="gateway-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="network-start-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="cidr-mask" type="xs:string" minOccurs="0" />
- <xs:element name="ip-version" type="xs:string" minOccurs="0" />
- <xs:element name="orchestration-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="dhcp-enabled" type="xs:boolean" />
- <xs:element name="dhcp-start" type="xs:string" minOccurs="0" />
- <xs:element name="dhcp-end" type="xs:string" minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="subnets">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:subnet" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="ctag-assignment">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="vlan-id-inner" type="xs:unsignedInt" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="ctag-assignments">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:ctag-assignment" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="segmentation-assignment">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="segmentation-id" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="segmentation-assignments">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:segmentation-assignment" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="l3-network">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="network-id" type="xs:string" />
- <xs:element name="network-name" type="xs:string" />
- <xs:element name="network-type" type="xs:string"
- minOccurs="0" />
- <xs:element name="network-role" type="xs:string"
- minOccurs="0" />
- <xs:element name="network-technology" type="xs:string"
- minOccurs="0" />
- <xs:element name="neutron-network-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="is-bound-to-vpn" type="xs:boolean" />
- <xs:element name="service-id" type="xs:string" minOccurs="0" />
- <xs:element name="network-role-instance" type="xs:unsignedInt"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="orchestration-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="heat-stack-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="mso-catalog-key" type="xs:string"
- minOccurs="0" />
- <xs:element name="contrail-network-fqdn" type="xs:string"
- minOccurs="0" />
- <xs:element name="persona-model-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="persona-model-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="widget-model-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="widget-model-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="physical-network-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="is-provider-network" type="xs:boolean" />
- <xs:element name="is-shared-network" type="xs:boolean" />
- <xs:element name="is-external-network" type="xs:boolean" />
- <xs:element ref="tns:subnets" minOccurs="0" />
- <xs:element ref="tns:ctag-assignments" minOccurs="0" />
- <xs:element ref="tns:segmentation-assignments" minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="l3-networks">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:l3-network" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="network-policy">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="network-policy-id" type="xs:string" />
- <xs:element name="network-policy-fqdn" type="xs:string"
- minOccurs="0" />
- <xs:element name="heat-stack-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="network-policies">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:network-policy" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vf-module">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="vf-module-id" type="xs:string" />
- <xs:element name="vf-module-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="heat-stack-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="orchestration-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="is-base-vf-module" type="xs:boolean" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="persona-model-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="persona-model-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="widget-model-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="widget-model-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="contrail-service-instance-fqdn" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vf-modules">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:vf-module" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="generic-vnf">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="vnf-id" type="xs:string" />
- <xs:element name="vnf-name" type="xs:string" />
- <xs:element name="vnf-name2" type="xs:string" minOccurs="0" />
- <xs:element name="vnf-type" type="xs:string" />
- <xs:element name="service-id" type="xs:string" minOccurs="0" />
- <xs:element name="regional-resource-zone" type="xs:string"
- minOccurs="0" />
- <xs:element name="prov-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="operational-state" type="xs:string"
- minOccurs="0" />
- <xs:element name="license-key" type="xs:string"
- minOccurs="0" />
- <xs:element name="equipment-role" type="xs:string"
- minOccurs="0" />
- <xs:element name="orchestration-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="heat-stack-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="mso-catalog-key" type="xs:string"
- minOccurs="0" />
- <xs:element name="management-option" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipv4-oam-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipv4-loopback0-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="nm-lan-v6-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="management-v6-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="vcpu" type="xs:unsignedInt" minOccurs="0" />
- <xs:element name="vcpu-units" type="xs:string" minOccurs="0" />
- <xs:element name="vmemory" type="xs:unsignedInt"
- minOccurs="0" />
- <xs:element name="vmemory-units" type="xs:string"
- minOccurs="0" />
- <xs:element name="vdisk" type="xs:unsignedInt" minOccurs="0" />
- <xs:element name="vdisk-units" type="xs:string"
- minOccurs="0" />
- <xs:element name="in-maint" type="xs:boolean" />
- <xs:element name="is-closed-loop-disabled" type="xs:boolean" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="summary-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="encrypted-access-flag" type="xs:boolean"
- minOccurs="0" />
- <xs:element name="entitlement-assignment-group-uuid"
- type="xs:string" minOccurs="0" />
- <xs:element name="entitlement-resource-uuid" type="xs:string"
- minOccurs="0" />
- <xs:element name="license-assignment-group-uuid" type="xs:string"
- minOccurs="0" />
- <xs:element name="license-key-uuid" type="xs:string"
- minOccurs="0" />
- <xs:element name="persona-model-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="persona-model-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="widget-model-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="widget-model-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="as-number" type="xs:string" minOccurs="0" />
- <xs:element name="regional-resource-subzone" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- <xs:element ref="tns:l-interfaces" minOccurs="0" />
- <xs:element ref="tns:lag-interfaces" minOccurs="0" />
- <xs:element ref="tns:vf-modules" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="generic-vnfs">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:generic-vnf" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="lag-link">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="link-name" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="lag-links">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:lag-link" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="newvce">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="vnf-id2" type="xs:string" />
- <xs:element name="vnf-name" type="xs:string" />
- <xs:element name="vnf-name2" type="xs:string" minOccurs="0" />
- <xs:element name="vnf-type" type="xs:string" />
- <xs:element name="prov-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="operational-state" type="xs:string"
- minOccurs="0" />
- <xs:element name="license-key" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipv4-oam-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="equipment-role" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipv4-loopback0-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="orchestration-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="heat-stack-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="mso-catalog-key" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- <xs:element ref="tns:l-interfaces" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="newvces">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:newvce" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="pnf">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="pnf-name" type="xs:string" />
- <xs:element name="pnf-name2" type="xs:string" minOccurs="0" />
- <xs:element name="pnf-name2-source" type="xs:string"
- minOccurs="0" />
- <xs:element name="pnf-id" type="xs:string" minOccurs="0" />
- <xs:element name="equip-type" type="xs:string" minOccurs="0" />
- <xs:element name="equip-vendor" type="xs:string"
- minOccurs="0" />
- <xs:element name="equip-model" type="xs:string"
- minOccurs="0" />
- <xs:element name="management-option" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipaddress-v4-oam" type="xs:string"
- minOccurs="0" />
- <xs:element name="sw-version" type="xs:string" minOccurs="0" />
- <xs:element name="orchestration-status" type="xs:string"
- minOccurs="0" />
- <xs:element name="in-maint" type="xs:boolean" />
- <xs:element name="frame-id" type="xs:string" minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- <xs:element ref="tns:p-interfaces" minOccurs="0" />
- <xs:element ref="tns:lag-interfaces" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="pnfs">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:pnf" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="physical-link">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="link-name" type="xs:string" />
- <xs:element name="speed-value" type="xs:string"
- minOccurs="0" />
- <xs:element name="speed-units" type="xs:string"
- minOccurs="0" />
- <xs:element name="circuit-id" type="xs:string" minOccurs="0" />
- <xs:element name="dual-mode" type="xs:string" minOccurs="0" />
- <xs:element name="management-option" type="xs:string"
- minOccurs="0" />
- <xs:element name="service-provider-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="physical-links">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:physical-link" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vig-server">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="vig-address-type" type="xs:string" />
- <xs:element name="ipaddress-v4-vig" type="xs:string"
- minOccurs="0" maxOccurs="unbounded" />
- <xs:element name="ipaddress-v6-vig" type="xs:string"
- minOccurs="0" maxOccurs="unbounded" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vig-servers">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:vig-server" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="ipsec-configuration">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="ipsec-configuration-id" type="xs:string" />
- <xs:element name="requested-vig-address-type" type="xs:string"
- minOccurs="0" />
- <xs:element name="requested-encryption-strength" type="xs:string"
- minOccurs="0" />
- <xs:element name="requested-dmz-type" type="xs:string"
- minOccurs="0" />
- <xs:element name="shared-dmz-network-address" type="xs:string"
- minOccurs="0" />
- <xs:element name="requested-customer-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="ike-version" type="xs:string"
- minOccurs="0" />
- <xs:element name="ikev1-authentication" type="xs:string"
- minOccurs="0" />
- <xs:element name="ikev1-encryption" type="xs:string"
- minOccurs="0" />
- <xs:element name="ikev1-dh-group" type="xs:string"
- minOccurs="0" />
- <xs:element name="ikev1-am-group-id" type="xs:string"
- minOccurs="0" />
- <xs:element name="ikev1-am-password" type="xs:string"
- minOccurs="0" />
- <xs:element name="ikev1-sa-lifetime" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipsec-authentication" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipsec-encryption" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipsec-sa-lifetime" type="xs:string"
- minOccurs="0" />
- <xs:element name="ipsec-pfs" type="xs:string" minOccurs="0" />
- <xs:element name="xauth-userid" type="xs:string"
- minOccurs="0" />
- <xs:element name="xauth-user-password" type="xs:string"
- minOccurs="0" />
- <xs:element name="dpd-interval" type="xs:string"
- minOccurs="0" />
- <xs:element name="dpd-frequency" type="xs:string"
- minOccurs="0" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- <xs:element ref="tns:vig-servers" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="ipsec-configurations">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:ipsec-configuration" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="route-table-reference">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="route-table-reference-id" type="xs:string" />
- <xs:element name="route-table-reference-fqdn" type="xs:string" />
- <xs:element name="resource-version" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:relationship-list" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="route-table-references">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:route-table-reference" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="network">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:logical-links" minOccurs="0" />
- <xs:element ref="tns:site-pair-sets" minOccurs="0" />
- <xs:element ref="tns:vpn-bindings" minOccurs="0" />
- <xs:element ref="tns:vpls-pes" minOccurs="0" />
- <xs:element ref="tns:multicast-configurations" minOccurs="0" />
- <xs:element ref="tns:vces" minOccurs="0" />
- <xs:element ref="tns:vpes" minOccurs="0" />
- <xs:element ref="tns:vnfcs" minOccurs="0" />
- <xs:element ref="tns:l3-networks" minOccurs="0" />
- <xs:element ref="tns:network-policies" minOccurs="0" />
- <xs:element ref="tns:generic-vnfs" minOccurs="0" />
- <xs:element ref="tns:lag-links" minOccurs="0" />
- <xs:element ref="tns:newvces" minOccurs="0" />
- <xs:element ref="tns:pnfs" minOccurs="0" />
- <xs:element ref="tns:physical-links" minOccurs="0" />
- <xs:element ref="tns:ipsec-configurations" minOccurs="0" />
- <xs:element ref="tns:route-table-references" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="reserved-prop-names">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="last-mod-source-of-truth" type="xs:string"
- minOccurs="0" />
- <xs:element name="aai-node-type" type="xs:string"
- minOccurs="0" />
- <xs:element name="aai-created-ts" type="xs:unsignedInt"
- minOccurs="0" />
- <xs:element name="aai-unique-key" type="xs:string"
- minOccurs="0" />
- <xs:element name="aai-last-mod-ts" type="xs:unsignedInt"
- minOccurs="0" />
- <xs:element name="source-of-truth" type="xs:string"
- minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="edge-prop-names">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="edgeLabel" type="xs:string" minOccurs="0" />
- <xs:element name="direction" type="xs:string" minOccurs="0" />
- <xs:element name="multiplicityRule" type="xs:string"
- minOccurs="0" />
- <xs:element name="isParent" type="xs:boolean" minOccurs="0" />
- <xs:element name="usesResource" type="xs:boolean"
- minOccurs="0" />
- <xs:element name="hasDelTarget" type="xs:boolean"
- minOccurs="0" />
- <xs:element name="SVC-INFRA" type="xs:string" minOccurs="0" />
- <xs:element name="SVC-INFRA-REV" type="xs:string"
- minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="aai-internal">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:reserved-prop-names" minOccurs="0"
- maxOccurs="unbounded" />
- <xs:element ref="tns:edge-prop-names" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="inventory">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:search" minOccurs="0" />
- <xs:element ref="tns:actions" minOccurs="0" />
- <xs:element ref="tns:cloud-infrastructure" minOccurs="0" />
- <xs:element ref="tns:license-management" minOccurs="0" />
- <xs:element ref="tns:business" minOccurs="0" />
- <xs:element ref="tns:service-design-and-creation"
- minOccurs="0" />
- <xs:element ref="tns:network" minOccurs="0" />
- <xs:element ref="tns:aai-internal" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="notification-event-header">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="id" type="xs:string" minOccurs="0" />
- <xs:element name="timestamp" type="xs:string" minOccurs="0" />
- <xs:element name="source-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="domain" type="xs:string" minOccurs="0" />
- <xs:element name="sequence-number" type="xs:string"
- minOccurs="0" />
- <xs:element name="severity" type="xs:string" minOccurs="0" />
- <xs:element name="event-type" type="xs:string" minOccurs="0" />
- <xs:element name="version" type="xs:string" minOccurs="0" />
- <xs:element name="action" type="xs:string" minOccurs="0" />
- <xs:element name="entity-type" type="xs:string"
- minOccurs="0" />
- <xs:element name="top-entity-type" type="xs:string"
- minOccurs="0" />
- <xs:element name="entity-link" type="xs:string"
- minOccurs="0" />
- <xs:element name="status" type="xs:string" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="notification-event">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="cambria.partition" type="xs:string"
- minOccurs="0" />
- <xs:element ref="tns:notification-event-header"
- minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="query-parameters">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:named-query" minOccurs="0" />
- <xs:element ref="tns:model" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="instance-filter">
- <xs:complexType>
- <xs:sequence />
- </xs:complexType>
- </xs:element>
- <xs:element name="instance-filters">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:instance-filter" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="model-and-named-query-search">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:query-parameters" minOccurs="0" />
- <xs:element ref="tns:instance-filters" minOccurs="0" />
- <xs:element name="top-node-type" type="xs:string"
- minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="properties">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="property-name" type="xs:string"
- minOccurs="0" />
- <xs:element name="property-value" type="xs:string"
- minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="extra-properties">
- <xs:complexType>
- <xs:sequence />
- </xs:complexType>
- </xs:element>
- <xs:element name="inventory-response-item">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="model-name" type="xs:string" minOccurs="0" />
- <xs:element ref="tns:extra-properties" minOccurs="0" />
- <xs:element ref="tns:inventory-response-items" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="inventory-response-items">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:inventory-response-item" minOccurs="0"
- maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="response-list">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:inventory-response-items" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="extra-property">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="property-name" type="xs:string"
- minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="vnf">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="vnf-id" type="xs:string" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-</xs:schema>
+ ============LICENSE_END=========================================================\r
+ -->\r
+\r
+<xs:schema elementFormDefault="qualified" version="1.0"\r
+ targetNamespace="http://org.openecomp.aai.inventory/v8" xmlns:tns="http://org.openecomp.aai.inventory/v8"\r
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+\r
+ <xs:element name="inventory-item-data">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="property-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="property-value" type="xs:string"\r
+ minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="inventory-item">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="inventory-item-type" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="inventory-item-link" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:inventory-item-data" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ <xs:element ref="tns:tagged-inventory-item-list"\r
+ minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="tagged-inventory-item-list">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:inventory-item" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="edge-tag-query-result">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:tagged-inventory-item-list"\r
+ minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="start-node-filter">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="property-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="property-value" type="xs:string"\r
+ minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="include-node-filter">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="include-node-type" type="xs:string"\r
+ minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="secondary-filter">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="property-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="filter-type" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="property-value" type="xs:string"\r
+ minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="edge-tag-query-request">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="edge-tag" type="xs:string" minOccurs="0" />\r
+ <xs:element name="result-detail" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="start-node-type" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:start-node-filter" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ <xs:element ref="tns:include-node-filter" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ <xs:element ref="tns:secondary-filter" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="result-data">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="resource-type" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-link" type="xs:string"\r
+ minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="search-results">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:result-data" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="relationship-data">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="relationship-key" type="xs:string" />\r
+ <xs:element name="relationship-value" type="xs:string" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="related-to-property">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="property-key" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="property-value" type="xs:string"\r
+ minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="relationship">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="related-to" type="xs:string" minOccurs="0" />\r
+ <xs:element name="related-link" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-data" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ <xs:element ref="tns:related-to-property" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="relationship-list">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:relationship" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="oam-network">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="network-uuid" type="xs:string" />\r
+ <xs:element name="network-name" type="xs:string" />\r
+ <xs:element name="cvlan-tag" type="xs:unsignedInt" />\r
+ <xs:element name="ipv4-oam-gateway-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipv4-oam-gateway-address-prefix-length"\r
+ type="xs:int" minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="oam-networks">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:oam-network" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="dvs-switch">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="switch-name" type="xs:string" />\r
+ <xs:element name="vcenter-url" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="dvs-switches">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:dvs-switch" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="availability-zone">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="availability-zone-name" type="xs:string" />\r
+ <xs:element name="hypervisor-type" type="xs:string" />\r
+ <xs:element name="operational-state" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="az-and-dvs-switches">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:dvs-switches" minOccurs="0" />\r
+ <xs:element ref="tns:availability-zone" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="sdn-zone-response">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:oam-networks" minOccurs="0" />\r
+ <xs:element ref="tns:az-and-dvs-switches" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="search">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:edge-tag-query-result" minOccurs="0" />\r
+ <xs:element ref="tns:edge-tag-query-request" minOccurs="0" />\r
+ <xs:element ref="tns:search-results" minOccurs="0" />\r
+ <xs:element ref="tns:sdn-zone-response" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="update-node-key">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="key-name" type="xs:string" minOccurs="0" />\r
+ <xs:element name="key-value" type="xs:string" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="action-data">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="property-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="property-value" type="xs:string"\r
+ minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="action">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="action-type" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:action-data" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="update">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="update-node-type" type="xs:string" />\r
+ <xs:element ref="tns:update-node-key" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ <xs:element name="update-node-uri" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:action" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="key-data">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="key-name" type="xs:string" minOccurs="0" />\r
+ <xs:element name="key-value" type="xs:string" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="notify">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="event-id" type="xs:string" />\r
+ <xs:element name="node-type" type="xs:string" minOccurs="0" />\r
+ <xs:element name="event-trigger" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:key-data" minOccurs="0" maxOccurs="unbounded" />\r
+ <xs:element name="selflink" type="xs:string" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="actions">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:update" minOccurs="0" />\r
+ <xs:element ref="tns:notify" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="ctag-pool">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="target-pe" type="xs:string" />\r
+ <xs:element name="availability-zone-name" type="xs:string" />\r
+ <xs:element name="ctag-pool-purpose" type="xs:string" />\r
+ <xs:element name="ctag-values" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="ctag-pools">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:ctag-pool" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="complex">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="physical-location-id" type="xs:string" />\r
+ <xs:element name="data-center-code" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="complex-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="identity-url" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="physical-location-type" type="xs:string" />\r
+ <xs:element name="street1" type="xs:string" />\r
+ <xs:element name="street2" type="xs:string" minOccurs="0" />\r
+ <xs:element name="city" type="xs:string" />\r
+ <xs:element name="state" type="xs:string" minOccurs="0" />\r
+ <xs:element name="postal-code" type="xs:string" />\r
+ <xs:element name="country" type="xs:string" />\r
+ <xs:element name="region" type="xs:string" />\r
+ <xs:element name="latitude" type="xs:string" minOccurs="0" />\r
+ <xs:element name="longitude" type="xs:string" minOccurs="0" />\r
+ <xs:element name="elevation" type="xs:string" minOccurs="0" />\r
+ <xs:element name="lata" type="xs:string" minOccurs="0" />\r
+ <xs:element ref="tns:ctag-pools" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="complexes">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:complex" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="volume-group">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="volume-group-id" type="xs:string" />\r
+ <xs:element name="volume-group-name" type="xs:string" />\r
+ <xs:element name="heat-stack-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="vnf-type" type="xs:string" />\r
+ <xs:element name="orchestration-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="volume-groups">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:volume-group" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="volume">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="volume-id" type="xs:string" />\r
+ <xs:element name="volume-selflink" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="volumes">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:volume" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="l3-interface-ipv4-address-list">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="l3-interface-ipv4-address" type="xs:string" />\r
+ <xs:element name="l3-interface-ipv4-prefix-length" type="xs:unsignedInt"\r
+ minOccurs="0" />\r
+ <xs:element name="vlan-id-inner" type="xs:unsignedInt"\r
+ minOccurs="0" />\r
+ <xs:element name="vlan-id-outer" type="xs:unsignedInt"\r
+ minOccurs="0" />\r
+ <xs:element name="is-floating" type="xs:boolean"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="neutron-network-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="neutron-subnet-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="l3-interface-ipv6-address-list">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="l3-interface-ipv6-address" type="xs:string" />\r
+ <xs:element name="l3-interface-ipv6-prefix-length" type="xs:unsignedInt"\r
+ minOccurs="0" />\r
+ <xs:element name="vlan-id-inner" type="xs:unsignedInt"\r
+ minOccurs="0" />\r
+ <xs:element name="vlan-id-outer" type="xs:unsignedInt"\r
+ minOccurs="0" />\r
+ <xs:element name="is-floating" type="xs:boolean"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="neutron-network-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="neutron-subnet-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vlan">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="vlan-interface" type="xs:string" />\r
+ <xs:element name="vlan-id-inner" type="xs:unsignedInt"\r
+ minOccurs="0" />\r
+ <xs:element name="vlan-id-outer" type="xs:unsignedInt"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="speed-value" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="speed-units" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="vlan-description" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="backdoor-connection" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="vpn-id" type="xs:string" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ <xs:element ref="tns:l3-interface-ipv4-address-list"\r
+ minOccurs="0" maxOccurs="unbounded" />\r
+ <xs:element ref="tns:l3-interface-ipv6-address-list"\r
+ minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vlans">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:vlan" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="sriov-vf">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="pci-id" type="xs:string" />\r
+ <xs:element name="vf-vlan-filter" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="vf-mac-filter" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="vf-vlan-strip" type="xs:boolean"\r
+ minOccurs="0" />\r
+ <xs:element name="vf-vlan-anti-spoof-check" type="xs:boolean"\r
+ minOccurs="0" />\r
+ <xs:element name="vf-mac-anti-spoof-check" type="xs:boolean"\r
+ minOccurs="0" />\r
+ <xs:element name="vf-mirrors" type="xs:string" minOccurs="0" />\r
+ <xs:element name="vf-broadcast-allow" type="xs:boolean"\r
+ minOccurs="0" />\r
+ <xs:element name="vf-unknown-multicast-allow" type="xs:boolean"\r
+ minOccurs="0" />\r
+ <xs:element name="vf-unknown-unicast-allow" type="xs:boolean"\r
+ minOccurs="0" />\r
+ <xs:element name="vf-insert-stag" type="xs:boolean"\r
+ minOccurs="0" />\r
+ <xs:element name="vf-link-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="neutron-network-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="sriov-vfs">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:sriov-vf" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="l-interface">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="interface-name" type="xs:string" />\r
+ <xs:element name="interface-role" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="v6-wan-link-ip" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="selflink" type="xs:string" minOccurs="0" />\r
+ <xs:element name="interface-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="macaddr" type="xs:string" minOccurs="0" />\r
+ <xs:element name="network-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="management-option" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:vlans" minOccurs="0" />\r
+ <xs:element ref="tns:sriov-vfs" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ <xs:element ref="tns:l3-interface-ipv4-address-list"\r
+ minOccurs="0" maxOccurs="unbounded" />\r
+ <xs:element ref="tns:l3-interface-ipv6-address-list"\r
+ minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="l-interfaces">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:l-interface" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vserver">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="vserver-id" type="xs:string" />\r
+ <xs:element name="vserver-name" type="xs:string" />\r
+ <xs:element name="vserver-name2" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="prov-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="vserver-selflink" type="xs:string" />\r
+ <xs:element name="in-maint" type="xs:boolean" />\r
+ <xs:element name="is-closed-loop-disabled" type="xs:boolean" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:volumes" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ <xs:element ref="tns:l-interfaces" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vservers">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:vserver" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="tenant">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="tenant-id" type="xs:string" />\r
+ <xs:element name="tenant-name" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:vservers" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="tenants">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:tenant" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="flavor">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="flavor-id" type="xs:string" />\r
+ <xs:element name="flavor-name" type="xs:string" />\r
+ <xs:element name="flavor-vcpus" type="xs:int" minOccurs="0" />\r
+ <xs:element name="flavor-ram" type="xs:int" minOccurs="0" />\r
+ <xs:element name="flavor-disk" type="xs:int" minOccurs="0" />\r
+ <xs:element name="flavor-ephemeral" type="xs:int"\r
+ minOccurs="0" />\r
+ <xs:element name="flavor-swap" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="flavor-is-public" type="xs:boolean"\r
+ minOccurs="0" />\r
+ <xs:element name="flavor-selflink" type="xs:string" />\r
+ <xs:element name="flavor-disabled" type="xs:boolean"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="flavors">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:flavor" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="group-assignment">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="group-id" type="xs:string" />\r
+ <xs:element name="group-type" type="xs:string" />\r
+ <xs:element name="group-name" type="xs:string" />\r
+ <xs:element name="group-description" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="group-assignments">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:group-assignment" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="snapshot">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="snapshot-id" type="xs:string" />\r
+ <xs:element name="snapshot-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="snapshot-architecture" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="snapshot-os-distro" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="snapshot-os-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="application" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="application-vendor" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="application-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="snapshot-selflink" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="prev-snapshot-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="snapshots">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:snapshot" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="metadatum">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="metaname" type="xs:string" />\r
+ <xs:element name="metaval" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="metadata">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:metadatum" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="image">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="image-id" type="xs:string" />\r
+ <xs:element name="image-name" type="xs:string" />\r
+ <xs:element name="image-architecture" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="image-os-distro" type="xs:string" />\r
+ <xs:element name="image-os-version" type="xs:string" />\r
+ <xs:element name="application" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="application-vendor" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="application-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="image-selflink" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ <xs:element ref="tns:metadata" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="images">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:image" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="availability-zones">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:availability-zone" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="cloud-region">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="cloud-owner" type="xs:string" />\r
+ <xs:element name="cloud-region-id" type="xs:string" />\r
+ <xs:element name="cloud-type" type="xs:string" minOccurs="0" />\r
+ <xs:element name="owner-defined-type" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="cloud-region-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="identity-url" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="cloud-zone" type="xs:string" minOccurs="0" />\r
+ <xs:element name="complex-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:volume-groups" minOccurs="0" />\r
+ <xs:element ref="tns:tenants" minOccurs="0" />\r
+ <xs:element ref="tns:flavors" minOccurs="0" />\r
+ <xs:element ref="tns:group-assignments" minOccurs="0" />\r
+ <xs:element ref="tns:snapshots" minOccurs="0" />\r
+ <xs:element ref="tns:images" minOccurs="0" />\r
+ <xs:element ref="tns:dvs-switches" minOccurs="0" />\r
+ <xs:element ref="tns:oam-networks" minOccurs="0" />\r
+ <xs:element ref="tns:availability-zones" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="cloud-regions">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:cloud-region" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="network-profile">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="nm-profile-name" type="xs:string" />\r
+ <xs:element name="community-string" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="network-profiles">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:network-profile" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="p-interface">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="interface-name" type="xs:string" />\r
+ <xs:element name="speed-value" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="speed-units" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="port-description" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="equipment-identifier" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="interface-role" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="interface-type" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ <xs:element ref="tns:l-interfaces" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="p-interfaces">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:p-interface" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="lag-interface">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="interface-name" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="speed-value" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="speed-units" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ <xs:element ref="tns:l-interfaces" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="lag-interfaces">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:lag-interface" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="pserver">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="hostname" type="xs:string" />\r
+ <xs:element name="ptnii-equip-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="number-of-cpus" type="xs:int"\r
+ minOccurs="0" />\r
+ <xs:element name="disk-in-gigabytes" type="xs:int"\r
+ minOccurs="0" />\r
+ <xs:element name="ram-in-megabytes" type="xs:int"\r
+ minOccurs="0" />\r
+ <xs:element name="equip-type" type="xs:string" minOccurs="0" />\r
+ <xs:element name="equip-vendor" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="equip-model" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="fqdn" type="xs:string" minOccurs="0" />\r
+ <xs:element name="pserver-selflink" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipv4-oam-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="serial-number" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="pserver-id" type="xs:string" minOccurs="0" />\r
+ <xs:element name="internet-topology" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="in-maint" type="xs:boolean" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="pserver-name2" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="purpose" type="xs:string" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ <xs:element ref="tns:p-interfaces" minOccurs="0" />\r
+ <xs:element ref="tns:lag-interfaces" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="pservers">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:pserver" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="virtual-data-center">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="vdc-id" type="xs:string" />\r
+ <xs:element name="vdc-name" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="virtual-data-centers">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:virtual-data-center" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="cloud-infrastructure">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:complexes" minOccurs="0" />\r
+ <xs:element ref="tns:cloud-regions" minOccurs="0" />\r
+ <xs:element ref="tns:network-profiles" minOccurs="0" />\r
+ <xs:element ref="tns:pservers" minOccurs="0" />\r
+ <xs:element ref="tns:virtual-data-centers" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="license-key-resource">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="uuid" type="xs:string" />\r
+ <xs:element name="assignment-type" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="assignment-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="assignment-group-uuid" type="xs:string" />\r
+ <xs:element name="assignment-date" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="name" type="xs:string" minOccurs="0" />\r
+ <xs:element name="model-uuid" type="xs:string" minOccurs="0" />\r
+ <xs:element name="model-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="license-key" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="license-key-file-url" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="supplier-release-list" type="xs:string"\r
+ minOccurs="0" maxOccurs="unbounded" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="license-key-resources">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:license-key-resource" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="license-management">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:license-key-resources" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="connector">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="resource-instance-id" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="persona-model-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="persona-model-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="widget-model-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="widget-model-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ <xs:element ref="tns:metadata" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="connectors">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:connector" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="service-instance">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="service-instance-id" type="xs:string" />\r
+ <xs:element name="service-instance-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="persona-model-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="persona-model-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="widget-model-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="widget-model-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="bandwidth-total" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="bandwidth-up-wan1" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="bandwidth-down-wan1" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="bandwidth-up-wan2" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="bandwidth-down-wan2" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="vhn-portal-url" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="operational-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="service-instance-location-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ <xs:element ref="tns:metadata" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="service-instances">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:service-instance" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="service-subscription">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="service-type" type="xs:string" />\r
+ <xs:element name="temp-ub-sub-account-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:service-instances" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="service-subscriptions">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:service-subscription" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="customer">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="global-customer-id" type="xs:string" />\r
+ <xs:element name="subscriber-name" type="xs:string" />\r
+ <xs:element name="subscriber-type" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:service-subscriptions" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="customers">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:customer" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="business">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:connectors" minOccurs="0" />\r
+ <xs:element ref="tns:customers" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vnf-image">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="uuid" type="xs:string" />\r
+ <xs:element name="application" type="xs:string" />\r
+ <xs:element name="application-vendor" type="xs:string" />\r
+ <xs:element name="application-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="selflink" type="xs:string" minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vnf-images">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:vnf-image" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="service">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="service-id" type="xs:string" />\r
+ <xs:element name="service-description" type="xs:string" />\r
+ <xs:element name="service-selflink" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="service-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="services">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:service" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="service-capability">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="service-type" type="xs:string" />\r
+ <xs:element name="vnf-type" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="service-capabilities">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:service-capability" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="element-choice-set">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="element-choice-set-uuid" type="xs:string" />\r
+ <xs:element name="element-choice-set-name" type="xs:string" />\r
+ <xs:element name="cardinality" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:model-elements" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="element-choice-sets">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:element-choice-set" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="constrained-element-set">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="constrained-element-set-uuid" type="xs:string" />\r
+ <xs:element name="constraint-type" type="xs:string" />\r
+ <xs:element name="check-type" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:element-choice-sets" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="constrained-element-sets">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:constrained-element-set" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="model-constraint">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="model-constraint-uuid" type="xs:string" />\r
+ <xs:element name="constrained-element-set-uuid-to-replace"\r
+ type="xs:string" />\r
+ <xs:element ref="tns:constrained-element-sets" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="model-constraints">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:model-constraint" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="model-element">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="model-element-uuid" type="xs:string" />\r
+ <xs:element name="new-data-del-flag" type="xs:string" />\r
+ <xs:element name="cardinality" type="xs:string" />\r
+ <xs:element name="linkage-points" minOccurs="0">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="linkage-point" type="xs:string"\r
+ minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:model-elements" minOccurs="0" />\r
+ <xs:element ref="tns:model-constraints" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="model-elements">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:model-element" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="model">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="model-name-version-id" type="xs:string" />\r
+ <xs:element name="model-type" type="xs:string" />\r
+ <xs:element name="model-name" type="xs:string" />\r
+ <xs:element name="model-id" type="xs:string" />\r
+ <xs:element name="model-version" type="xs:string" />\r
+ <xs:element name="model-description" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:model-elements" minOccurs="0" />\r
+ <xs:element ref="tns:metadata" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="models">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:model" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="related-lookup">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="related-lookup-uuid" type="xs:string" />\r
+ <xs:element name="source-node-type" type="xs:string" />\r
+ <xs:element name="source-node-property" type="xs:string" />\r
+ <xs:element name="target-node-type" type="xs:string" />\r
+ <xs:element name="target-node-property" type="xs:string" />\r
+ <xs:element name="property-collect-list" type="xs:string"\r
+ minOccurs="0" maxOccurs="unbounded" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="related-lookups">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:related-lookup" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="property-constraint">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="property-constraint-uuid" type="xs:string" />\r
+ <xs:element name="constraint-type" type="xs:string" />\r
+ <xs:element name="property-name" type="xs:string" />\r
+ <xs:element name="property-value" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="property-constraints">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:property-constraint" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="named-query-element">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="named-query-element-uuid" type="xs:string" />\r
+ <xs:element name="property-collect-list" type="xs:string"\r
+ minOccurs="0" maxOccurs="unbounded" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="property-limit-desc" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="do-not-output" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:named-query-elements" minOccurs="0" />\r
+ <xs:element ref="tns:related-lookups" minOccurs="0" />\r
+ <xs:element ref="tns:property-constraints" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="named-query-elements">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:named-query-element" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="named-query">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="named-query-uuid" type="xs:string" />\r
+ <xs:element name="named-query-name" type="xs:string" />\r
+ <xs:element name="named-query-version" type="xs:string" />\r
+ <xs:element name="required-input-params" minOccurs="0">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="required-input-param" type="xs:string"\r
+ minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="description" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:named-query-elements" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="named-queries">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:named-query" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="service-design-and-creation">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:vnf-images" minOccurs="0" />\r
+ <xs:element ref="tns:services" minOccurs="0" />\r
+ <xs:element ref="tns:service-capabilities" minOccurs="0" />\r
+ <xs:element ref="tns:models" minOccurs="0" />\r
+ <xs:element ref="tns:named-queries" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="logical-link">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="link-name" type="xs:string" />\r
+ <xs:element name="link-type" type="xs:string" />\r
+ <xs:element name="speed-value" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="speed-units" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ip-version" type="xs:string" minOccurs="0" />\r
+ <xs:element name="routing-protocol" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="persona-model-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="persona-model-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="widget-model-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="widget-model-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="operational-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="link-role" type="xs:string" minOccurs="0" />\r
+ <xs:element name="link-name2" type="xs:string" minOccurs="0" />\r
+ <xs:element name="link-id" type="xs:string" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="logical-links">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:logical-link" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="class-of-service">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="cos" type="xs:string" />\r
+ <xs:element name="probe-id" type="xs:string" minOccurs="0" />\r
+ <xs:element name="probe-type" type="xs:string" minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="classes-of-service">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:class-of-service" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="site-pair">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="site-pair-id" type="xs:string" />\r
+ <xs:element name="source-ip" type="xs:string" minOccurs="0" />\r
+ <xs:element name="destination-ip" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ip-version" type="xs:string" minOccurs="0" />\r
+ <xs:element name="destination-hostname" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="destination-equip-type" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:classes-of-service" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="site-pairs">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:site-pair" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="routing-instance">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="routing-instance-id" type="xs:string" />\r
+ <xs:element name="rpm-owner" type="xs:string" minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:site-pairs" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="routing-instances">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:routing-instance" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="site-pair-set">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="site-pair-set-id" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:routing-instances" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="site-pair-sets">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:site-pair-set" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vpn-binding">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="vpn-id" type="xs:string" />\r
+ <xs:element name="vpn-name" type="xs:string" />\r
+ <xs:element name="global-route-target" type="xs:string" />\r
+ <xs:element name="vpn-platform" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vpn-bindings">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:vpn-binding" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vpls-pe">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="equipment-name" type="xs:string" />\r
+ <xs:element name="prov-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipv4-oam-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="equipment-role" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="vlan-id-outer" type="xs:unsignedInt"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ <xs:element ref="tns:p-interfaces" minOccurs="0" />\r
+ <xs:element ref="tns:lag-interfaces" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vpls-pes">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:vpls-pe" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="multicast-configuration">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="multicast-configuration-id" type="xs:string" />\r
+ <xs:element name="multicast-protocol" type="xs:string" />\r
+ <xs:element name="rp-type" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="multicast-configurations">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:multicast-configuration" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="cvlan-tag-entry">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="cvlan-tag" type="xs:unsignedInt" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="cvlan-tags">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:cvlan-tag-entry" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="port-group">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="interface-id" type="xs:string" />\r
+ <xs:element name="neutron-network-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="neutron-network-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="interface-role" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="port-group-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="port-group-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="switch-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="orchestration-status" type="xs:string" />\r
+ <xs:element name="heat-stack-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="mso-catalog-key" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:cvlan-tags" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="port-groups">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:port-group" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vce">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="vnf-id" type="xs:string" />\r
+ <xs:element name="vnf-name" type="xs:string" />\r
+ <xs:element name="vnf-name2" type="xs:string" minOccurs="0" />\r
+ <xs:element name="vnf-type" type="xs:string" />\r
+ <xs:element name="service-id" type="xs:string" minOccurs="0" />\r
+ <xs:element name="regional-resource-zone" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="prov-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="operational-state" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="license-key" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="equipment-role" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="orchestration-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="heat-stack-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="mso-catalog-key" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="vpe-id" type="xs:string" minOccurs="0" />\r
+ <xs:element name="v6-vce-wan-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipv4-oam-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipv4-loopback0-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:port-groups" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vces">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:vce" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vpe">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="vnf-id" type="xs:string" />\r
+ <xs:element name="vnf-name" type="xs:string" />\r
+ <xs:element name="vnf-name2" type="xs:string" minOccurs="0" />\r
+ <xs:element name="vnf-type" type="xs:string" />\r
+ <xs:element name="service-id" type="xs:string" minOccurs="0" />\r
+ <xs:element name="regional-resource-zone" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="prov-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="operational-state" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="license-key" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="equipment-role" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="orchestration-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="heat-stack-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="mso-catalog-key" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipv4-oam-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipv4-oam-gateway-address-prefix-length"\r
+ type="xs:int" minOccurs="0" />\r
+ <xs:element name="ipv4-oam-gateway-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="v4-loopback0-ip-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="vlan-id-outer" type="xs:unsignedInt"\r
+ minOccurs="0" />\r
+ <xs:element name="as-number" type="xs:string" minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="summary-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="encrypted-access-flag" type="xs:boolean"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ <xs:element ref="tns:l-interfaces" minOccurs="0" />\r
+ <xs:element ref="tns:lag-interfaces" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vpes">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:vpe" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vnfc">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="vnfc-name" type="xs:string" />\r
+ <xs:element name="vnfc-function-code" type="xs:string" />\r
+ <xs:element name="vnfc-type" type="xs:string" />\r
+ <xs:element name="prov-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="orchestration-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipaddress-v4-oam-vip" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="in-maint" type="xs:boolean" />\r
+ <xs:element name="is-closed-loop-disabled" type="xs:boolean" />\r
+ <xs:element name="group-notation" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vnfcs">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:vnfc" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="subnet">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="subnet-id" type="xs:string" />\r
+ <xs:element name="subnet-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="neutron-subnet-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="gateway-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="network-start-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="cidr-mask" type="xs:string" minOccurs="0" />\r
+ <xs:element name="ip-version" type="xs:string" minOccurs="0" />\r
+ <xs:element name="orchestration-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="dhcp-enabled" type="xs:boolean" />\r
+ <xs:element name="dhcp-start" type="xs:string" minOccurs="0" />\r
+ <xs:element name="dhcp-end" type="xs:string" minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="subnets">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:subnet" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="ctag-assignment">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="vlan-id-inner" type="xs:unsignedInt" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="ctag-assignments">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:ctag-assignment" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="segmentation-assignment">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="segmentation-id" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="segmentation-assignments">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:segmentation-assignment" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="l3-network">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="network-id" type="xs:string" />\r
+ <xs:element name="network-name" type="xs:string" />\r
+ <xs:element name="network-type" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="network-role" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="network-technology" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="neutron-network-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="is-bound-to-vpn" type="xs:boolean" />\r
+ <xs:element name="service-id" type="xs:string" minOccurs="0" />\r
+ <xs:element name="network-role-instance" type="xs:unsignedInt"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="orchestration-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="heat-stack-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="mso-catalog-key" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="contrail-network-fqdn" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="persona-model-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="persona-model-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="widget-model-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="widget-model-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="physical-network-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="is-provider-network" type="xs:boolean" />\r
+ <xs:element name="is-shared-network" type="xs:boolean" />\r
+ <xs:element name="is-external-network" type="xs:boolean" />\r
+ <xs:element ref="tns:subnets" minOccurs="0" />\r
+ <xs:element ref="tns:ctag-assignments" minOccurs="0" />\r
+ <xs:element ref="tns:segmentation-assignments" minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="l3-networks">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:l3-network" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="network-policy">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="network-policy-id" type="xs:string" />\r
+ <xs:element name="network-policy-fqdn" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="heat-stack-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="network-policies">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:network-policy" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vf-module">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="vf-module-id" type="xs:string" />\r
+ <xs:element name="vf-module-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="heat-stack-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="orchestration-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="is-base-vf-module" type="xs:boolean" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="persona-model-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="persona-model-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="widget-model-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="widget-model-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="contrail-service-instance-fqdn" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vf-modules">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:vf-module" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="generic-vnf">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="vnf-id" type="xs:string" />\r
+ <xs:element name="vnf-name" type="xs:string" />\r
+ <xs:element name="vnf-name2" type="xs:string" minOccurs="0" />\r
+ <xs:element name="vnf-type" type="xs:string" />\r
+ <xs:element name="service-id" type="xs:string" minOccurs="0" />\r
+ <xs:element name="regional-resource-zone" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="prov-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="operational-state" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="license-key" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="equipment-role" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="orchestration-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="heat-stack-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="mso-catalog-key" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="management-option" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipv4-oam-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipv4-loopback0-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="nm-lan-v6-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="management-v6-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="vcpu" type="xs:unsignedInt" minOccurs="0" />\r
+ <xs:element name="vcpu-units" type="xs:string" minOccurs="0" />\r
+ <xs:element name="vmemory" type="xs:unsignedInt"\r
+ minOccurs="0" />\r
+ <xs:element name="vmemory-units" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="vdisk" type="xs:unsignedInt" minOccurs="0" />\r
+ <xs:element name="vdisk-units" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="in-maint" type="xs:boolean" />\r
+ <xs:element name="is-closed-loop-disabled" type="xs:boolean" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="summary-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="encrypted-access-flag" type="xs:boolean"\r
+ minOccurs="0" />\r
+ <xs:element name="entitlement-assignment-group-uuid"\r
+ type="xs:string" minOccurs="0" />\r
+ <xs:element name="entitlement-resource-uuid" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="license-assignment-group-uuid" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="license-key-uuid" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="persona-model-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="persona-model-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="widget-model-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="widget-model-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="as-number" type="xs:string" minOccurs="0" />\r
+ <xs:element name="regional-resource-subzone" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ <xs:element ref="tns:l-interfaces" minOccurs="0" />\r
+ <xs:element ref="tns:lag-interfaces" minOccurs="0" />\r
+ <xs:element ref="tns:vf-modules" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="generic-vnfs">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:generic-vnf" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="lag-link">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="link-name" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="lag-links">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:lag-link" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="newvce">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="vnf-id2" type="xs:string" />\r
+ <xs:element name="vnf-name" type="xs:string" />\r
+ <xs:element name="vnf-name2" type="xs:string" minOccurs="0" />\r
+ <xs:element name="vnf-type" type="xs:string" />\r
+ <xs:element name="prov-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="operational-state" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="license-key" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipv4-oam-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="equipment-role" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipv4-loopback0-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="orchestration-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="heat-stack-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="mso-catalog-key" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ <xs:element ref="tns:l-interfaces" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="newvces">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:newvce" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="pnf">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="pnf-name" type="xs:string" />\r
+ <xs:element name="pnf-name2" type="xs:string" minOccurs="0" />\r
+ <xs:element name="pnf-name2-source" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="pnf-id" type="xs:string" minOccurs="0" />\r
+ <xs:element name="equip-type" type="xs:string" minOccurs="0" />\r
+ <xs:element name="equip-vendor" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="equip-model" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="management-option" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipaddress-v4-oam" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="sw-version" type="xs:string" minOccurs="0" />\r
+ <xs:element name="orchestration-status" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="in-maint" type="xs:boolean" />\r
+ <xs:element name="frame-id" type="xs:string" minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ <xs:element ref="tns:p-interfaces" minOccurs="0" />\r
+ <xs:element ref="tns:lag-interfaces" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="pnfs">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:pnf" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="physical-link">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="link-name" type="xs:string" />\r
+ <xs:element name="speed-value" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="speed-units" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="circuit-id" type="xs:string" minOccurs="0" />\r
+ <xs:element name="dual-mode" type="xs:string" minOccurs="0" />\r
+ <xs:element name="management-option" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="service-provider-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="physical-links">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:physical-link" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vig-server">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="vig-address-type" type="xs:string" />\r
+ <xs:element name="ipaddress-v4-vig" type="xs:string"\r
+ minOccurs="0" maxOccurs="unbounded" />\r
+ <xs:element name="ipaddress-v6-vig" type="xs:string"\r
+ minOccurs="0" maxOccurs="unbounded" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vig-servers">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:vig-server" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="ipsec-configuration">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="ipsec-configuration-id" type="xs:string" />\r
+ <xs:element name="requested-vig-address-type" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="requested-encryption-strength" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="requested-dmz-type" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="shared-dmz-network-address" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="requested-customer-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ike-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ikev1-authentication" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ikev1-encryption" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ikev1-dh-group" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ikev1-am-group-id" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ikev1-am-password" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ikev1-sa-lifetime" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipsec-authentication" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipsec-encryption" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipsec-sa-lifetime" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="ipsec-pfs" type="xs:string" minOccurs="0" />\r
+ <xs:element name="xauth-userid" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="xauth-user-password" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="dpd-interval" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="dpd-frequency" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ <xs:element ref="tns:vig-servers" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="ipsec-configurations">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:ipsec-configuration" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="route-table-reference">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="route-table-reference-id" type="xs:string" />\r
+ <xs:element name="route-table-reference-fqdn" type="xs:string" />\r
+ <xs:element name="resource-version" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:relationship-list" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="route-table-references">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:route-table-reference" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="network">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:logical-links" minOccurs="0" />\r
+ <xs:element ref="tns:site-pair-sets" minOccurs="0" />\r
+ <xs:element ref="tns:vpn-bindings" minOccurs="0" />\r
+ <xs:element ref="tns:vpls-pes" minOccurs="0" />\r
+ <xs:element ref="tns:multicast-configurations" minOccurs="0" />\r
+ <xs:element ref="tns:vces" minOccurs="0" />\r
+ <xs:element ref="tns:vpes" minOccurs="0" />\r
+ <xs:element ref="tns:vnfcs" minOccurs="0" />\r
+ <xs:element ref="tns:l3-networks" minOccurs="0" />\r
+ <xs:element ref="tns:network-policies" minOccurs="0" />\r
+ <xs:element ref="tns:generic-vnfs" minOccurs="0" />\r
+ <xs:element ref="tns:lag-links" minOccurs="0" />\r
+ <xs:element ref="tns:newvces" minOccurs="0" />\r
+ <xs:element ref="tns:pnfs" minOccurs="0" />\r
+ <xs:element ref="tns:physical-links" minOccurs="0" />\r
+ <xs:element ref="tns:ipsec-configurations" minOccurs="0" />\r
+ <xs:element ref="tns:route-table-references" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="reserved-prop-names">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="last-mod-source-of-truth" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="aai-node-type" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="aai-created-ts" type="xs:unsignedInt"\r
+ minOccurs="0" />\r
+ <xs:element name="aai-unique-key" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="aai-last-mod-ts" type="xs:unsignedInt"\r
+ minOccurs="0" />\r
+ <xs:element name="source-of-truth" type="xs:string"\r
+ minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="edge-prop-names">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="edgeLabel" type="xs:string" minOccurs="0" />\r
+ <xs:element name="direction" type="xs:string" minOccurs="0" />\r
+ <xs:element name="multiplicityRule" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="isParent" type="xs:boolean" minOccurs="0" />\r
+ <xs:element name="usesResource" type="xs:boolean"\r
+ minOccurs="0" />\r
+ <xs:element name="hasDelTarget" type="xs:boolean"\r
+ minOccurs="0" />\r
+ <xs:element name="SVC-INFRA" type="xs:string" minOccurs="0" />\r
+ <xs:element name="SVC-INFRA-REV" type="xs:string"\r
+ minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="aai-internal">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:reserved-prop-names" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ <xs:element ref="tns:edge-prop-names" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="inventory">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:search" minOccurs="0" />\r
+ <xs:element ref="tns:actions" minOccurs="0" />\r
+ <xs:element ref="tns:cloud-infrastructure" minOccurs="0" />\r
+ <xs:element ref="tns:license-management" minOccurs="0" />\r
+ <xs:element ref="tns:business" minOccurs="0" />\r
+ <xs:element ref="tns:service-design-and-creation"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:network" minOccurs="0" />\r
+ <xs:element ref="tns:aai-internal" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="notification-event-header">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="id" type="xs:string" minOccurs="0" />\r
+ <xs:element name="timestamp" type="xs:string" minOccurs="0" />\r
+ <xs:element name="source-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="domain" type="xs:string" minOccurs="0" />\r
+ <xs:element name="sequence-number" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="severity" type="xs:string" minOccurs="0" />\r
+ <xs:element name="event-type" type="xs:string" minOccurs="0" />\r
+ <xs:element name="version" type="xs:string" minOccurs="0" />\r
+ <xs:element name="action" type="xs:string" minOccurs="0" />\r
+ <xs:element name="entity-type" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="top-entity-type" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="entity-link" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="status" type="xs:string" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="notification-event">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="cambria.partition" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element ref="tns:notification-event-header"\r
+ minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="query-parameters">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:named-query" minOccurs="0" />\r
+ <xs:element ref="tns:model" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="instance-filter">\r
+ <xs:complexType>\r
+ <xs:sequence />\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="instance-filters">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:instance-filter" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="model-and-named-query-search">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:query-parameters" minOccurs="0" />\r
+ <xs:element ref="tns:instance-filters" minOccurs="0" />\r
+ <xs:element name="top-node-type" type="xs:string"\r
+ minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="properties">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="property-name" type="xs:string"\r
+ minOccurs="0" />\r
+ <xs:element name="property-value" type="xs:string"\r
+ minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="extra-properties">\r
+ <xs:complexType>\r
+ <xs:sequence />\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="inventory-response-item">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="model-name" type="xs:string" minOccurs="0" />\r
+ <xs:element ref="tns:extra-properties" minOccurs="0" />\r
+ <xs:element ref="tns:inventory-response-items" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="inventory-response-items">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:inventory-response-item" minOccurs="0"\r
+ maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="response-list">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="tns:inventory-response-items" minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="extra-property">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="property-name" type="xs:string"\r
+ minOccurs="0" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="vnf">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="vnf-id" type="xs:string" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+</xs:schema>\r
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
============LICENSE_START=======================================================
MODEL LOADER SERVICE
================================================================================
Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+ \r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+ \r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
limitations under the License.
- ============LICENSE_END=========================================================
- -->
-
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <xsd:element name="vnf-catalog">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="part-number-list" maxOccurs="unbounded">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="part-number" minOccurs="0"
- maxOccurs="1" type="xsd:normalizedString" />
- <xsd:element name="vnf-type" minOccurs="0" maxOccurs="1"
- type="xsd:normalizedString" />
- <xsd:element name="vendor-info" minOccurs="0"
- maxOccurs="1">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="vendor-name" minOccurs="0"
- maxOccurs="1" type="xsd:normalizedString" />
- <xsd:element name="vendor-part-number" minOccurs="0"
- maxOccurs="1" type="xsd:normalizedString" />
- <xsd:element name="vendor-model" minOccurs="0"
- maxOccurs="1" type="xsd:normalizedString" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="vcpu" minOccurs="0" maxOccurs="1">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="vcpu-default" minOccurs="0"
- maxOccurs="1" type="xsd:int" />
- <xsd:element name="vcpu-min" minOccurs="0"
- maxOccurs="1" type="xsd:int" />
- <xsd:element name="vcpu-max" minOccurs="0"
- maxOccurs="1" type="xsd:int" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="vmemory" minOccurs="0" maxOccurs="1">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="vmemory-default" minOccurs="0"
- maxOccurs="1" type="xsd:int" />
- <xsd:element name="vmemory-units" minOccurs="0"
- maxOccurs="1" type="xsd:normalizedString" />
- <xsd:element name="vmemory-min" minOccurs="0"
- maxOccurs="1" type="xsd:int" />
- <xsd:element name="vmemory-max" minOccurs="0"
- maxOccurs="1" type="xsd:int" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="vdisk" minOccurs="0" maxOccurs="1">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="vdisk-default" minOccurs="0"
- maxOccurs="1" type="xsd:int" />
- <xsd:element name="vdisk-units" minOccurs="0"
- maxOccurs="1" type="xsd:normalizedString" />
- <xsd:element name="vdisk-min" minOccurs="0"
- maxOccurs="1" type="xsd:int" />
- <xsd:element name="vdisk-max" minOccurs="0"
- maxOccurs="1" type="xsd:int" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="software-version-list" maxOccurs="unbounded">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="software-version" minOccurs="0"
- maxOccurs="1" type="xsd:normalizedString" />
- <xsd:element name="software-version-state"
- minOccurs="0" maxOccurs="1" type="xsd:int" />
- <xsd:element name="software-filetype" minOccurs="0"
- maxOccurs="1" type="xsd:normalizedString" />
- <xsd:element name="file-md5-value" minOccurs="0"
- maxOccurs="1" type="xsd:normalizedString" />
- <xsd:element name="software-filename" minOccurs="0"
- maxOccurs="1" type="xsd:normalizedString" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="vnf-features-list" maxOccurs="unbounded">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="vnf-feature" minOccurs="0"
- maxOccurs="1" type="xsd:normalizedString" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="license-list" minOccurs="0"
- maxOccurs="1">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="license-assignment-group"
- minOccurs="0" maxOccurs="1" type="xsd:normalizedString" />
- <xsd:element name="license-required" minOccurs="0"
- maxOccurs="1" type="xsd:normalizedString" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-</xsd:schema>
+ ============LICENSE_END=========================================================\r
+ -->\r
+\r
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">\r
+ <xsd:element name="vnf-catalog">\r
+ <xsd:complexType>\r
+ <xsd:sequence>\r
+ <xsd:element name="part-number-list" maxOccurs="unbounded">\r
+ <xsd:complexType>\r
+ <xsd:sequence>\r
+ <xsd:element name="part-number" minOccurs="0"\r
+ maxOccurs="1" type="xsd:normalizedString" />\r
+ <xsd:element name="vnf-type" minOccurs="0" maxOccurs="1"\r
+ type="xsd:normalizedString" />\r
+ <xsd:element name="vendor-info" minOccurs="0"\r
+ maxOccurs="1">\r
+ <xsd:complexType>\r
+ <xsd:sequence>\r
+ <xsd:element name="vendor-name" minOccurs="0"\r
+ maxOccurs="1" type="xsd:normalizedString" />\r
+ <xsd:element name="vendor-part-number" minOccurs="0"\r
+ maxOccurs="1" type="xsd:normalizedString" />\r
+ <xsd:element name="vendor-model" minOccurs="0"\r
+ maxOccurs="1" type="xsd:normalizedString" />\r
+ </xsd:sequence>\r
+ </xsd:complexType>\r
+ </xsd:element>\r
+ <xsd:element name="vcpu" minOccurs="0" maxOccurs="1">\r
+ <xsd:complexType>\r
+ <xsd:sequence>\r
+ <xsd:element name="vcpu-default" minOccurs="0"\r
+ maxOccurs="1" type="xsd:int" />\r
+ <xsd:element name="vcpu-min" minOccurs="0"\r
+ maxOccurs="1" type="xsd:int" />\r
+ <xsd:element name="vcpu-max" minOccurs="0"\r
+ maxOccurs="1" type="xsd:int" />\r
+ </xsd:sequence>\r
+ </xsd:complexType>\r
+ </xsd:element>\r
+ <xsd:element name="vmemory" minOccurs="0" maxOccurs="1">\r
+ <xsd:complexType>\r
+ <xsd:sequence>\r
+ <xsd:element name="vmemory-default" minOccurs="0"\r
+ maxOccurs="1" type="xsd:int" />\r
+ <xsd:element name="vmemory-units" minOccurs="0"\r
+ maxOccurs="1" type="xsd:normalizedString" />\r
+ <xsd:element name="vmemory-min" minOccurs="0"\r
+ maxOccurs="1" type="xsd:int" />\r
+ <xsd:element name="vmemory-max" minOccurs="0"\r
+ maxOccurs="1" type="xsd:int" />\r
+ </xsd:sequence>\r
+ </xsd:complexType>\r
+ </xsd:element>\r
+ <xsd:element name="vdisk" minOccurs="0" maxOccurs="1">\r
+ <xsd:complexType>\r
+ <xsd:sequence>\r
+ <xsd:element name="vdisk-default" minOccurs="0"\r
+ maxOccurs="1" type="xsd:int" />\r
+ <xsd:element name="vdisk-units" minOccurs="0"\r
+ maxOccurs="1" type="xsd:normalizedString" />\r
+ <xsd:element name="vdisk-min" minOccurs="0"\r
+ maxOccurs="1" type="xsd:int" />\r
+ <xsd:element name="vdisk-max" minOccurs="0"\r
+ maxOccurs="1" type="xsd:int" />\r
+ </xsd:sequence>\r
+ </xsd:complexType>\r
+ </xsd:element>\r
+ <xsd:element name="software-version-list" maxOccurs="unbounded">\r
+ <xsd:complexType>\r
+ <xsd:sequence>\r
+ <xsd:element name="software-version" minOccurs="0"\r
+ maxOccurs="1" type="xsd:normalizedString" />\r
+ <xsd:element name="software-version-state"\r
+ minOccurs="0" maxOccurs="1" type="xsd:int" />\r
+ <xsd:element name="software-filetype" minOccurs="0"\r
+ maxOccurs="1" type="xsd:normalizedString" />\r
+ <xsd:element name="file-md5-value" minOccurs="0"\r
+ maxOccurs="1" type="xsd:normalizedString" />\r
+ <xsd:element name="software-filename" minOccurs="0"\r
+ maxOccurs="1" type="xsd:normalizedString" />\r
+ </xsd:sequence>\r
+ </xsd:complexType>\r
+ </xsd:element>\r
+ <xsd:element name="vnf-features-list" maxOccurs="unbounded">\r
+ <xsd:complexType>\r
+ <xsd:sequence>\r
+ <xsd:element name="vnf-feature" minOccurs="0"\r
+ maxOccurs="1" type="xsd:normalizedString" />\r
+ </xsd:sequence>\r
+ </xsd:complexType>\r
+ </xsd:element>\r
+ <xsd:element name="license-list" minOccurs="0"\r
+ maxOccurs="1">\r
+ <xsd:complexType>\r
+ <xsd:sequence>\r
+ <xsd:element name="license-assignment-group"\r
+ minOccurs="0" maxOccurs="1" type="xsd:normalizedString" />\r
+ <xsd:element name="license-required" minOccurs="0"\r
+ maxOccurs="1" type="xsd:normalizedString" />\r
+ </xsd:sequence>\r
+ </xsd:complexType>\r
+ </xsd:element>\r
+ </xsd:sequence>\r
+ </xsd:complexType>\r
+ </xsd:element>\r
+ </xsd:sequence>\r
+ </xsd:complexType>\r
+ </xsd:element>\r
+</xsd:schema>\r
--- /dev/null
+{"context":{"contextClass":"ajsc.Context","contextId":"__module_ajsc_namespace_name__:__module_ajsc_namespace_version__","contextName":"__module_ajsc_namespace_name__","contextVersion":"__module_ajsc_namespace_version__","description":"__module_ajsc_namespace_name__ Context"}}
\ No newline at end of file
--- /dev/null
+{"context":{"contextClass":"ajsc.Context","contextId":"default:0","contextName":"default","contextVersion":"0","description":"Default Context"}}
\ No newline at end of file
--- /dev/null
+{"deploymentPackage":{"Class":"ajsc.DeploymentPackage","Id":"__module.ajsc.namespace.name__:__module_ajsc_namespace_version__","namespace":"__module_ajsc_namespace_name__","namespaceVersion":"__module_ajsc_namespace_version__","description":"__module_ajsc_namespace_name__ __module_ajsc_namespace_version__ - default description","userId":"ajsc"}}
\ No newline at end of file
--- /dev/null
+{"shiroRoleClass":"ajsc.auth.ShiroRole","shiroRoleId":"ajscadmin","name":"ajscadmin","permissions":"[ajscadmin:*, ajsc:*]"}
\ No newline at end of file
--- /dev/null
+{"shiroRoleClass":"ajsc.auth.ShiroRole","shiroRoleId":"contextadmin:__module_ajsc_namespace_name__","name":"contextadmin:__module_ajsc_namespace_name__","permissions":"[]"}
\ No newline at end of file
--- /dev/null
+{"shiroRoleClass":"ajsc.auth.ShiroRole","shiroRoleId":"contextadmin:default","name":"contextadmin:default","permissions":"[]"}
\ No newline at end of file
--- /dev/null
+{"shiroUserClass":"ajsc.auth.ShiroUser","shiroUserId":"ajsc","passwordHash":"9471697417008c880720ba54c6038791ad7e98f3b88136fe34f4d31a462dd27a","permissions":"[*:*]","username":"ajsc"}
\ No newline at end of file
--- /dev/null
+{"shiroUserRoleClass":"ajsc.auth.ShiroUserRole","shiroUserRoleId":"ajsc:ajscadmin","roleId":"ajscadmin","userId":"ajsc"}
\ No newline at end of file
--- /dev/null
+{"shiroUserRoleClass":"ajsc.auth.ShiroUserRole","shiroUserRoleId":"ajsc:contextadmin:__module_ajsc_namespace_name__","roleId":"contextadmin:__module_ajsc_namespace_name__","userId":"ajsc"}
\ No newline at end of file
--- /dev/null
+{"shiroUserRoleClass":"ajsc.auth.ShiroUserRole","shiroUserRoleId":"ajsc:contextadmin:default","roleId":"contextadmin:default","userId":"ajsc"}
\ No newline at end of file
+++ /dev/null
-<!--
- ============LICENSE_START=======================================================
- MODEL LOADER SERVICE
- ================================================================================
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ============LICENSE_END=========================================================
- -->
-
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:mvc="http://www.springframework.org/schema/mvc"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
- http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
-
-</beans>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ============LICENSE_START=======================================================
- MODEL LOADER SERVICE
- ================================================================================
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ============LICENSE_END=========================================================
- -->
-
-<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
- <display-name>model-loader</display-name>
-
- <listener>
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
-
- <servlet>
- <servlet-name>rest</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>rest</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
-</web-app>
-/*-
+/**
* ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
+ * Model Loader
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
*/
-
package org.openecomp.modelloader.config;
import static org.junit.Assert.assertEquals;
Properties props = new Properties();
props.setProperty("ml.distribution.ARTIFACT_TYPES",
"MODEL_INVENTORY_PROFILE,MODEL_QUERY_SPEC,VNF_CATALOG");
- ModelLoaderConfig config = new ModelLoaderConfig(props);
+ ModelLoaderConfig config = new ModelLoaderConfig(props, null);
List<String> types = config.getRelevantArtifactTypes();
System.out.println("Encrypt " + testPass + " ==> " + encryptedTestPass);
props.put(ModelLoaderConfig.PROP_ML_DISTRIBUTION_PASSWORD, encryptedTestPass);
- ModelLoaderConfig config = new ModelLoaderConfig(props);
+ ModelLoaderConfig config = new ModelLoaderConfig(props, null);
assertEquals(testPass, config.getPassword());
}
System.out.println("Encrypt " + testPass + " ==> " + encryptedTestPass);
props.put(ModelLoaderConfig.PROP_ML_DISTRIBUTION_KEYSTORE_PASSWORD, encryptedTestPass);
- ModelLoaderConfig config = new ModelLoaderConfig(props);
+ ModelLoaderConfig config = new ModelLoaderConfig(props, null);
assertEquals(testPass, config.getKeyStorePassword());
}
String encryptedTestPassword = Password.obfuscate(testPassword);
props.put(ModelLoaderConfig.PROP_AAI_AUTHENTICATION_PASSWORD, encryptedTestPassword);
- ModelLoaderConfig config = new ModelLoaderConfig(props);
+ ModelLoaderConfig config = new ModelLoaderConfig(props, null);
assertEquals(testPassword, config.getAaiAuthenticationPassword());
}
props.load(
new FileInputStream("src/test/resources/model-loader-empty-auth-password.properties"));
- ModelLoaderConfig config = new ModelLoaderConfig(props);
+ ModelLoaderConfig config = new ModelLoaderConfig(props, null);
AaiRestClient aaiClient = new AaiRestClient(config);
assertFalse("Empty AAI Password should result in no basic authentication",
aaiClient.useBasicAuth());
props.load(new FileInputStream("src/test/resources/model-loader-no-auth-password.properties"));
- config = new ModelLoaderConfig(props);
+ config = new ModelLoaderConfig(props, null);
aaiClient = new AaiRestClient(config);
assertFalse("No AAI Password should result in no basic authentication",
aaiClient.useBasicAuth());
}
+
+ @Test
+ public void testGetUrls() {
+ Properties props = new Properties();
+ props.put(ModelLoaderConfig.PROP_AAI_MODEL_RESOURCE_URL, "/aai/v*/service-design-and-creation/models/model/");
+ props.put(ModelLoaderConfig.PROP_AAI_NAMED_QUERY_RESOURCE_URL, "/aai/v*/service-design-and-creation/named-queries/named-query/");
+ ModelLoaderConfig config = new ModelLoaderConfig(props, null);
+
+ assertEquals("/aai/v9/service-design-and-creation/models/model/", config.getAaiModelUrl("v9"));
+ assertEquals("/aai/v10/service-design-and-creation/named-queries/named-query/", config.getAaiNamedQueryUrl("v10"));
+ }
}
-/*-
- * ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.modelloader.entity.catalog;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mockito;
-import org.openecomp.modelloader.config.ModelLoaderConfig;
-import org.openecomp.modelloader.entity.Artifact;
-import org.openecomp.modelloader.restclient.AaiRestClient;
-import org.openecomp.modelloader.restclient.AaiRestClient.MimeType;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-import com.sun.jersey.api.client.ClientResponse;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({ VnfCatalogArtifactHandler.class, ClientResponse.class, AaiRestClient.class })
-public class VnfCatalogArtifactHandlerTest {
-
- protected static String CONFIG_FILE = "model-loader.properties";
-
- @Test
- public void testWithMocks() throws Exception {
-
- Properties configProperties = new Properties();
- try {
- configProperties.load(this.getClass().getClassLoader().getResourceAsStream(CONFIG_FILE));
- } catch (IOException e) {
- fail();
- }
- ModelLoaderConfig config = new ModelLoaderConfig(configProperties);
-
- ClientResponse mockGetResp = PowerMockito.mock(ClientResponse.class);
- PowerMockito.when(mockGetResp.getStatus()).thenReturn(200).thenReturn(200).thenReturn(404)
- .thenReturn(404).thenReturn(200); // only second two will be PUT
- ClientResponse mockPutResp = PowerMockito.mock(ClientResponse.class);
- PowerMockito.when(mockPutResp.getStatus()).thenReturn(201);
-
- AaiRestClient mockRestClient = PowerMockito.mock(AaiRestClient.class);
- PowerMockito.whenNew(AaiRestClient.class).withAnyArguments().thenReturn(mockRestClient);
- PowerMockito.when(mockRestClient.getResource(Mockito.anyString(), Mockito.anyString(),
- Mockito.any(MimeType.class))).thenReturn(mockGetResp);
- PowerMockito.when(mockRestClient.putResource(Mockito.anyString(), Mockito.anyString(),
- Mockito.anyString(), Mockito.any(MimeType.class))).thenReturn(mockPutResp);
-
- VnfCatalogArtifactHandler vnfCAH = new VnfCatalogArtifactHandler(config);
-
- String examplePath = "src/test/resources/vnfcatalogexample.xml";
-
- byte[] encoded = Files.readAllBytes(Paths.get(examplePath));
- String payload = new String(encoded, "utf-8");
-
- VnfCatalogArtifact artifact = new VnfCatalogArtifact(payload);
- List<Artifact> artifacts = new ArrayList<Artifact>();
- artifacts.add(artifact);
-
- String distributionID = "test";
-
- assertTrue(vnfCAH.pushArtifacts(artifacts, distributionID));
- // times(2) bc with above get returns should only get to this part twice
- ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class);
- Mockito.verify(mockRestClient, Mockito.times(2)).putResource(Mockito.anyString(),
- argument.capture(), Mockito.anyString(), Mockito.any(MimeType.class));
- assertTrue(argument.getAllValues().get(0).contains("5.2.5"));
- assertTrue(argument.getAllValues().get(1).contains("5.2.4"));
- }
-}
+/**\r
+ * ============LICENSE_START=======================================================\r
+ * Model Loader\r
+ * ================================================================================\r
+ * Copyright © 2017 AT&T Intellectual Property.\r
+ * Copyright © 2017 Amdocs\r
+ * All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ *\r
+ * ECOMP and OpenECOMP are trademarks\r
+ * and service marks of AT&T Intellectual Property.\r
+ */\r
+package org.openecomp.modelloader.entity.catalog;\r
+\r
+import static org.junit.Assert.assertTrue;\r
+import static org.junit.Assert.fail;\r
+\r
+import java.io.IOException;\r
+import java.nio.file.Files;\r
+import java.nio.file.Paths;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+import java.util.Properties;\r
+\r
+import org.junit.Test;\r
+import org.junit.runner.RunWith;\r
+import org.mockito.ArgumentCaptor;\r
+import org.mockito.Mockito;\r
+import org.openecomp.modelloader.config.ModelLoaderConfig;\r
+import org.openecomp.modelloader.entity.Artifact;\r
+import org.openecomp.modelloader.restclient.AaiRestClient;\r
+import org.openecomp.modelloader.restclient.AaiRestClient.MimeType;\r
+import org.powermock.api.mockito.PowerMockito;\r
+import org.powermock.core.classloader.annotations.PrepareForTest;\r
+import org.powermock.modules.junit4.PowerMockRunner;\r
+\r
+import com.sun.jersey.api.client.ClientResponse;\r
+\r
+@RunWith(PowerMockRunner.class)\r
+@PrepareForTest({ VnfCatalogArtifactHandler.class, ClientResponse.class, AaiRestClient.class })\r
+public class VnfCatalogArtifactHandlerTest {\r
+\r
+ protected static String CONFIG_FILE = "model-loader.properties";\r
+\r
+ @Test\r
+ public void testWithMocks() throws Exception {\r
+\r
+ Properties configProperties = new Properties();\r
+ try {\r
+ configProperties.load(this.getClass().getClassLoader().getResourceAsStream(CONFIG_FILE));\r
+ } catch (IOException e) {\r
+ fail();\r
+ }\r
+ ModelLoaderConfig config = new ModelLoaderConfig(configProperties, null);\r
+\r
+ ClientResponse mockGetResp = PowerMockito.mock(ClientResponse.class);\r
+ PowerMockito.when(mockGetResp.getStatus()).thenReturn(200).thenReturn(200).thenReturn(404)\r
+ .thenReturn(404).thenReturn(200); // only second two will be PUT\r
+ ClientResponse mockPutResp = PowerMockito.mock(ClientResponse.class);\r
+ PowerMockito.when(mockPutResp.getStatus()).thenReturn(201);\r
+\r
+ AaiRestClient mockRestClient = PowerMockito.mock(AaiRestClient.class);\r
+ PowerMockito.whenNew(AaiRestClient.class).withAnyArguments().thenReturn(mockRestClient);\r
+ PowerMockito.when(mockRestClient.getResource(Mockito.anyString(), Mockito.anyString(),\r
+ Mockito.any(MimeType.class))).thenReturn(mockGetResp);\r
+ PowerMockito.when(mockRestClient.putResource(Mockito.anyString(), Mockito.anyString(),\r
+ Mockito.anyString(), Mockito.any(MimeType.class))).thenReturn(mockPutResp);\r
+\r
+ VnfCatalogArtifactHandler vnfCAH = new VnfCatalogArtifactHandler(config);\r
+\r
+ String examplePath = "src/test/resources/vnfcatalogexample.xml";\r
+\r
+ byte[] encoded = Files.readAllBytes(Paths.get(examplePath));\r
+ String payload = new String(encoded, "utf-8");\r
+\r
+ VnfCatalogArtifact artifact = new VnfCatalogArtifact(payload);\r
+ List<Artifact> artifacts = new ArrayList<Artifact>();\r
+ artifacts.add(artifact);\r
+\r
+ String distributionID = "test";\r
+\r
+ assertTrue(vnfCAH.pushArtifacts(artifacts, distributionID));\r
+ // times(2) bc with above get returns should only get to this part twice\r
+ ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class);\r
+ Mockito.verify(mockRestClient, Mockito.times(2)).putResource(Mockito.anyString(),\r
+ argument.capture(), Mockito.anyString(), Mockito.any(MimeType.class));\r
+ assertTrue(argument.getAllValues().get(0).contains("5.2.5"));\r
+ assertTrue(argument.getAllValues().get(1).contains("5.2.4"));\r
+ }\r
+}\r
-/*-
+/**
* ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
+ * Model Loader
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
*/
-
package org.openecomp.modelloader.entity.model;
import static org.junit.Assert.assertTrue;
public class ModelArtifactParserTest {
- @Test
- public void testParseModelFileNoDeps() throws Exception {
- final String MODEL_FILE = "src/test/resources/models/vnf-model.xml";
-
- try {
- byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE));
-
- ModelArtifactParser parser = new ModelArtifactParser();
- List<Artifact> modelList = parser.parse(xmlBytes, "test-artifact");
-
- assertTrue(modelList.size() == 1);
-
- ModelArtifact model = (ModelArtifact) modelList.get(0);
- System.out.println(model.toString());
-
- assertTrue(model.getNameVersionId().equalsIgnoreCase("model-vid"));
- assertTrue(model.getType().toString().equalsIgnoreCase("MODEL"));
- assertTrue(model.getDependentModelIds().size() == 0);
- } catch (Exception e) {
- e.printStackTrace();
- assertTrue(false);
- }
- }
-
- @Test
- public void testParseModelFileDeps() throws Exception {
- final String MODEL_FILE = "src/test/resources/models/wan-connector-model.xml";
-
- try {
- byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE));
-
- ModelArtifactParser parser = new ModelArtifactParser();
- List<Artifact> modelList = parser.parse(xmlBytes, "test-artifact");
-
- assertTrue(modelList.size() == 1);
-
- ModelArtifact model = (ModelArtifact) modelList.get(0);
- System.out.println(model.toString());
-
- assertTrue(model.getNameVersionId().equalsIgnoreCase("93d9d45d-7eec-4371-9083-675e4c353de3"));
- assertTrue(model.getType().toString().equalsIgnoreCase("MODEL"));
- assertTrue(model.getDependentModelIds().size() == 7);
- assertTrue(model.getDependentModelIds().contains("d09dd9da-0148-46cd-a947-591afc844d24"));
- assertTrue(model.getDependentModelIds().contains("ae16244f-4d29-4801-a559-e25f2db2a4c3"));
- assertTrue(model.getDependentModelIds().contains("a6d9de88-4046-4b78-a59e-5691243d292a"));
- } catch (Exception e) {
- e.printStackTrace();
- assertTrue(false);
- }
- }
-
- @Test
- public void testParseCompleteModel() throws Exception {
- final String MODEL_FILE = "src/test/resources/models/complete-model.xml";
-
- try {
- byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE));
-
- ModelArtifactParser parser = new ModelArtifactParser();
- List<Artifact> modelList = parser.parse(xmlBytes, "test-artifact");
-
- for (Artifact art : modelList) {
- ModelArtifact model = (ModelArtifact) art;
- System.out.println(model.toString());
- }
-
- assertTrue(modelList.size() == 3);
-
- ModelArtifact modelVdc = (ModelArtifact) modelList.get(0);
- assertTrue(
- modelVdc.getNameVersionId().equalsIgnoreCase("997fc7-fca1-451f-b953-9a1e6197b4d6"));
- assertTrue(modelVdc.getType().toString().equalsIgnoreCase("MODEL"));
- assertTrue(modelVdc.getDependentModelIds().size() == 1);
- assertTrue(modelVdc.getDependentModelIds().contains("93d9d45d-7eec-4371-9083-675e4c353de3"));
-
- ModelArtifact modelPserver = (ModelArtifact) modelList.get(2);
- assertTrue(
- modelPserver.getNameVersionId().equalsIgnoreCase("f2b24d95-c582-48d5-b2d6-c5b3a94ce812"));
- assertTrue(modelPserver.getType().toString().equalsIgnoreCase("MODEL"));
- assertTrue(modelPserver.getDependentModelIds().size() == 2);
- assertTrue(
- modelPserver.getDependentModelIds().contains("35be1acf-1298-48c6-a128-66850083b8bd"));
- assertTrue(
- modelPserver.getDependentModelIds().contains("759dbd4a-2473-46f3-a932-48d987c9b4a1"));
- } catch (Exception e) {
- e.printStackTrace();
- assertTrue(false);
- }
- }
-
- @Test
- public void testParseNamedQuery() throws Exception {
- final String MODEL_FILE = "src/test/resources/models/named-query-wan-connector.xml";
-
- try {
- byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE));
-
- ModelArtifactParser parser = new ModelArtifactParser();
- List<Artifact> modelList = parser.parse(xmlBytes, "test-artifact");
-
- assertTrue(modelList.size() == 1);
-
- ModelArtifact model = (ModelArtifact) modelList.get(0);
- System.out.println(model.toString());
-
- assertTrue(model.getNameVersionId().equalsIgnoreCase("94cac189-8d88-4d63-a194-f44214e080ff"));
- assertTrue(model.getType().toString().equalsIgnoreCase("NAMED_QUERY"));
- assertTrue(model.getDependentModelIds().size() == 4);
- assertTrue(model.getDependentModelIds().contains("d09dd9da-0148-46cd-a947-591afc844d24"));
- assertTrue(model.getDependentModelIds().contains("997fc7-fca1-451f-b953-9a1e6197b4d6"));
- assertTrue(model.getDependentModelIds().contains("897df7ea-8938-42b0-bc57-46e913a4d93b"));
- assertTrue(model.getDependentModelIds().contains("f2b24d95-c582-48d5-b2d6-c5b3a94ce812"));
- } catch (Exception e) {
- e.printStackTrace();
- assertTrue(false);
- }
- }
+ @Test
+ public void testParseModelFileNoDeps() throws Exception {
+ final String MODEL_FILE = "src/test/resources/models/l3-network-widget.xml";
+
+ try {
+ byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE));
+
+ ModelArtifactParser parser = new ModelArtifactParser();
+ List<Artifact> modelList = parser.parse(xmlBytes, "test-artifact");
+
+ assertTrue(modelList.size() == 1);
+
+ ModelArtifact model = (ModelArtifact) modelList.get(0);
+ System.out.println(model.toString());
+
+ assertTrue(model.getModelInvariantId().equalsIgnoreCase("3d560d81-57d0-438b-a2a1-5334dba0651a"));
+ assertTrue(model.getModelNamespace().equalsIgnoreCase("http://org.openecomp.aai.inventory/v9"));
+ assertTrue(model.getModelNamespaceVersion().equalsIgnoreCase("v9"));
+ assertTrue(model.getType().toString().equalsIgnoreCase("MODEL"));
+ System.out.println(model.getDependentModelIds().size());
+ assertTrue(model.getDependentModelIds().size() == 0);
+ } catch (Exception e) {
+ e.printStackTrace();
+ assertTrue(false);
+ }
+ }
+
+ @Test
+ public void testParseModelFileDeps() throws Exception {
+ final String MODEL_FILE = "src/test/resources/models/AAI-stellService-service-1.xml";
+
+ try {
+ byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE));
+
+ ModelArtifactParser parser = new ModelArtifactParser();
+ List<Artifact> modelList = parser.parse(xmlBytes, "test-artifact");
+
+ assertTrue(modelList.size() == 1);
+
+ ModelArtifact model = (ModelArtifact) modelList.get(0);
+ System.out.println(model.toString());
+
+ assertTrue(model.getModelInvariantId().equalsIgnoreCase("fedf9da3-6a74-4813-8fa2-221a98b0e7ad"));
+ assertTrue(model.getModelVerId().equalsIgnoreCase("e0373537-7f66-4094-9939-e2f5de6ff5f6"));
+ assertTrue(model.getType().toString().equalsIgnoreCase("MODEL"));
+ assertTrue(model.getDependentModelIds().size() == 3);
+ assertTrue(model.getDependentModelIds().contains("5c12984d-db0f-4300-a0e0-9791775cc40f|88bdbadf-db8a-490f-881e-c8effcbc3f66"));
+ assertTrue(model.getDependentModelIds().contains("959b7c09-9f34-4e5f-8b63-505381db176e|374d0899-bbc2-4403-9320-fe9bebef75c6"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ assertTrue(false);
+ }
+ }
+
+ @Test
+ public void testParseModelFileInvalidArtifact() throws Exception {
+ final String MODEL_FILE = "src/test/resources/models/invalid-model.xml";
+
+ try {
+ byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE));
+
+ ModelArtifactParser parser = new ModelArtifactParser();
+ List<Artifact> modelList = parser.parse(xmlBytes, "test-artifact");
+
+ assertTrue(modelList == null || modelList.isEmpty());
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ assertTrue(false);
+ }
+ }
+
+ @Test
+ public void testParseModelFileIncompleteArtifact() throws Exception {
+ final String MODEL_FILE = "src/test/resources/models/incomplete-model.xml";
+
+ try {
+ byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE));
+
+ ModelArtifactParser parser = new ModelArtifactParser();
+ List<Artifact> modelList = parser.parse(xmlBytes, "test-artifact");
+
+ assertTrue(modelList == null || modelList.isEmpty());
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ assertTrue(false);
+ }
+ }
}
--- /dev/null
+/**
+ * ============LICENSE_START=======================================================
+ * Model Loader
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ */
+package org.openecomp.modelloader.entity.model;
+
+import static org.junit.Assert.assertTrue;
+
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+import org.junit.Test;
+
+public class ModelParserFactoryTest {
+
+ @Test
+ public void testParserFactory() throws Exception {
+ final String MODEL_FILE_V8 = "src/test/resources/models/v8-wan-connector-model.xml";
+ final String MODEL_FILE_V9 = "src/test/resources/models/AAI-VL-resource-1.xml";
+ final String MODEL_FILE_NAMED_QUERY = "src/test/resources/models/named-query-wan-connector.xml";
+
+
+ try {
+ byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE_V8));
+ IModelParser parser = ModelParserFactory.createModelParser(xmlBytes, "v8-wan-connector-model.xml");
+ assertTrue(parser instanceof ModelV8ArtifactParser);
+
+ xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE_V9));
+ parser = ModelParserFactory.createModelParser(xmlBytes, "AAI-VL-resource-1.xml");
+ assertTrue(parser instanceof ModelArtifactParser);
+
+ xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE_NAMED_QUERY));
+ parser = ModelParserFactory.createModelParser(xmlBytes, "named-query-wan-connector.xml");
+ assertTrue(parser instanceof NamedQueryArtifactParser);
+ } catch (Exception e) {
+ e.printStackTrace();
+ assertTrue(false);
+ }
+ }
+}
-/*-
+/**
* ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
+ * Model Loader
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
*/
-
package org.openecomp.modelloader.entity.model;
import static org.junit.Assert.assertEquals;
List<Artifact> modelList = new ArrayList<Artifact>();
ModelArtifact model = new ModelArtifact();
- model.setNameVersionId("aaaaa");
- model.addDependentModelId("xyz");
+ model.setModelInvariantId("aaa");
+ model.setModelVerId("111");
+ model.addDependentModelId("xyz|123");
modelList.add(model);
ModelSorter sorter = new ModelSorter();
List<Artifact> modelList = new ArrayList<Artifact>();
ModelArtifact aaaa = new ModelArtifact();
- aaaa.setNameVersionId("aaaa");
- aaaa.addDependentModelId("cccc");
+ aaaa.setModelInvariantId("aaaa");
+ aaaa.setModelVerId("mvaaaa");
+ aaaa.addDependentModelId("cccc|mvcccc");
ModelArtifact bbbb = new ModelArtifact();
- bbbb.setNameVersionId("bbbb");
- bbbb.addDependentModelId("aaaa");
+ bbbb.setModelInvariantId("bbbb");
+ bbbb.setModelVerId("mvbbbb");
+ bbbb.addDependentModelId("aaaa|mvaaaa");
ModelArtifact cccc = new ModelArtifact();
- cccc.setNameVersionId("cccc");
+ cccc.setModelInvariantId("cccc");
+ cccc.setModelVerId("mvcccc");
modelList.add(aaaa);
modelList.add(bbbb);
assertEquals(aaaa, sortedList.get(1));
assertEquals(bbbb, sortedList.get(2));
}
+
+ @Test
+ public void multipleModelsV8() {
+
+ List<Artifact> modelList = new ArrayList<Artifact>();
+
+ ModelV8Artifact aaaa = new ModelV8Artifact();
+ aaaa.setModelNameVersionId("aaaa");
+ aaaa.addDependentModelId("cccc");
+
+ ModelV8Artifact bbbb = new ModelV8Artifact();
+ bbbb.setModelNameVersionId("bbbb");
+ bbbb.addDependentModelId("aaaa");
+
+ ModelV8Artifact cccc = new ModelV8Artifact();
+ cccc.setModelNameVersionId("cccc");
+
+ modelList.add(aaaa);
+ modelList.add(bbbb);
+ modelList.add(cccc);
+
+ ModelSorter sorter = new ModelSorter();
+ sorter = new ModelSorter();
+
+ List<Artifact> sortedList = sorter.sort(modelList);
+ assertNotNull(sortedList);
+ assertEquals(3, sortedList.size());
+ assertEquals(cccc, sortedList.get(0));
+ assertEquals(aaaa, sortedList.get(1));
+ assertEquals(bbbb, sortedList.get(2));
+ }
+
+ @Test
+ public void multipleModelsAndNamedQueries() {
+
+ List<Artifact> modelList = new ArrayList<Artifact>();
+
+ ModelArtifact aaaa = new ModelArtifact();
+ aaaa.setModelInvariantId("aaaa");
+ aaaa.setModelVerId("1111");
+ aaaa.addDependentModelId("cccc|2222");
+
+ NamedQueryArtifact nq1 = new NamedQueryArtifact();
+ nq1.setNamedQueryUuid("nq1");
+ nq1.addDependentModelId("aaaa|1111");
+
+ NamedQueryArtifact nq2 = new NamedQueryArtifact();
+ nq2.setNamedQueryUuid("nq2");
+ nq2.addDependentModelId("existing-model");
+
+
+ modelList.add(nq1);
+ modelList.add(nq2);
+ modelList.add(aaaa);
+
+ ModelSorter sorter = new ModelSorter();
+ sorter = new ModelSorter();
+
+ List<Artifact> sortedList = sorter.sort(modelList);
+ assertNotNull(sortedList);
+ assertEquals(3, sortedList.size());
+
+ System.out.println(sortedList.get(0) + "-" + sortedList.get(1) + "-" + sortedList.get(2));
+ assertEquals(aaaa, sortedList.get(0));
+ assertEquals(nq2, sortedList.get(1));
+ assertEquals(nq1, sortedList.get(2));
+ }
+
@Test(expected = RuntimeException.class)
public void circularDependency() {
List<Artifact> modelList = new ArrayList<Artifact>();
ModelArtifact aaaa = new ModelArtifact();
- aaaa.setNameVersionId("aaaa");
- aaaa.addDependentModelId("bbbb");
+ aaaa.setModelInvariantId("aaaa");
+ aaaa.setModelVerId("1111");
+ aaaa.addDependentModelId("bbbb|1111");
ModelArtifact bbbb = new ModelArtifact();
- bbbb.setNameVersionId("bbbb");
- bbbb.addDependentModelId("aaaa");
+ bbbb.setModelInvariantId("bbbb");
+ bbbb.setModelVerId("1111");
+ bbbb.addDependentModelId("aaaa|1111");
modelList.add(aaaa);
modelList.add(bbbb);
List<Artifact> sortedList = sorter.sort(modelList);
assertNotNull(sortedList);
- assertEquals(3, sortedList.size());
+ assertEquals(2, sortedList.size());
}
--- /dev/null
+/**
+ * ============LICENSE_START=======================================================
+ * Model Loader
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ */
+package org.openecomp.modelloader.entity.model;
+
+import static org.junit.Assert.assertTrue;
+
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.List;
+
+import org.junit.Test;
+import org.openecomp.modelloader.entity.Artifact;
+
+public class ModelV8ArtifactParserTest {
+
+ @Test
+ public void testParseModelFile() throws Exception {
+ final String MODEL_FILE = "src/test/resources/models/v8-wan-connector-model.xml";
+
+ try {
+ byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE));
+
+ ModelV8ArtifactParser parser = new ModelV8ArtifactParser();
+ List<Artifact> modelList = parser.parse(xmlBytes, "test-artifact");
+
+ assertTrue(modelList.size() == 1);
+
+ ModelV8Artifact model = (ModelV8Artifact) modelList.get(0);
+ System.out.println(model.toString());
+
+ assertTrue(model.getModelNameVersionId().equalsIgnoreCase("93d9d45d-7eec-4371-9083-675e4c353de3"));
+ assertTrue(model.getModelNamespace().equalsIgnoreCase("http://com.att.aai.inventory/v7"));
+ assertTrue(model.getModelNamespaceVersion().equalsIgnoreCase("v7"));
+ assertTrue(model.getType().toString().equalsIgnoreCase("MODEL_V8"));
+ assertTrue(model.getDependentModelIds().size() == 7);
+ assertTrue(model.getDependentModelIds().contains("d09dd9da-0148-46cd-a947-591afc844d24"));
+ assertTrue(model.getDependentModelIds().contains("997fc7-fca1-451f-b953-9a1e6197b4d6"));
+ assertTrue(model.getDependentModelIds().contains("ae16244f-4d29-4801-a559-e25f2db2a4c3"));
+ assertTrue(model.getDependentModelIds().contains("759dbd4a-2473-46f3-a932-48d987c9b4a1"));
+ assertTrue(model.getDependentModelIds().contains("a6d9de88-4046-4b78-a59e-5691243d292a"));
+ assertTrue(model.getDependentModelIds().contains("35be1acf-1298-48c6-a128-66850083b8bd"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ assertTrue(false);
+ }
+ }
+
+ @Test
+ public void testParseModelFileInvalidArtifact() throws Exception {
+ final String MODEL_FILE = "src/test/resources/models/invalid-model.xml";
+
+ try {
+ byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE));
+
+ ModelV8ArtifactParser parser = new ModelV8ArtifactParser();
+ List<Artifact> modelList = parser.parse(xmlBytes, "test-artifact");
+
+ assertTrue(modelList == null || modelList.isEmpty());
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ assertTrue(false);
+ }
+ }
+
+ @Test
+ public void testParseModelFileIncompleteArtifact() throws Exception {
+ final String MODEL_FILE = "src/test/resources/models/incomplete-model.xml";
+
+ try {
+ byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE));
+
+ ModelV8ArtifactParser parser = new ModelV8ArtifactParser();
+ List<Artifact> modelList = parser.parse(xmlBytes, "test-artifact");
+
+ assertTrue(modelList == null || modelList.isEmpty());
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ assertTrue(false);
+ }
+ }
+
+}
--- /dev/null
+/**
+ * ============LICENSE_START=======================================================
+ * Model Loader
+ * ================================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ */
+package org.openecomp.modelloader.entity.model;
+
+import static org.junit.Assert.assertTrue;
+
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.List;
+
+import org.junit.Test;
+import org.openecomp.modelloader.entity.Artifact;
+
+public class NamedQueryArtifactParserTest {
+
+ @Test
+ public void testParseNamedQuery() throws Exception {
+ final String MODEL_FILE = "src/test/resources/models/named-query-wan-connector.xml";
+
+ try {
+ byte[] xmlBytes = Files.readAllBytes(Paths.get(MODEL_FILE));
+
+ NamedQueryArtifactParser parser = new NamedQueryArtifactParser();
+ List<Artifact> modelList = parser.parse(xmlBytes, "test-artifact");
+
+ assertTrue(modelList.size() == 1);
+
+ NamedQueryArtifact model = (NamedQueryArtifact) modelList.get(0);
+ System.out.println(model.toString());
+
+ assertTrue(model.getNamedQueryUuid().equalsIgnoreCase("94cac189-8d88-4d63-a194-f44214e080ff"));
+ assertTrue(model.getType().toString().equalsIgnoreCase("NAMED_QUERY"));
+ assertTrue(model.getDependentModelIds().size() == 4);
+ assertTrue(model.getDependentModelIds().contains("d09dd9da-0148-46cd-a947-591afc844d24"));
+ assertTrue(model.getDependentModelIds().contains("997fc7-fca1-451f-b953-9a1e6197b4d6"));
+ assertTrue(model.getDependentModelIds().contains("897df7ea-8938-42b0-bc57-46e913a4d93b"));
+ assertTrue(model.getDependentModelIds().contains("f2b24d95-c582-48d5-b2d6-c5b3a94ce812"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ assertTrue(false);
+ }
+ }
+
+}
-/*-
+/**
* ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
+ * Model Loader
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
*/
-
package org.openecomp.modelloader.restclient;
import java.io.IOException;
import org.openecomp.modelloader.entity.ArtifactType;
import org.openecomp.modelloader.entity.model.ModelArtifact;
-public class AAIRestClientTest {
+public class AaiRestClientTest {
// This test requires a running A&AI system. Uncomment to test locally.
/*
String baseURL = config.getAaiBaseUrl().trim();
String subURL = null;
if (model.getType().equals(ArtifactType.MODEL)) {
- subURL = config.getAaiModelUrl().trim();
+ subURL = config.getAaiModelUrl(model.getModelNamespaceVersion()).trim();
} else {
- subURL = config.getAaiNamedQueryUrl().trim();
+ subURL = config.getAaiNamedQueryUrl(model.getModelNamespaceVersion()).trim();
}
if ((!baseURL.endsWith("/")) && (!subURL.startsWith("/"))) {
subURL = subURL + "/";
}
- String url = baseURL + subURL + model.getNameVersionId();
+ String url = baseURL + subURL + model.getUniqueIdentifier();
return url;
}
}
+++ /dev/null
-/*-
- * ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.modelloader.service;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Matchers;
-import org.openecomp.modelloader.config.ModelLoaderConfig;
-import org.openecomp.modelloader.notification.EventCallback;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-import org.openecomp.sdc.api.IDistributionClient;
-import org.openecomp.sdc.api.results.IDistributionClientResult;
-import org.openecomp.sdc.impl.DistributionClientFactory;
-import org.openecomp.sdc.utils.DistributionActionResultEnum;
-
-@PrepareForTest({ DistributionClientFactory.class })
-@RunWith(PowerMockRunner.class)
-public class ModelLoaderServiceTest {
-
- /*
- * //TODO this should be re-added once we come up with a strategy to fail
- * gracefully
- *
- * @Test public void testNonExistentConfiguration(){
- * ModelLoaderService.CONFIG_LOCATION = "FAKELOCATION";
- *
- * try{ new ModelLoaderService().start(); }catch(RuntimeException e){
- * assertTrue("Got unexpected message from error log",
- * e.getMessage().contains("Failed to load configuration")); return; }
- *
- * fail("Expecting runtime exception"); }
- */
-
- @Test
- public void testConfigureStartDistributionClient() {
- PowerMockito.mockStatic(DistributionClientFactory.class);
-
- IDistributionClient mockClient = mock(IDistributionClient.class);
- ModelLoaderConfig mockConfig = mock(ModelLoaderConfig.class);
-
- when(DistributionClientFactory.createDistributionClient()).thenReturn(mockClient);
-
- IDistributionClientResult result = mock(IDistributionClientResult.class);
-
- when(result.getDistributionActionResult()).thenReturn(DistributionActionResultEnum.SUCCESS);
- when(mockClient.init(Matchers.<ModelLoaderConfig> any(), Matchers.<EventCallback> any()))
- .thenReturn(result);
- when(mockClient.start()).thenReturn(result);
-
- new ModelLoaderService().init();
-
- // Validate that the client was initialized and started
- verify(mockClient, times(1)).init(Matchers.<ModelLoaderConfig> any(),
- Matchers.<EventCallback> any());
- verify(mockClient, times(1)).start();
- }
-
- @Test
- public void testInitializeButNotStarted() {
- PowerMockito.mockStatic(DistributionClientFactory.class);
-
- IDistributionClient mockClient = mock(IDistributionClient.class);
- ModelLoaderConfig mockConfig = mock(ModelLoaderConfig.class);
-
- DistributionActionResultEnum failureReason = DistributionActionResultEnum.ASDC_CONNECTION_FAILED;
-
- when(DistributionClientFactory.createDistributionClient()).thenReturn(mockClient);
-
- IDistributionClientResult initResult = mock(IDistributionClientResult.class);
- when(initResult.getDistributionActionResult()).thenReturn(DistributionActionResultEnum.SUCCESS);
- IDistributionClientResult startResult = mock(IDistributionClientResult.class);
- when(startResult.getDistributionActionResult()).thenReturn(failureReason);
-
- when(mockClient.init(Matchers.<ModelLoaderConfig> any(), Matchers.<EventCallback> any()))
- .thenReturn(initResult);
- when(mockClient.start()).thenReturn(startResult);
-
- // TODO this should be re-added once we come up with a strategy to fail
- // gracefully
- /*
- * try{ new ModelLoaderService().init(mockConfig); }catch(RuntimeException
- * e){ assertTrue(e.getMessage().contains(failureReason.toString()));
- * return; }
- *
- * fail("Expecting runtime exception with failure: " +
- * failureReason.toString());
- */
- }
-}
-/*-
- * ============LICENSE_START=======================================================
- * MODEL LOADER SERVICE
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.modelloader.util;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.io.ByteArrayInputStream;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.junit.Test;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-public class JsonXmlConverterTest {
-
- @Test
- public void testConversion() throws Exception {
- final String XML_MODEL_FILE = "src/test/resources/models/vnf-model.xml";
- final String JSON_MODEL_FILE = "src/test/resources/models/vnf-model.json";
-
- try {
- byte[] encoded = Files.readAllBytes(Paths.get(XML_MODEL_FILE));
- String originalXML = new String(encoded);
-
- assertFalse(JsonXmlConverter.isValidJson(originalXML));
-
- encoded = Files.readAllBytes(Paths.get(JSON_MODEL_FILE));
- String originalJSON = new String(encoded);
-
- assertTrue(JsonXmlConverter.isValidJson(originalJSON));
-
- String xmlFromJson = JsonXmlConverter.convertJsonToXml(originalJSON);
-
- // Spot check one of the attributes
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder = factory.newDocumentBuilder();
- Document doc = builder.parse(new ByteArrayInputStream(xmlFromJson.getBytes()));
- NodeList nodeList = doc.getDocumentElement().getChildNodes();
-
- String modelVid = "notFound";
- for (int i = 0; i < nodeList.getLength(); i++) {
- Node currentNode = nodeList.item(i);
- if (currentNode.getNodeName().equals("model-name-version-id")) {
- modelVid = currentNode.getTextContent();
- break;
- }
- }
-
- assertTrue(modelVid.equals("model-vid"));
- } catch (Exception e) {
- e.printStackTrace();
- assertTrue(false);
- }
- }
-}
+/**\r
+ * ============LICENSE_START=======================================================\r
+ * Model Loader\r
+ * ================================================================================\r
+ * Copyright © 2017 AT&T Intellectual Property.\r
+ * Copyright © 2017 Amdocs\r
+ * All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ *\r
+ * ECOMP and OpenECOMP are trademarks\r
+ * and service marks of AT&T Intellectual Property.\r
+ */\r
+package org.openecomp.modelloader.util;\r
+\r
+import static org.junit.Assert.assertFalse;\r
+import static org.junit.Assert.assertTrue;\r
+\r
+import java.io.ByteArrayInputStream;\r
+import java.nio.file.Files;\r
+import java.nio.file.Paths;\r
+\r
+import javax.xml.parsers.DocumentBuilder;\r
+import javax.xml.parsers.DocumentBuilderFactory;\r
+\r
+import org.junit.Test;\r
+import org.w3c.dom.Document;\r
+import org.w3c.dom.Node;\r
+import org.w3c.dom.NodeList;\r
+\r
+public class JsonXmlConverterTest {\r
+\r
+ @Test\r
+ public void testConversion() throws Exception {\r
+ final String XML_MODEL_FILE = "src/test/resources/models/l3-network-widget.xml";\r
+ final String JSON_MODEL_FILE = "src/test/resources/models/l3-network-widget.json";\r
+\r
+ try {\r
+ byte[] encoded = Files.readAllBytes(Paths.get(XML_MODEL_FILE));\r
+ String originalXML = new String(encoded);\r
+\r
+ assertFalse(JsonXmlConverter.isValidJson(originalXML));\r
+\r
+ encoded = Files.readAllBytes(Paths.get(JSON_MODEL_FILE));\r
+ String originalJSON = new String(encoded);\r
+\r
+ assertTrue(JsonXmlConverter.isValidJson(originalJSON));\r
+\r
+ String xmlFromJson = JsonXmlConverter.convertJsonToXml(originalJSON);\r
+\r
+ // Spot check one of the attributes\r
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();\r
+ DocumentBuilder builder = factory.newDocumentBuilder();\r
+ Document doc = builder.parse(new ByteArrayInputStream(xmlFromJson.getBytes()));\r
+ NodeList nodeList = doc.getDocumentElement().getChildNodes();\r
+\r
+ String modelVid = "notFound";\r
+ for (int i = 0; i < nodeList.getLength(); i++) {\r
+ Node currentNode = nodeList.item(i);\r
+ if (currentNode.getNodeName().equals("model-invariant-id")) {\r
+ modelVid = currentNode.getTextContent();\r
+ break;\r
+ }\r
+ }\r
+\r
+ assertTrue(modelVid.equals("3d560d81-57d0-438b-a2a1-5334dba0651a"));\r
+ } catch (Exception e) {\r
+ e.printStackTrace();\r
+ assertTrue(false);\r
+ }\r
+ }\r
+}\r
-<!--
- ============LICENSE_START=======================================================
- MODEL LOADER SERVICE
- ================================================================================
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ============LICENSE_END=========================================================
- -->
-
<configuration debug="false">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-###
-# ============LICENSE_START=======================================================
-# MODEL LOADER SERVICE
-# ================================================================================
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ============LICENSE_END=========================================================
-###
-
# Model Loader Distribution Client Configuration
ml.distribution.ACTIVE_SERVER_TLS_AUTH=false
ml.distribution.ASDC_ADDRESS=
-###
-# ============LICENSE_START=======================================================
-# MODEL LOADER SERVICE
-# ================================================================================
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ============LICENSE_END=========================================================
-###
-
# Model Loader Distribution Client Configuration
ml.distribution.ACTIVE_SERVER_TLS_AUTH=false
ml.distribution.ASDC_ADDRESS=
-###
-# ============LICENSE_START=======================================================
-# MODEL LOADER SERVICE
-# ================================================================================
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ============LICENSE_END=========================================================
-###
-
# Model Loader Distribution Client Configuration
ml.distribution.ACTIVE_SERVER_TLS_AUTH=false
ml.distribution.ASDC_ADDRESS=
--- /dev/null
+<model xmlns="http://org.openecomp.aai.inventory/v9">
+ <model-invariant-id>5a2aac99-ffe8-415f-9242-420ed10da23e</model-invariant-id>
+ <model-type>resource</model-type>
+ <model-vers>
+ <model-ver>
+ <model-version-id>29d3fc43-4ff2-4e5c-acd0-7370f5b2715a</model-version-id>
+ <model-name>Testvsp..vmme_cinder..module-1</model-name>
+ <model-version>1</model-version>
+ <model-description></model-description>
+ <model-elements>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements/>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>c00563ae-812b-4e62-8330-7c4d0f47088a</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>ef86f9c5-2165-44f3-8fc3-96018b609ea5</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ </model-elements>
+ </model-ver>
+ </model-vers>
+</model>
\ No newline at end of file
--- /dev/null
+<model xmlns="http://org.openecomp.aai.inventory/v9">
+ <model-invariant-id>1e8fdfc0-03cf-4742-b060-dab818954d67</model-invariant-id>
+ <model-type>resource</model-type>
+ <model-vers>
+ <model-ver>
+ <model-version-id>da6769f0-aa58-4e90-b2c9-664c2630d131</model-version-id>
+ <model-name>Testvsp..vmme_small_ecomp..module-0</model-name>
+ <model-version>1</model-version>
+ <model-description></model-description>
+ <model-elements>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements/>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>f6a038c2-820c-42ba-8c2b-375e24e8f932</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>3f4c7204-739b-4bbb-87a7-8a6856439c90</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements/>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>abcc54bc-bb74-49dc-9043-7f7171707545</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>97c26c99-6870-44c1-8a07-1d900d3f4ce6</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements/>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>36200fb5-f251-4f5d-a520-7c5ad5c2cd4b</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>bace8d1c-a261-4041-9e37-823117415d0f</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements/>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>a32613fd-18b9-459e-aab8-fffb3912966a</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>cea0a982-8d55-4093-921e-418fbccf7060</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements/>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>5761e0a7-c6df-4d8a-9ebd-b8f445054dec</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>96129eb9-f0de-4e05-8af2-73146473f766</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ </model-elements>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>8ecb2c5d-7176-4317-a255-26274edfdd53</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>ff69d4e0-a8e8-4108-bdb0-dd63217e63c7</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements/>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>9111f20f-e680-4001-b83f-19a2fc23bfc1</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>3d560d81-57d0-438b-a2a1-5334dba0651a</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ </model-elements>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>c00563ae-812b-4e62-8330-7c4d0f47088a</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>ef86f9c5-2165-44f3-8fc3-96018b609ea5</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ </model-elements>
+ </model-ver>
+ </model-vers>
+</model>
\ No newline at end of file
--- /dev/null
+<model xmlns="http://org.openecomp.aai.inventory/v9">
+ <model-invariant-id>5c12984d-db0f-4300-a0e0-9791775cc40f</model-invariant-id>
+ <model-type>resource</model-type>
+ <model-vers>
+ <model-ver>
+ <model-version-id>88bdbadf-db8a-490f-881e-c8effcbc3f66</model-version-id>
+ <model-name>VL</model-name>
+ <model-version>1</model-version>
+ <model-description> Virtual link (VL) describes the basic topology of the connectivity as well as other required parameters (e.g. bandwidth and QoS class). </model-description>
+ <model-elements>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements/>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>9111f20f-e680-4001-b83f-19a2fc23bfc1</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>3d560d81-57d0-438b-a2a1-5334dba0651a</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ </model-elements>
+ </model-ver>
+ </model-vers>
+</model>
\ No newline at end of file
--- /dev/null
+<model xmlns="http://org.openecomp.aai.inventory/v9">
+ <model-invariant-id>fedf9da3-6a74-4813-8fa2-221a98b0e7ad</model-invariant-id>
+ <model-type>service</model-type>
+ <model-vers>
+ <model-ver>
+ <model-version-id>e0373537-7f66-4094-9939-e2f5de6ff5f6</model-version-id>
+ <model-name>stellService</model-name>
+ <model-version>1</model-version>
+ <model-description>fd</model-description>
+ <model-elements>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements/>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>88bdbadf-db8a-490f-881e-c8effcbc3f66</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>5c12984d-db0f-4300-a0e0-9791775cc40f</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements/>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>374d0899-bbc2-4403-9320-fe9bebef75c6</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>959b7c09-9f34-4e5f-8b63-505381db176e</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ </model-elements>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>46b92144-923a-4d20-b85a-3cbd847668a9</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>82194af1-3c2c-485a-8f44-420e22a9eaa4</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ </model-elements>
+ </model-ver>
+ </model-vers>
+</model>
\ No newline at end of file
--- /dev/null
+<model xmlns="http://org.openecomp.aai.inventory/v9">
+ <model-invariant-id>959b7c09-9f34-4e5f-8b63-505381db176e</model-invariant-id>
+ <model-type>resource</model-type>
+ <model-vers>
+ <model-ver>
+ <model-version-id>374d0899-bbc2-4403-9320-fe9bebef75c6</model-version-id>
+ <model-name>testvsp</model-name>
+ <model-version>1</model-version>
+ <model-description>nkjlkl</model-description>
+ <model-elements>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements/>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>da6769f0-aa58-4e90-b2c9-664c2630d131</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>1e8fdfc0-03cf-4742-b060-dab818954d67</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements/>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>29d3fc43-4ff2-4e5c-acd0-7370f5b2715a</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>5a2aac99-ffe8-415f-9242-420ed10da23e</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ </model-elements>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>93a6166f-b3d5-4f06-b4ba-aed48d009ad9</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>acc6edd8-a8d4-4b93-afaa-0994068be14c</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ </model-elements>
+ </model-ver>
+ </model-vers>
+</model>
\ No newline at end of file
+++ /dev/null
-<!--
- ============LICENSE_START=======================================================
- MODEL LOADER SERVICE
- ================================================================================
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ============LICENSE_END=========================================================
- -->
-
-<models xmlns="http://org.openecomp.aai.inventory/v8">
- <model>
- <model-name-version-id>997fc7-fca1-451f-b953-9a1e6197b4d6
- </model-name-version-id>
- <model-type>widget</model-type>
- <model-name>vdc</model-name>
- <model-id>897df7ea-8938-42b0-bc57-46e913a4d93b</model-id>
- <model-version>v1.0</model-version>
- <resource-version>1463175188</resource-version>
- <relationship-list>
- <relationship>
- <related-to>model-element</related-to>
- <related-link>https://localhost:8443/aai/v8/service-design-and-creation/model-elements/model-element/ccb3a5a4-1722-4213-8785-2b6b5527d453/
- </related-link>
- <relationship-data>
- <relationship-key>model-element.model-element-uuid
- </relationship-key>
- <relationship-value>ccb3a5a4-1722-4213-8785-2b6b5527d453
- </relationship-value>
- </relationship-data>
- <relationship-data>
- <relationship-key>model-element.model-element-uuid
- </relationship-key>
- <relationship-value>df2e4cc0-18ca-4046-9c1b-2abec86a58d6
- </relationship-value>
- </relationship-data>
- <relationship-data>
- <relationship-key>model.model-name-version-id</relationship-key>
- <relationship-value>93d9d45d-7eec-4371-9083-675e4c353de3
- </relationship-value>
- </relationship-data>
- </relationship>
- </relationship-list>
- </model>
- <model>
- <model-name-version-id>8da97b81-e0e9-4157-a4cd-af3ba52871d6
- </model-name-version-id>
- <model-type>resource</model-type>
- <model-name>vDbe</model-name>
- <model-id>77b83c95-7707-4624-8bfe-9110b9c2dc88</model-id>
- <model-version>v1.0</model-version>
- <resource-version>1463175188</resource-version>
- <relationship-list>
- <relationship>
- <related-to>model-element</related-to>
- <related-link>https://localhost:8443/aai/v8/service-design-and-creation/model-elements/model-element/fc3a2260-d0ee-4c8e-b7e9-74791d7c5721/
- </related-link>
- <relationship-data>
- <relationship-key>model-element.model-element-uuid
- </relationship-key>
- <relationship-value>fc3a2260-d0ee-4c8e-b7e9-74791d7c5721
- </relationship-value>
- </relationship-data>
- <relationship-data>
- <relationship-key>element-choice-set.element-choice-set-uuid
- </relationship-key>
- <relationship-value>646ee687-1475-419d-bd10-f3760d5430dc
- </relationship-value>
- </relationship-data>
- <relationship-data>
- <relationship-key>constrained-element-set.constrained-element-set-uuid
- </relationship-key>
- <relationship-value>999</relationship-value>
- </relationship-data>
- <relationship-data>
- <relationship-key>model-element.model-element-uuid
- </relationship-key>
- <relationship-value>df2e4cc0-18ca-4046-9c1b-2abec86a58d6
- </relationship-value>
- </relationship-data>
- <relationship-data>
- <relationship-key>model.model-name-version-id</relationship-key>
- <relationship-value>93d9d45d-7eec-4371-9083-675e4c353de3
- </relationship-value>
- </relationship-data>
- </relationship>
- </relationship-list>
- </model>
- <model>
- <model-name-version-id>f2b24d95-c582-48d5-b2d6-c5b3a94ce812
- </model-name-version-id>
- <model-type>widget</model-type>
- <model-name>pserver</model-name>
- <model-id>a033a95f-93af-4dc6-811e-f818baf13ef1</model-id>
- <model-version>v1.0</model-version>
- <resource-version>1463175178</resource-version>
- <relationship-list>
- <relationship>
- <related-to>model-element</related-to>
- <related-link>https://localhost:8443/aai/v8/service-design-and-creation/model-elements/model-element/5eab2693-78ec-446a-afe4-14332e348246/
- </related-link>
- <relationship-data>
- <relationship-key>model-element.model-element-uuid
- </relationship-key>
- <relationship-value>5eab2693-78ec-446a-afe4-14332e348246
- </relationship-value>
- </relationship-data>
- <relationship-data>
- <relationship-key>model.model-name-version-id</relationship-key>
- <relationship-value>35be1acf-1298-48c6-a128-66850083b8bd
- </relationship-value>
- </relationship-data>
- </relationship>
- <relationship>
- <related-to>model-element</related-to>
- <related-link>https://localhost:8443/aai/v8/service-design-and-creation/model-elements/model-element/f7659dac-6311-45b6-b483-60b39364a85a/
- </related-link>
- <relationship-data>
- <relationship-key>model-element.model-element-uuid
- </relationship-key>
- <relationship-value>f7659dac-6311-45b6-b483-60b39364a85a
- </relationship-value>
- </relationship-data>
- <relationship-data>
- <relationship-key>model.model-name-version-id</relationship-key>
- <relationship-value>759dbd4a-2473-46f3-a932-48d987c9b4a1
- </relationship-value>
- </relationship-data>
- </relationship>
- </relationship-list>
- </model>
-
-</models>
--- /dev/null
+<model xmlns="http://org.openecomp.aai.inventory/v9">
+ <model-type>resource</model-type>
+ <model-vers>
+ <model-ver>
+ <model-name>VL</model-name>
+ <model-version>1</model-version>
+ <model-description> Virtual link (VL) describes the basic topology of the connectivity as well as other required parameters (e.g. bandwidth and QoS class). </model-description>
+ <model-elements>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements/>
+ </model-element>
+ </model-elements>
+ </model-ver>
+ </model-vers>
+</model>
\ No newline at end of file
--- /dev/null
+<model xmlns="http://org.openecomp.aai.inventory/v9">
+ <model-invariant-id>5c12984d-db0f-4300-a0e0-9791775cc40f</model-invariant-id>
+ <model-type>resource</model-type>
+ <model-vers>
+ <model-ver>
+ <model-version-id>88bdbadf-db8a-490f-881e-c8effcbc3f66</model-version-id>
+ <model-name>VL</model-name>
+ <model-version>1</model-version>
+ <model-description> Virtual link (VL) describes the basic topology of the connectivity as well as other required parameters (e.g. bandwidth and QoS class). </model-description>
+ <model-elements>
+ <model-element>
+ <new-data-del-flag>F</new-data-del-flag>
+ <cardinality>unbounded</cardinality>
+ <model-elements/>
+ <relationship-list>
+ <relationship>
+ <related-to>model-ver</related-to>
+ <relationship-data>
+ <relationship-key>model-ver.model-version-id</relationship-key>
+ <relationship-value>9111f20f-e680-4001-b83f-19a2fc23bfc1</relationship-value>
+ </relationship-data>
+ <relationship-data>
+ <relationship-key>model.model-invariant-id</relationship-key>
+ <relationship-value>3d560d81-57d0-438b-a2a1-5334dba0651a</relationship-value>
+ </relationship-data>
+ </relationship>
+ </relationship-list>
+ </model-element>
+ </model-elements>
+ </model-ver>
+ </model-vers>
--- /dev/null
+{
+ "model":
+ {
+ "model-invariant-id" : "3d560d81-57d0-438b-a2a1-5334dba0651a",
+ "model-type" : "widget",
+ "model-vers" : {
+ "model-ver" : [ {
+ "model-version-id" : "9111f20f-e680-4001-b83f-19a2fc23bfc1",
+ "model-version" : "1.0",
+ "model-name" : "l3-network"
+ } ]
+ }
+ }
+}
--- /dev/null
+<model xmlns="http://org.openecomp.aai.inventory/v9">
+ <model-invariant-id>3d560d81-57d0-438b-a2a1-5334dba0651a</model-invariant-id>
+ <model-type>widget</model-type>
+ <model-vers>
+ <model-ver>
+ <model-version-id>9111f20f-e680-4001-b83f-19a2fc23bfc1</model-version-id>
+ <model-version>1.0</model-version>
+ <model-name>l3-network</model-name>
+ </model-ver>
+ </model-vers>
+</model>
\ No newline at end of file
-<!--
- ============LICENSE_START=======================================================
- MODEL LOADER SERVICE
- ================================================================================
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ============LICENSE_END=========================================================
- -->
-
-<named-query xmlns="http://org.openecomp.aai.inventory/v8">
+<named-query xmlns="http://org.openecomp.aai.inventory/v7">
<named-query-uuid>94cac189-8d88-4d63-a194-f44214e080ff
</named-query-uuid>
<named-query-name>wan-connector</named-query-name>
<related-to>model</related-to>
<relationship-data>
<!-- connector -->
- <relationship-key>model.model-name-version-id</relationship-key>
+ <relationship-key>model.model-invariant-id</relationship-key>
<relationship-value>d09dd9da-0148-46cd-a947-591afc844d24
</relationship-value>
</relationship-data>
<related-to>model</related-to>
<relationship-data>
<!-- vdc -->
- <relationship-key>model.model-name-version-id</relationship-key>
+ <relationship-key>model.model-invariant-id</relationship-key>
<relationship-value>997fc7-fca1-451f-b953-9a1e6197b4d6
</relationship-value>
</relationship-data>
<related-to>model</related-to>
<relationship-data>
<!-- logical-link -->
- <relationship-key>model.model-name-version-id
+ <relationship-key>model.model-invariant-id
</relationship-key>
<relationship-value>897df7ea-8938-42b0-bc57-46e913a4d93b
</relationship-value>
<related-to>model</related-to>
<relationship-data>
<!-- pserver -->
- <relationship-key>model.model-name-version-id
+ <relationship-key>model.model-invariant-id
</relationship-key>
<relationship-value>f2b24d95-c582-48d5-b2d6-c5b3a94ce812
</relationship-value>
-<!--
- ============LICENSE_START=======================================================
- MODEL LOADER SERVICE
- ================================================================================
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ============LICENSE_END=========================================================
- -->
-
-<model xmlns="http://org.openecomp.aai.inventory/v8">
+<model xmlns="http://com.att.aai.inventory/v7">
<model-id>e4a9901b-6c94-4e07-b8d8-b877d3df554c</model-id>
<model-type>service</model-type>
- <model-name>test-model</model-name>
+ <model-name>wan-connector</model-name>
<model-version>v1.0</model-version>
<model-name-version-id>93d9d45d-7eec-4371-9083-675e4c353de3
</model-name-version-id>
- <model-description>desc</model-description>
+ <model-description>Connects a customer vpn to the border elements of an
+ AT&T product</model-description>
<metadata>
<metadatum>
<metaname>a</metaname>
</model-element>
</model-elements>
</model>
-
+++ /dev/null
-{
- "model":
- {
- "model-name-version-id":"model-vid",
- "model-type":"widget",
- "model-version":"v1.0",
- "model-id":"model-id",
- "model-name":"generic-vnf"
- }
-}
-<!--
- ============LICENSE_START=======================================================
- MODEL LOADER SERVICE
- ================================================================================
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ============LICENSE_END=========================================================
- -->
-
<vnf-catalog>
<part-number-list>
- <att-part-number>FortiGate-VM00</att-part-number>
+ <part-number>FortiGate-VM00</part-number>
<vnf-type>FW</vnf-type>
<vendor-info>
<vendor-name>FORTINET</vendor-name>
</license-list>
</part-number-list>
<part-number-list>
- <att-part-number>FortiGate-VM01</att-part-number>
+ <part-number>FortiGate-VM01</part-number>
<vnf-type>FW</vnf-type>
<vendor-info>
<vendor-name>FORTINET</vendor-name>