...
Following format is used to represent the HPACapability:
- Each cloud-region has a list of HPACapabilities and list of HPA flavors. Each HPA flavor is set of HPA capabilities. There Data centers typically have flavors (openstack calls them flavors, Azure calls them VM sizes and AWS calls them as Instance types). Each flavor is represented by hardware features. When these are discovered by ONAP, there are few ways to represent flavors and capabilitiesthem in A&AI DB.
- Approach 1:
- Represent HPA flavors in each cloud-region. (HPA flavors as children to the cloud-region (Already existing)
- Represent HPA capabilities under each HPA flavor (HPA capabilities as children of each HPA flavor)
- Approach 2:
- Represent HPA flavors flavors as children to the cloud-region (Already existing). Also, represent HPA capabilities also children to the cloud-regions.
- Then provide relationship between flavors and capabilities.
- Approach 3:
- Approach 1 +
- Create another tree with capability to region+flavor list.
- Which approach to follow? Some guidance from A&AI team. Requirement is this:
- During VNF instantiation, OOF gets hold of hardware requirements and based on that requirements, it needs to find out the best cloud-region and flavor.
- Would Approach 3 seem possible?
- Approach 1:
- Each HPACapability is defined as
{Capability NameHPACapability-id,HPAFeature, Schema Version, hardware-architecture, [List of HPAAttributes] - names and values} - HPAAttribute HPAFeatureAttribute is a list of <hpaAttributeKey, hpaAttributeValue>
- ComplexAttribute is a list of list of HPAAttributes. For eg: NUMA might have list of HPAttributes for every NUMA node.
- Refer Hardware Platform Enablement In ONAP
- Refer Supported HPA Capability Requirements(DRAFT) for more specific Capability names and values.
A&AI Schema Changes
Example: Run time view of A&AI graph instance
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<java-type name="CloudRegion"> <xml-root-element name="cloud-region" /> <java-attributes> <xml-element java-attribute="cloudOwner" name="cloud-owner" required="true" type="java.lang.String" xml-key="true"> <xml-properties> <xml-property name="description" value="Identifies the vendor and cloud name. First part of composite key should be formatted as vendor-cloudname" /> </xml-properties> </xml-element> <xml-element java-attribute="cloudRegionId" name="cloud-region-id" required="true" type="java.lang.String" xml-key="true"> <xml-properties> <xml-property name="description" value="Identifier used by the vendor for the region. Second part of composite key" /> </xml-properties> </xml-element> <xml-element java-attribute="cloudType" name="cloud-type" type="java.lang.String"> <xml-properties> <xml-property name="description" value="Type of the cloud (e.g., openstack)" /> </xml-properties> </xml-element> <xml-element java-attribute="ownerDefinedType" name="owner-defined-type" type="java.lang.String"> <xml-properties> <xml-property name="description" value="Cloud-owner defined type indicator (e.g., dcp, lcp)" /> </xml-properties> </xml-element> <xml-element java-attribute="cloudRegionVersion" name="cloud-region-version" type="java.lang.String"> <xml-properties> <xml-property name="description" value="Software version employed at the site. NOTE - THIS FIELD IS NOT KEPT UP TO DATE." /> </xml-properties> </xml-element> <xml-element java-attribute="identityUrl" name="identity-url" type="java.lang.String"> <xml-properties> <xml-property name="description" value="URL of the keystone identity service" /> </xml-properties> </xml-element> <xml-element java-attribute="cloudZone" name="cloud-zone" type="java.lang.String"> <xml-properties> <xml-property name="description" value="Zone where the cloud is homed. NOTE - THIS FIELD IS NOT CORRECTLY POPULATED." /> </xml-properties> </xml-element> <xml-element java-attribute="complexName" name="complex-name" type="java.lang.String"> <xml-properties> <xml-property name="description" value="complex name for cloud-region instance. NOTE - THIS FIELD IS NOT CORRECTLY POPULATED." /> </xml-properties> </xml-element> <xml-element default-value="false" required="true" java-attribute="sriovAutomation" name="sriov-automation" type="java.lang.Boolean"> <xml-properties> <xml-property name="defaultValue" value="false"/> <xml-property name="description" value="Whether the cloud region supports (true) or does not support (false) SR-IOV automation." /> </xml-properties> </xml-element> <xml-element java-attribute="cloudExtraInfo" name="cloud-extra-info" type="java.lang.String"> <xml-properties> <xml-property name="description" value="ESR inputs extra information about the VIM or Cloud which will be decoded by MultiVIM." /> </xml-properties> </xml-element> <xml-element java-attribute="cloudEpaCaps" name="cloud-epa-caps" type="java.lang.String"> <xml-properties> <xml-property name="description" value="MultiVIM will discover and expose EPA capabilities." /> </xml-properties> </xml-element> <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> <xml-properties> <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete." /> </xml-properties> </xml-element> <xml-element java-attribute="volumeGroups" name="volume-groups" type="inventory.aai.onap.org.v11.VolumeGroups" /> <xml-element java-attribute="tenants" name="tenants" type="inventory.aai.onap.org.v11.Tenants" /> <xml-element java-attribute="flavors" name="flavors" type="inventory.aai.onap.org.v11.Flavors" /> <xml-element java-attribute="groupAssignments" name="group-assignments" type="inventory.aai.onap.org.v11.GroupAssignments" /> <xml-element java-attribute="snapshots" name="snapshots" type="inventory.aai.onap.org.v11.Snapshots" /> <xml-element java-attribute="images" name="images" type="inventory.aai.onap.org.v11.Images" /> <xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.onap.org.v11.DvsSwitches" /> <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.onap.org.v11.OamNetworks" /> <xml-element java-attribute="availabilityZones" name="availability-zones" type="inventory.aai.onap.org.v11.AvailabilityZones" /> <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v11.RelationshipList" /> <xml-element java-attribute="esrSystemInfoList" name="esr-system-info-list" type="inventory.aai.onap.org.v11.EsrSystemInfoList" /> <xml-element container-type="java.util.ArrayList" java-attribute="vipIpv4AddressList" name="vip-ipv4-address-list" type="inventory.aai.onap.org.v11.VipIpv4AddressList" /> <xml-element container-type="java.util.ArrayList" java-attribute="vipIpv6AddressList" name="vip-ipv6-address-list" type="inventory.aai.onap.org.v11.VipIpv6AddressList" /> </java-attributes> <xml-properties> <xml-property name="description" value="cloud-region designates an installation of a cloud cluster or region or instantiation." /> <xml-property name="indexedProps" value="cloud-owner,cloud-region-id,cloud-type,owner-defined-type" /> <xml-property name="nameProps" value="owner-defined-type" /> <xml-property name="container" value="cloud-regions" /> <xml-property name="namespace" value="cloud-infrastructure" /> </xml-properties> </java-type> |
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<java-type name="CloudRegionFlavor"> <xml-root-element name="cloud-regionflavor" /> <java-attributes> <xml-element java-attribute="cloudOwnerflavorId" name="cloudflavor-ownerid" required="true" type="java.lang.String" xml-key="true"> <xml-properties> <xml-property name="description" value="IdentifiesFlavor theid, vendorexpected andto cloudbe name.unique First part of composite key should be formatted as vendor-cloudname" across cloud-region."/> </xml-properties> </xml-element> <xml-element java-attribute="cloudRegionIdflavorName" name="cloudflavor-region-idname" required="true" type="java.lang.String" xml-key="true"> <xml-properties> <xml-property name="description" value="Identifier used by the vendor for the region. Second part of composite key" Flavor name"/> </xml-properties> </xml-element> <xml-element java-attribute="cloudTypeflavorVcpus" name="cloudflavor-typevcpus" type="java.lang.StringInteger"> <xml-properties> <xml-property name="description" value="TypeNumber of CPUs"/> the cloud (e.g., openstack)" /> </xml-properties> </xml-element> <xml-element java-attribute="ownerDefinedTypeflavorRam" name="ownerflavor-defined-typeram" type="java.lang.StringInteger"> <xml-properties> <xml-property name="description" value="Cloud-ownerAmount defined type indicator (e.g., dcp, lcp)" of memory"/> </xml-properties> </xml-element> <xml-element java-attribute="cloudRegionVersionflavorDisk" name="cloudflavor-region-versiondisk" type="java.lang.StringInteger"> <xml-properties> <xml-property name="description" value="Software version employed at the site. NOTE - THIS FIELD IS NOT KEPT UP TO DATE." /> Disk space"/> </xml-properties> </xml-properties> </xml-element> <xml-element java-attribute="identityUrlflavorEphemeral" name="identityflavor-urlephemeral" type="java.lang.StringInteger"> <xml-properties> <xml-property name="description" value="URLAmount of theephemeral keystonedisk identity servicespace" /> </xml-properties> </xml-element> <xml-element java-attribute="cloudZoneflavorSwap" name="cloudflavor-zoneswap" type="java.lang.String"> <xml-properties> <xml-property name="description" value="Zoneamount whereof theswap cloud is homed. NOTE - THIS FIELD IS NOT CORRECTLY POPULATED." space allocation"/> </xml-properties> </xml-element> <xml-element java-attribute="complexNameflavorIsPublic" name="complexflavor-is-namepublic" type="java.lang.StringBoolean"> <xml-properties> <xml-property name="description" value="complex name for cloud-region instance. NOTE - THIS FIELD IS NOT CORRECTLY POPULATED." whether flavor is available to all users or private to the tenant it was created in."/> </xml-properties> </xml-element> <xml-element defaultjava-valueattribute="falseflavorSelflink" requiredname="trueflavor-selflink" java-attributerequired="sriovAutomation" name="sriov-automationtrue" type="java.lang.BooleanString"> <xml-properties> <xml-property name="defaultValue" value="false"/> <xml-property name="description" value="WhetherURL theto cloudendpoint regionwhere supportsAAI (true)can orget does not support (false) SR-IOV automation." more details"/> </xml-properties> </xml-element> <xml-element java-attribute="resourceVersionflavorDisabled" name="resourceflavor-versiondisabled" type="java.lang.StringBoolean"> <xml-properties> <xml-property name="description" value="UsedBoolean foras optimisticto concurrency.whether this Mustflavor beis emptyno on create, valid on update and delete." longer enabled"/> </xml-properties> </xml-element> <xml-element java-attribute="volumeGroupshpaCapabilities" name="volumehpa-groups" capabilities" type="inventory.aai.onap.org.v12v13.VolumeGroupsHpaCapabilities"> /> <xml-element java-attribute="tenants" name="tenants" type="inventory.aai.onap.org.v12.Tenants" />properties> <xml-elementproperty java-attributename="flavorsdescription" namevalue="flavors" type="inventory.aai.onap.org.v12.Flavors" List of HPA Capabilities associated with this flavor"/> <xml-element java-attribute="groupAssignments" name="group-assignments" type="inventory.aai.onap.org.v12.GroupAssignments" /> </xml-properties> </xml-element> <xml-element java-attribute="snapshotsresourceVersion" name="snapshotsresource-version" type="inventoryjava.aai.onap.org.v12.Snapshots" />lang.String"> <xml-element java-attribute="images" name="images" type="inventory.aai.onap.org.v12.Images" />properties> <xml-element java-attribute="dvsSwitches" <xml-property name="dvs-switches" type="inventory.aai.onap.org.v12.DvsSwitches" />description" <xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.onap.org.v12.OamNetworks" /> <xml-element java-attribute value="availabilityZones" name="availability-zones" type="inventory.aai.onap.org.v12.AvailabilityZones" />Used for optimistic concurrency. Must be empty on create, valid on update and delete."/> </xml-properties> </xml-element> <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v12.RelationshipList" /> <xml-element container-type="java.util.ArrayList" java-attribute="vipIpv4AddressList" name="vip-ipv4-address-list" type="inventory.aai.onap.org.v12v13.VipIpv4AddressListRelationshipList" /> </java-attributes> <xml-element container-type="java.util.ArrayList" java-attribute="vipIpv6AddressList" name="vip-ipv6-address-list" type="inventory.aai.onap.org.v12.VipIpv6AddressList" properties> <xml-property name="description" value="Openstack flavor."/> <xml-elementproperty java-attributename="hpaCapabilitiesnameProps" namevalue="hpa-capabilities" type="inventory.aai.onap.org.v12.HPACapabilities" flavor-name"/> </java-attributes> <xml-properties><xml-property name="indexedProps" value="flavor-name,flavor-id"/> <xml-property name="descriptiondependentOn" value="cloud-region"/> designates an installation of a cloud cluster or region or instantiation. In cloud, this could be an LCP or DCP. Cloud regions are uniquely identified by a composite key, cloud-owner + cloud-region-id. The format of the cloud-owner is vendor-cloudname" <xml-property name="container" value="flavors"/> </xml-properties> </java-type> <java-type name="HpaCapabilities"> <xml-properties> <xml-property name="description" value="Collection of HPA Capabilities"/> </xml-properties> <xml-propertyroot-element name="indexedProps" value="cloud-owner,cloud-region-id,cloud-type,owner-defined-type" hpa-capabilities"/> <java-attributes> <xml-propertyelement namecontainer-type="namePropsjava.util.ArrayList" valuejava-attribute="owner-defined-typehpaCapability" name="hpa-capability" /> <xml-property name="container" value="cloud-regions" /> <xml-property name="namespace" value="cloud-infrastructure" type="inventory.aai.onap.org.v13.HpaCapability"/> </xmljava-properties>attributes> </java-type> <!-- NEW NODES for HPA Capabilities --> <java-type name="HPACapabilitiesHpaCapability"> <xml-properties><xml-root-element name="hpa-capability"/> <java-attributes> <xml-property<xml-element java-attribute="hpaCapabilityId" name="descriptionhpa-capability-id" valuerequired="Collection of HPA Capabilities" />true" type="java.lang.String" </xml-properties> <xml-root-element name="hpa-capabilities" /> <java-attributes>xml-key="true"> <xml-element container-type="java.util.ArrayList" java-attribute="hpaCapability"properties> <xml-property name="hpa-capabilitydescription" type="inventory.aai.onap.org.v12.HPACapability" value="UUID to uniquely identify a HPA capability"/> </java-attributes>xml-properties> </java-type>xml-element> <java<xml-typeelement namejava-attribute="HPACapability"> <xml-root-elementhpaFeature" name="hpa-capabilityfeature" /> <java-attributes> <xml-element java-attributerequired="hpaCapabilityIdtrue" name="hpa-capability-id" type="java.lang.String"> /> <xml-element java-attribute="hpaCapabilityName" name="hpa-capability-name" type="java.lang.String" />properties> <xml-element java-attribute="versionproperty name="description" namevalue="hpa-version" type="java.lang.String" Name of the HPACapability"/> <xml-element java-attribute="hardware-architecture" name="hpa-hw-arch" type="java.lang.String" /> </xml-properties> </xml-element> <xml-element java-attribute="resourceVersionversion" name="resourcehpa-version" type="java.lang.String"> <xml-properties> <xml-property name="description" value="UsedHPA for optimistic concurrency.schema version"/> Must be empty on create, valid on update and delete." /> </xml-properties> </xml-element> <xml-element java-attribute="relationshipListhardwareArchitecture" name="relationshiphpa-hw-listarch" type="inventoryjava.aai.onap.org.v12.RelationshipList" />lang.String"> <xml-element container-type="java.util.ArrayList" java-attribute="hpaFeatureAtrribute" name="hpa-attribute" type="inventory.aai.onap.org.v12.HPAFeatureAtrribute" />properties> <xml-property name="description" value="Hardware architecture"/> </xml-properties> </xml-element> <xml-element container-type="java.util.ArrayList" java-attribute="hpaFeatureAtrributeresourceVersion" name="hparesource-attributeversion" type="inventoryjava.aai.onap.org.v12.HPAComplexAtrribute" /> </java-attributes> <xml-properties>lang.String"> <xml-property name="description" value="Represents a HPA capability" />properties> <xml-property name="namePropsdescription" value="hpa-capability-name" /> <xml-property name="indexedProps" value="hpa-capability-name,hardware-architecture" /> <xml-property name="dependentOn" value="cloud-region" /> <xml-property name="container" value="hpa-capabilities" /> </xml-properties> </java-type> <java-type name="HPAFeatureAttribute"> <xml-properties> <xml-property name="description" value="HPA Capability simple attributes" />Used for optimistic concurrency. Must be empty on create, valid on update and delete."/> </xml-properties> <xml-root-element name="hpa-attribute" /> <java-attributes> </xml-element> <xml-element java-attribute="hpaAttributeKeyrelationshipList" name="hparelationship-attr-key" type="java.lang.String" list" type="inventory.aai.onap.org.v13.RelationshipList"/> <xml-element container-type="java.util.ArrayList" java-attribute="hpaAttributeValuehpaFeatureAttribute" name="hpa-attrfeature-valueattribute" type="java.lang.String" /> <xml-element java-attribute="hpaAttributeValueType" name="hpa-attr-value-type" type="java.lang.String" /> </java-attributes> </java-type> <java-type name="HPAComplexAttribute"> <xml-properties> <xml-property name="description" value="HPA Capabilities with a set of FeatureAttributeList" /> </xml-properties> <xml-root-element name="hpa-complex-attribute" /> <java-attributes> type="inventory.aai.onap.org.v13.HpaFeatureAttribute"/> </java-attributes> <xml-properties> <xml-property name="description" value="Represents a HPA capability"/> <xml-property name="nameProps" value="hpa-feature"/> <xml-property name="indexedProps" value="hpa-feature,hpa-hw-arch,hpa-capability-id"/> <xml-property name="dependentOn" value="flavor"/> <xml-property name="container" value="hpa-capabilities"/> </xml-properties> </java-type> <java-type name="HpaFeatureAttribute"> <xml-root-element name="hpa-feature-attribute"/> <java-attributes> <xml-element java-attribute="hpaAttributeKey" name="hpa-attr-key" type="java.lang.String"> <xml-properties> <xml-property name="description" value="name of the specific HPA attribute"/> </xml-properties> </xml-element> <xml-element java-attribute="hpaAttributeValue" name="hpa-attr-value" type="java.lang.String"> <xml-properties> <xml-property name="description" value="JSON string specifying the value, unit and type of the specific HPA attribute"/> </xml-properties> </xml-element> <xml-element java-attribute="resourceVersion" name="resource-version" type="java.lang.String"> <xml-properties> <xml-property name="description" value="Used for optimistic concurrency. Must be empty on create, valid on update and delete."/> </xml-properties> </xml-element> <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v13.RelationshipList"/> </java-attributes> <xml-properties> <xml-elementproperty container-typename="java.util.ArrayListdescription" java-attributevalue="hpaFeatureAtrribute" HPA Capability Feature attributes"/> <xml-property name="hpa-attributecontainer" typevalue="inventory.aai.onap.org.v12.HPAFeatureAtrribute" hpa-capability"/> </javaxml-attributes>properties> </java-type> |
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{ "from": "flavor", "to": "cloud-region", "label": "org.onap.relationships.inventory.BelongsTo", "direction": "OUT", "multiplicity": "MANY2ONE", "contains-other-v": "!${direction}", "delete-other-v": "NONE", "SVC-INFRA": "NONE", "prevent-delete": "!${direction}", "default": "true", "description":"" }, { "from": "hpa-capability", "to": "cloud-regionflavor", "label": "org.onap.relationships.inventory.BelongsTo", "direction": "OUT", "multiplicity": "MANY2ONE", "contains-other-v": "!${direction}", "delete-other-v": "NONE", "SVC-INFRA": "NONE", "prevent-delete": "!${direction}", "default": "true", "description":"" }, { "from": "hpa-capability", "to": "flavorcloud-region", "label": "org.onap.relationships.inventory.AssociatedWith", "direction": "OUT", "multiplicity": "ONE2ONEMANY2ONE", "contains-other-v": "NONE", "delete-other-v": "NONE", "SVC-INFRA": "NONE", "prevent-delete": "!${direction}", "default": "true", "description":"" }, |
Sequence Diagrams
Discovery of HPA-flavors when cloud-region is added
...