FGPS Dependencies and APIs
Architecture and dependencies
Outgoing APIs
HAS must send this group (Anti-affinity in this example) definition to FGPS first so it can understand what Anti-affinity group will be requested in the followed placement request. This info is also extracted from policy.
Group API
parameters:
group_name_1:
type: string
description: First group name
group_type_1:
type: string
description: First group type
group_level_1:
type:string
description: First group level
resources:
group_1:
type: ONAP::FGPS::Group
properties:
name: { get_param: group_name_1 }
type: { get_param: group_type_1}
level: { get_param: group_level_1 }
Placement API
parameters:
availability_zone_1:
type: string
description: First AZ name
VDU_name_1:
type: string
description: First VDU id or name
flavor_1:
type:string
description: Flavor for VDU_1
group_1:
type: string
description: Affinity or Anti-affinity name for VDU_1
availability_zone_2:
type: string
description: Second AZ name
VDU_name_2:
type: string
description: Second VDU id or name
flavor_2:
type:string
description: Flavor for VDU_2
group_2:
type: string
description: Affinity or Anti-affinity name for VDU_2
resources:
VDU_1:
type: ONAP::FGPS::VDU
properties:
name: { get_param: VDU_name_1 }
flavor: { get_param: flavor_1}
availability_zone: { availability_zone_1 } // initially, empty and FGPS will set up value
metadata:
valet_groups: { get_param: group_1 } // this is the Affinity or Anti-affinity name to be used for VDU
VDU_2:
type: ONAP::FGPS::VDU
properties:
name: { get_param: VDU_name_2 }
flavor: { get_param: flavor_2}
availability_zone: { availability_zone_2 }
metadata:
valet_groups: { get_param: group_2 }
Incoming APIs
Policy Instance
# #Example: vFW, AZ level Anti-affinity #two VDUs that intend to be placed in two different AZs (Anti-affinity). #
Policy Model
Policy Model
tosca_definitions_version: tosca_simple_yaml_1_0_0
node_types:
policy.nodes.fgpsPolicy:
derived_from: policy.nodes.Root
properties:
policyScope:
type: list
description: scope where the policy is applicable
required: true
matchable: true
entry_schema:
type: string
policyType:
type: list
description: type of a policy
required: true
matchable: true
entry_schema:
type: string
consraints:
- valid_values:
- fgps
resources:
type: list
required: true
entry_schema:
type: string
identity:
type: string
required: true
groupFeatures:
type: list
required: true
entry_schema:
type:policy.data.groupFeatures_properties
data_types:
policy.data.groupFeatures_properties:
derived_from: tosca.nodes.Root
properties:
group-name:
type: string
required: true
type:
type: string
required: true
directives:
type: list
required: true
entry_schema:
type: policy.data.directives_properties
groupProperties:
type: list
required: true
entry_schema:
type: policy.data.groupProperties_properties
policy.data.directives_properties:
derived_from: tosca.nodes.Root
properties:
type:
type: string
attributes:
type: list
entry_schema:
type: policy.data.directives_attributes_properties
policy.data.directives_attributes_properties:
derived_from: tosca.nodes.Root
properties:
attribute_name:
type: string
attribute_value:
type: string
policy.data.groupProperties_properties:
derived_from: tosca.nodes.Root
properties:
group-name:
type: string
required: true
group-type:
type: string
required: true
mandatory:
type: string
required: true
level:
type: string
required: false
fgps-version:
type: string
required: true
directives:
type: list
required: true
entry_schema:
type: policy.data.directives_properties