diff options
author | 2018-01-12 04:45:58 +0000 | |
---|---|---|
committer | 2018-01-12 04:45:58 +0000 | |
commit | e3e5575a06e3c02c8adecbeeb153d4a6a7f2fda4 (patch) | |
tree | 2e7b15f927bc112377cf73ff7879dfb564ae6b8f /models/api/placementRequest.py | |
parent | e91ad0d899121fb190391865422ea6424ffc29ca (diff) | |
parent | 524573f21dfc3d88b1512850d52da7e5b545cf9d (diff) |
Merge "Seed code for OSDF placement adapter"
Diffstat (limited to 'models/api/placementRequest.py')
-rw-r--r-- | models/api/placementRequest.py | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/models/api/placementRequest.py b/models/api/placementRequest.py new file mode 100644 index 0000000..73eac75 --- /dev/null +++ b/models/api/placementRequest.py @@ -0,0 +1,124 @@ +# ------------------------------------------------------------------------- +# Copyright (c) 2015-2017 AT&T Intellectual Property +# +# 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. +# +# ------------------------------------------------------------------------- +# + +from .common import OSDFModel +from schematics.types import StringType, URLType, IntType, FloatType +from schematics.types.compound import ModelType, ListType + + +class RequestInfo(OSDFModel): + """Info for northbound request from client such as SO""" + transactionId = StringType(required=True) + requestId = StringType(required=True) + callbackUrl = URLType(required=True) + sourceId = StringType(required=True) + optimizer = ListType(StringType()) + numSolutions = IntType() + timeout = IntType() + requestType = StringType() + + +class CandidateInfo(OSDFModel): + """Preferred candidate for a resource (sent as part of a request from client)""" + candidateType = StringType(required=True) + candidates = ListType(StringType(required=True)) + + +class ResourceModelInfo(OSDFModel): + """Model information for a specific resource""" + modelCustomizationId = StringType(required=True) + modelInvariantId = StringType(required=True) + modelName = StringType() + modelVersion = StringType() + modelVersionId = StringType() + modelType = StringType() + operationalStatus = StringType() + + +class ExistingLicenseInfo(OSDFModel): + entitlementPoolUUID = ListType(StringType()) + licenseKeyGroupUUID = ListType(StringType()) + + +class LicenseDemand(OSDFModel): + resourceInstanceType = StringType(required=True) + serviceResourceId = StringType(required=True) + resourceModuleName = StringType(required=True) + resourceModelInfo = ModelType(ResourceModelInfo) + existingLicense = ModelType(ExistingLicenseInfo) + + +class PlacementDemand(OSDFModel): + resourceInstanceType = StringType(required=True) + serviceResourceId = StringType(required=True) + resourceModuleName = StringType(required=True) + exclusionCandidateInfo = ListType(ModelType(CandidateInfo)) + requiredCandidateInfo = ListType(ModelType(CandidateInfo)) + resourceModelInfo = ModelType(ResourceModelInfo) + tenantId = StringType() + tenantName = StringType() + + +class ExistingPlacementInfo(OSDFModel): + serviceInstanceId = StringType(required=True) + + +class DemandInfo(OSDFModel): + """Requested resources (sent as part of a request from client)""" + placementDemand = ListType(ModelType(PlacementDemand)) + licenseDemand = ListType(ModelType(LicenseDemand)) + + +class SubscriberInfo(OSDFModel): + """Details on the customer that subscribes to the VNFs""" + globalSubscriberId = StringType(required=True) + subscriberName = StringType() + subscriberCommonSiteId = StringType() + + +class ServiceModelInfo(OSDFModel): + """ASDC Service model information""" + modelType = StringType(required=True) + modelInvariantId = StringType(required=True) + modelVersionId = StringType(required=True) + modelName = StringType(required=True) + modelVersion = StringType(required=True) + + +class Location(OSDFModel): + latitude = FloatType(required=True) + longitude = FloatType(required=True) + + +class PlacementInfo(OSDFModel): + """Information specific to placement optimization""" + serviceModelInfo = ModelType(ServiceModelInfo) + subscriberInfo = ModelType(SubscriberInfo) + demandInfo = ModelType(DemandInfo, required=True) + orderInfo = StringType() + policyId = ListType(StringType()) + serviceInstanceId = StringType() + existingPlacement = ModelType(ExistingPlacementInfo) + location = ModelType(Location) + serviceType = StringType() + + +class PlacementAPI(OSDFModel): + """Request for placement optimization (specific to optimization and additional metadata""" + requestInfo = ModelType(RequestInfo, required=True) + placementInfo = ModelType(PlacementInfo, required=True) |