You are viewing an old version of this content. View the current version.
Compare with Current
View Version History
« Previous
Version 46
Next »
Requirements that are kept in mind are :
- Expose HW capability of various CPU architecture (Intel x86, ARM etc...) in generic fashion.
- Provide flexibility to expose CPU architecture and vendor specific features.
- Support for multiple Clouds such as Openstack clouds, AWS Cloud, Azure Cloud etc...
- No hardcoding of HPA feature names OR attribute names in ONAP (other than Multi-Cloud plugin)
- HPA Impact on the AAI Project
- Please refer to HPA Requirement & Capability Specification
Following format is used to represent the HPACapability:
- Each cloud-region has a list of HPACapabilities and list of flavors. Each flavor is associated with set of discovered HPA capabilities. There are few ways to represent flavors and capabilities
- Approach 1:
- flavors as children to the cloud-region (Already existing)
- Represent HPA capabilities under each flavor (HPA capabilities as children of each flavor)
- Approach 2:
- 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?
- Each HPACapability is defined as
{Capability Name, Schema Version, hardware-architecture, [List of HPAAttributes] - names and values} - HPAFeatureAttribute is <hpaAttributeKey, hpaAttributeValue>
- Refer Hardware Platform Enablement In ONAP for more specific Capability names and values.
Approach1

Approach2

Example: Approach2 Run time view of A&AI graph instance

<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>
<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="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.v12.VolumeGroups" />
<xml-element java-attribute="tenants" name="tenants" type="inventory.aai.onap.org.v12.Tenants" />
<xml-element java-attribute="flavors" name="flavors" type="inventory.aai.onap.org.v12.Flavors" />
<xml-element java-attribute="groupAssignments" name="group-assignments" type="inventory.aai.onap.org.v12.GroupAssignments" />
<xml-element java-attribute="snapshots" name="snapshots" type="inventory.aai.onap.org.v12.Snapshots" />
<xml-element java-attribute="images" name="images" type="inventory.aai.onap.org.v12.Images" />
<xml-element java-attribute="dvsSwitches" name="dvs-switches" type="inventory.aai.onap.org.v12.DvsSwitches" />
<xml-element java-attribute="oamNetworks" name="oam-networks" type="inventory.aai.onap.org.v12.OamNetworks" />
<xml-element java-attribute="availabilityZones" name="availability-zones" type="inventory.aai.onap.org.v12.AvailabilityZones" />
<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.v12.VipIpv4AddressList" />
<xml-element container-type="java.util.ArrayList" java-attribute="vipIpv6AddressList" name="vip-ipv6-address-list" type="inventory.aai.onap.org.v12.VipIpv6AddressList" />
<xml-element java-attribute="hpaCapabilities" name="hpa-capabilities" type="inventory.aai.onap.org.v12.HPACapabilities" />
</java-attributes>
<xml-properties>
<xml-property name="description" 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="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>
<!-- NEW NODES for HPA Capabilities -->
<java-type name="HPACapabilities">
<xml-properties>
<xml-property name="description" value="Collection of HPA Capabilities" />
</xml-properties>
<xml-root-element name="hpa-capabilities" />
<java-attributes>
<xml-element container-type="java.util.ArrayList" java-attribute="hpaCapability" name="hpa-capability" type="inventory.aai.onap.org.v12.HPACapability" />
</java-attributes>
</java-type>
<java-type name="HPACapability">
<xml-root-element name="hpa-capability" />
<java-attributes>
<xml-element java-attribute="hpaCapabilityId" name="hpa-capability-id" type="java.lang.String" />
<xml-element java-attribute="hpaCapabilityName" name="hpa-capability-name" type="java.lang.String" />
<xml-element java-attribute="version" name="hpa-version" type="java.lang.String" />
<xml-element java-attribute="hardware-architecture" name="hpa-hw-arch" type="java.lang.String" />
<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.v12.RelationshipList" />
<xml-element container-type="java.util.ArrayList" java-attribute="hpaFeatureAtrribute" name="hpa-attribute" type="inventory.aai.onap.org.v12.HPAFeatureAtrribute" />
</java-attributes>
<xml-properties>
<xml-property name="description" value="Represents a HPA capability" />
<xml-property name="nameProps" 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" />
</xml-properties>
<xml-root-element name="hpa-attribute" />
<java-attributes>
<xml-element java-attribute="hpaAttributeKey" name="hpa-attr-key" type="java.lang.String" />
<xml-element java-attribute="hpaAttributeValue" name="hpa-attr-value" type="java.lang.String" />
<xml-element java-attribute="hpaAttributeValueType" name="hpa-attr-value-type" type="java.lang.String" />
</java-attributes>
</java-type>
{
"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-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": "flavor",
"label": "org.onap.relationships.inventory.AssociatedWith",
"direction": "OUT",
"multiplicity": "ONE2ONE",
"contains-other-v": "NONE",
"delete-other-v": "NONE",
"SVC-INFRA": "NONE",
"prevent-delete": "!${direction}",
"default": "true",
"description":""
}
Following table provides HPA features and attributes. Also, it describes matching constraints for each HPA feature. These constraints are applied while finding the best cloud-region for placing VNFC.
Attributes are represented as:
TBD...