diff options
author | AviZi <avi.ziv@amdocs.com> | 2017-06-09 02:39:56 +0300 |
---|---|---|
committer | AviZi <avi.ziv@amdocs.com> | 2017-06-09 02:39:56 +0300 |
commit | 280f8015d06af1f41a3ef12e8300801c7a5e0d54 (patch) | |
tree | 9c1d3978c04cd28068f02073038c936bb49ca9e0 /openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles | |
parent | fd3821dad11780d33c5373d74c957c442489945e (diff) |
[SDC-29] Amdocs OnBoard 1707 initial commit.
Change-Id: Ie4d12a3f574008b792899b368a0902a8b46b5370
Signed-off-by: AviZi <avi.ziv@amdocs.com>
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles')
17 files changed, 5453 insertions, 0 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/MANIFEST.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/MANIFEST.json new file mode 100644 index 0000000000..f98a0c35f5 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/MANIFEST.json @@ -0,0 +1,94 @@ +{ + "name": "vTSBC", + "description": "", + "data": [ + { + "file": "module_2_perimeta_rtp_msc_b_healing.yaml", + "type": "HEAT", + "isBase": "false" + }, + { + "file": "module_1_perimeta_ssc_a_healing.yaml", + "type": "HEAT", + "isBase": "false" + }, + { + "file": "module_1_perimeta_ssc_rebuild.yaml", + "type": "HEAT", + "isBase": "false" + }, + { + "file": "perimeta_ha_swmu.yaml", + "type": "HEAT", + "isBase": "false" + }, + { + "file": "perimeta_ha_sw_b.yaml", + "type": "HEAT", + "isBase": "false" + }, + { + "file": "module_2_perimeta_rtp_msc_a_healing.yaml", + "type": "HEAT", + "isBase": "false" + }, + { + "file": "perimeta_ha_sw.yaml", + "type": "HEAT", + "isBase": "false" + }, + { + "file": "vlan_subinterface_dual.yaml", + "type": "HEAT", + "isBase": "false" + }, + { + "file": "module_2_perimeta_rtp_msc_rebuild_scaling.yaml", + "type": "HEAT", + "isBase": "false" + }, + { + "file": "perimeta_ha_swmu_b.yaml", + "type": "HEAT", + "isBase": "false" + }, + { + "file": "module_1_perimeta_ssc_b_healing.yaml", + "type": "HEAT", + "isBase": "false" + }, + { + "file": "perimeta_ha_swmu_a.yaml", + "type": "HEAT", + "isBase": "false" + }, + { + "file": "base_perimeta_deployment_create.yaml", + "type": "HEAT", + "isBase": "true", + "data": [ + { + "file": "base_perimeta_deployment_create.env", + "type": "HEAT_ENV" + } + ] + }, + { + "file": "perimeta_ha_sw_a.yaml", + "type": "HEAT", + "isBase": "false" + }, + { + "file": "ssc_a_template.json", + "type": "OTHER" + }, + { + "file": "msc_a_template.json", + "type": "OTHER" + }, + { + "file": "custom.ini", + "type": "OTHER" + } + ] +}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/base_perimeta_deployment_create.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/base_perimeta_deployment_create.yaml new file mode 100644 index 0000000000..ce3b53340f --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/base_perimeta_deployment_create.yaml @@ -0,0 +1,442 @@ +# Heat template which intstantiates a Perimeta SSC and up to 10 Perimeta +# RTP MSCs and up to 10 Perimeta MSRP MSCs. Currently all instances are +# HA although standalone MSCs may be supported in future. +# +# This Heat template commissions, partners and configures the Perimeta SSC and +# MSCs with basic configuration defined by ssc_a_template.json, +# msc_a_template.json and mmc_a_template.json. These can be modified +# as required to obtain the required Perimeta configuration. +# +# This template puts the Perimeta configuration in place using userdata +# injected via OpenStack's ConfigDrive mechanism. +# +# This template sets up anti-affinity using server group anti-affinity and +# optionally availability zone anti-affinity. +# +# This template will work with any version of Perimeta software from 3.9.20. +# +# Pre-requisites are: +# - existing networks as follows +# - network for management traffic +# - network for HA traffic +# - network for core/trusted service traffic +# - network for access/untrusted service traffic +# - pre-loaded Perimeta image +# - suitable flavor to use for Perimeta SSC +# - suitable flavor to use for Perimeta RTP MSCs +# - suitable flavor to use for Perimeta MSRP MSCs +# - suitable keypair to use for Perimeta +# +# Virtual IP address and fixed IP addresses to use for the Perimeta instances +# must be provided as parameters. +# +# Template requires Juno or above and has been tested on Kilo. Note that in +# some deployments, Heat template validation will fail but actually creating +# a stack using the template will succeed. This is due to problems with +# Heat validating nested templates. +# +heat_template_version: 2014-10-16 + +description: > + HOT template to instantiate a Perimeta SSC plus MxRTP MSCs plus NxMSRP MSCs + +parameters: + # General VNF parameters + vnf_id: + type: string + description: ID of VNF + + vf_module_id: + type: string + description: Unique ID for this VF Module instance + + availability_zone_0: + type: string + description: Availability zone for A instances. + availability_zone_1: + type: string + description: Availability zone for B instances. + perimeta_keypair: + type: string + description: Keypair to use for accessing these Perimeta instances + constraints: + - custom_constraint: nova.keypair + ntp_server_ip_addrs: + type: string + description: NTP server IPv4 addresses, separated by commas. These must be accessible from the management network + constraints: + - allowed_pattern: "((?:\\d{1,3}\\.){3}\\d{1,3},)*((?:\\d{1,3}\\.){3}\\d{1,3})" + description: ntp_server_ip_addrs must be a comma separated list of IPv4 addresses (with no spaces) + perimeta_param_server_group: + type: string + description: UUID of server group to set anti-affinity policy for Perimeta instance. Only used when doing healing. + + # Management network parameters + mgmt_net_id: + type: string + description: Management network ID + constraints: + - custom_constraint: neutron.network + mgmt_net_plen: + type: number + description: Management network prefix length + constraints: + - range: { min: 0, max: 32 } + description: mgmt_net_plen must be between 0 and 32 + mgmt_net_default_gateway: + type: string + description: Default gateway for management network + mgmt_net_sec_groups: + type: comma_delimited_list + description: Management network security groups + + # Internal high availability network parameters + int_ha_net_id: + type: string + description: Internal HA network ID + constraints: + - custom_constraint: neutron.network + int_ha_net_plen: + type: number + description: Intermal HA network prefix length. + constraints: + - range: { min: 0, max: 32 } + description: int_ha_net_plen must be between 0 and 32 + int_ha_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with internal HA network + + # Trusted/core network parameters + trusted_net_id: + type: string + description: Network ID of trusted/core network. + constraints: + - custom_constraint: neutron.network + trusted_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with trusted/core network + + # Untrusted/access network parameters + untrusted_net_id: + type: string + description: Network ID of untrusted/access network. + constraints: + - custom_constraint: neutron.network + untrusted_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with untrusted/access network + untrusted_num_vlans: + type: number + description: Number of VLANs to connect to on the untrusted/access network + untrusted_vlan_ids: + type: comma_delimited_list + description: List of VLAN IDs to use on the untrusted/access network + untrusted_vlan_networks: + type: comma_delimited_list + description: List of Contrail VLAN networks to use on the untrusted/access network. The order and number of these must match the VLAN ID list + + # Unused network parameters + # + # This is used for connecting the unused 4th SSC service interface. + unused_port_net_id: + type: string + description: Unused network ID + constraints: + - custom_constraint: neutron.network + + # SSC parameters + ssc_flavor_name: + type: string + description: Flavor to use for creating SSC VM instance + constraints: + - custom_constraint: nova.flavor + ssc_image_name: + type: string + description: Glance image to use for launching SSC Perimeta instances. + constraints: + - custom_constraint: glance.image + ssc_a_name_0: + type: string + description: Name of VM A of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: VM A name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + ssc_b_name_0: + type: string + description: Name of VM B of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: VM B name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + ssc_system_name_0: + type: string + description: System name of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: System name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + + # SSC IP addresses on management network + ssc_mgmt_vip_0: + type: string + description: Management virtual IP address to use for SSC. Only required when predefining VIPs. + ssc_a_mgmt_ip_0: + type: string + description: Management fixed IP address to use for SSC A. Only required when predefining fixed IPs. + ssc_b_mgmt_ip_0: + type: string + description: Management fixed IP address to use for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on internal HA network + ssc_a_int_ha_ip_0: + type: string + description: HA fixed IP address to use for SSC A. Only required when predefining fixed IPs. + ssc_b_int_ha_ip_0: + type: string + description: HA fixed IP address to use for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on trusted/core network + ssc_trusted_vip_0: + type: string + description: Virtual IPv4 address on trusted/core network for SSC. + ssc_a_trusted_ip_0: + type: string + description: Fixed IPv4 address on trusted/core network for SSC A. Only required when predefining fixed IPs. + ssc_b_trusted_ip_0: + type: string + description: Fixed IPv4 address on trusted/core network for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on untrusted/access network + ssc_untrusted_vip_0: + type: string + description: Virtual IPv4 address on untrusted/access network for SSC. Only required when predefining virtual IPs. + ssc_untrusted_v6_vip_0: + type: string + description: Virtual IPv6 address on untrusted/access network for SSC. Only required when predefining virtual IPs. + ssc_a_untrusted_ip_0: + type: string + description: Fixed IPv4 address on untrusted/access network for SSC A. Only required when predefining fixed IPs. + ssc_a_untrusted_v6_ip_0: + type: string + description: Fixed IPv6 address on untrusted/access network for SSC A. Only required when predefining fixed IPs. + ssc_b_untrusted_ip_0: + type: string + description: Fixed IPv4 address on untrusted/access network for SSC B. Only required when predefining fixed IPs. + ssc_b_untrusted_v6_ip_0: + type: string + description: Fixed IPv6 address on untrusted/access network for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on management/Rf network + ssc_rf_vip_0: + type: string + description: Virtual IPv4 address on management/Rf network for SSC. Only required when predefining virtual IPs. + ssc_a_rf_ip_0: + type: string + description: Fixed IPv4 address on management/Rf network for SSC A. Only required when predefining fixed IPs. + ssc_b_rf_ip_0: + type: string + description: Fixed IPv4 address on management/Rf network for SSC B. Only required when predefining fixed IPs. + + # RTP MSC parameters + rtp_msc_count: + type: number + description: Count of required RTP MSCs + rtp_msc_flavor_name: + type: string + description: Flavor to use for creating RTP MSC VM instances + constraints: + - custom_constraint: nova.flavor + rtp_msc_image_name: + type: string + description: Glance image to use for launching RTP MSC Perimeta instances. + constraints: + - custom_constraint: glance.image + rtp_msc_a_names: + type: comma_delimited_list + description: List of names of RTP MSC VM A instances + rtp_msc_b_names: + type: comma_delimited_list + description: List of names of RTP MSC VM B instances + rtp_msc_system_names: + type: comma_delimited_list + description: List of system names of RTP MSC instances + + # RTP MSC IP addresses on management network + rtp_msc_mgmt_vips: + type: comma_delimited_list + description: Management virtual IP addresses to use for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_mgmt_ips: + type: comma_delimited_list + description: Management fixed IP addresses to use for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_mgmt_ips: + type: comma_delimited_list + description: Management fixed IP addresses to use for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on internal HA network + rtp_msc_a_int_ha_ips: + type: comma_delimited_list + description: HA fixed IP addresses to use for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_int_ha_ips: + type: comma_delimited_list + description: HA fixed IP addresses to use for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on trusted/core network + rtp_msc_trusted_vips: + type: comma_delimited_list + description: Virtual IPv4 addresses on trusted/core network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_trusted_ips: + type: comma_delimited_list + description: Fixed IPv4 addresses on trusted/core network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_trusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on trusted/core network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on untrusted/access network + rtp_msc_untrusted_vips: + type: comma_delimited_list + description: Virtual IPv4 address on untrusted/access network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_untrusted_v6_vips: + type: comma_delimited_list + description: Virtual IPv6 address on untrusted/access network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_untrusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on untrusted/access network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_untrusted_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 address on untrusted/access network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_untrusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on untrusted/access network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_untrusted_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 address on untrusted/access network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + +resources: + + # Perimeta SSC + perimeta_ssc: + type: perimeta_ha_swmu.yaml + properties: + vnf_id: { get_param: vnf_id } + vm_role: 'ssc' + vf_module_id: { get_param: vf_module_id } + system_names: [{ get_param: ssc_system_name_0 }] + vm_a_names: [{ get_param: ssc_a_name_0 }] + vm_b_names: [{ get_param: ssc_b_name_0 }] + perimeta_instance_index: 0 + perimeta_image_name: { get_param: ssc_image_name } + perimeta_flavor_name: { get_param: ssc_flavor_name } + perimeta_keypair: { get_param: perimeta_keypair } + availability_zone_0: { get_param: availability_zone_0 } + availability_zone_1: { get_param: availability_zone_1 } + mgmt_net_id: { get_param: mgmt_net_id } + mgmt_net_plen: { get_param: mgmt_net_plen } + mgmt_net_default_gateway: { get_param: mgmt_net_default_gateway } + mgmt_vips: [{ get_param: ssc_mgmt_vip_0 }] + mgmt_a_ips: [{ get_param: ssc_a_mgmt_ip_0 }] + mgmt_b_ips: [{ get_param: ssc_b_mgmt_ip_0 }] + mgmt_sec_groups: { get_param: mgmt_net_sec_groups } + ha_net_id: { get_param: int_ha_net_id } + ha_network_plen: { get_param: int_ha_net_plen } + ha_a_ips: [{ get_param: ssc_a_int_ha_ip_0 }] + ha_b_ips: [{ get_param: ssc_b_int_ha_ip_0 }] + ha_sec_groups: { get_param: int_ha_net_sec_groups } + trusted_net_id: { get_param: trusted_net_id } + trusted_vips: [{ get_param: ssc_trusted_vip_0 }] + trusted_a_ips: [{ get_param: ssc_a_trusted_ip_0 }] + trusted_b_ips: [{ get_param: ssc_b_trusted_ip_0 }] + trusted_sec_groups: { get_param: trusted_net_sec_groups } + untrusted_net_id: { get_param: untrusted_net_id } + untrusted_vips: [{ get_param: ssc_untrusted_vip_0 }] + untrusted_v6_vips: [{ get_param: ssc_untrusted_v6_vip_0 }] + untrusted_a_ips: [{ get_param: ssc_a_untrusted_ip_0 }] + untrusted_a_v6_ips: [{ get_param: ssc_a_untrusted_v6_ip_0 }] + untrusted_b_ips: [{ get_param: ssc_b_untrusted_ip_0 }] + untrusted_b_v6_ips: [{ get_param: ssc_b_untrusted_v6_ip_0 }] + untrusted_sec_groups: { get_param: untrusted_net_sec_groups } + untrusted_num_vlans: { get_param: untrusted_num_vlans } + untrusted_vlan_ids: { get_param: untrusted_vlan_ids } + untrusted_vlan_networks: { get_param: untrusted_vlan_networks } + serv3_net_id: { get_param: mgmt_net_id } + serv3_vips: [{ get_param: ssc_rf_vip_0 }] + serv3_a_ips: [{ get_param: ssc_a_rf_ip_0 }] + serv3_b_ips: [{ get_param: ssc_b_rf_ip_0 }] + serv3_sec_groups: { get_param: mgmt_net_sec_groups } + unused_net_id: { get_param: unused_port_net_id } + perimeta_param_server_group: { get_param: perimeta_param_server_group } + perimeta_config: + str_replace: + template: {get_file: ssc_a_template.json} + params: + $NTP_SERVER_IP_ADDRS: { get_param: ntp_server_ip_addrs } + $COMPLETION_PARAMS: '' + + # Perimeta RTP MSCs. + perimeta_rtp_mscs: + type: OS::Heat::ResourceGroup + properties: + count: { get_param: rtp_msc_count } + resource_def: + type: perimeta_ha_sw.yaml + properties: + vnf_id: { get_param: vnf_id } + vm_role: 'rtp_msc' + vf_module_id: { get_param: vf_module_id } + system_names: { get_param: rtp_msc_system_names } + vm_a_names: { get_param: rtp_msc_a_names } + vm_b_names: { get_param: rtp_msc_b_names } + perimeta_instance_index: "%index%" + perimeta_image_name: { get_param: rtp_msc_image_name } + perimeta_flavor_name: { get_param: rtp_msc_flavor_name } + perimeta_keypair: { get_param: perimeta_keypair } + availability_zone_0: { get_param: availability_zone_0 } + availability_zone_1: { get_param: availability_zone_1 } + mgmt_net_id: { get_param: mgmt_net_id } + mgmt_net_plen: { get_param: mgmt_net_plen } + mgmt_net_default_gateway: { get_param: mgmt_net_default_gateway } + mgmt_vips: { get_param: rtp_msc_mgmt_vips } + mgmt_a_ips: { get_param: rtp_msc_a_mgmt_ips } + mgmt_b_ips: { get_param: rtp_msc_b_mgmt_ips } + mgmt_sec_groups: { get_param: mgmt_net_sec_groups } + ha_net_id: { get_param: int_ha_net_id } + ha_network_plen: { get_param: int_ha_net_plen } + ha_a_ips: { get_param: rtp_msc_a_int_ha_ips } + ha_b_ips: { get_param: rtp_msc_b_int_ha_ips } + ha_sec_groups: { get_param: int_ha_net_sec_groups } + trusted_net_id: { get_param: trusted_net_id } + trusted_vips: { get_param: rtp_msc_trusted_vips } + trusted_a_ips: { get_param: rtp_msc_a_trusted_ips } + trusted_b_ips: { get_param: rtp_msc_b_trusted_ips } + trusted_sec_groups: { get_param: trusted_net_sec_groups } + untrusted_net_id: { get_param: untrusted_net_id } + untrusted_vips: { get_param: rtp_msc_untrusted_vips } + untrusted_v6_vips: { get_param: rtp_msc_untrusted_v6_vips } + untrusted_a_ips: { get_param: rtp_msc_a_untrusted_ips } + untrusted_a_v6_ips: { get_param: rtp_msc_a_untrusted_v6_ips } + untrusted_b_ips: { get_param: rtp_msc_b_untrusted_ips } + untrusted_b_v6_ips: { get_param: rtp_msc_b_untrusted_v6_ips } + untrusted_sec_groups: { get_param: untrusted_net_sec_groups } + untrusted_num_vlans: { get_param: untrusted_num_vlans } + untrusted_vlan_ids: { get_param: untrusted_vlan_ids } + untrusted_vlan_networks: { get_param: untrusted_vlan_networks } + perimeta_param_server_group: { get_param: perimeta_param_server_group } + perimeta_config: + str_replace: + template: {get_file: msc_a_template.json} + params: + $NTP_SERVER_IP_ADDRS: { get_param: ntp_server_ip_addrs } + $COMPLETION_PARAMS: '' + + +outputs: + + ssc_server_group: + description: Server group for SSC pair + value: { get_attr: [ perimeta_ssc, server_group_used ] } + + rtp_msc_server_groups: + description: Server groups for RTP MSC pairs + value: { get_attr: [ perimeta_rtp_mscs, server_group_used ] } + + + msw_template_version: + description: Version of the heat templates used to instantiate the VMs + value: "4.0.1 - 2016-10-28" diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_1_perimeta_ssc_a_healing.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_1_perimeta_ssc_a_healing.yaml new file mode 100644 index 0000000000..d00c51a73f --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_1_perimeta_ssc_a_healing.yaml @@ -0,0 +1,384 @@ +# Heat template which intstantiates a Perimeta SSC and up to 10 Perimeta +# RTP MSCs and up to 10 Perimeta MSRP MSCs. Currently all instances are +# HA although standalone MSCs may be supported in future. +# +# This Heat template commissions, partners and configures the Perimeta SSC and +# MSCs with basic configuration defined by ssc_a_template.json, +# msc_a_template.json and mmc_a_template.json. These can be modified +# as required to obtain the required Perimeta configuration. +# +# This template puts the Perimeta configuration in place using userdata +# injected via OpenStack's ConfigDrive mechanism. +# +# This template sets up anti-affinity using server group anti-affinity and +# optionally availability zone anti-affinity. +# +# This template will work with any version of Perimeta software from 3.9.20. +# +# Pre-requisites are: +# - existing networks as follows +# - network for management traffic +# - network for HA traffic +# - network for core/trusted service traffic +# - network for access/untrusted service traffic +# - pre-loaded Perimeta image +# - suitable flavor to use for Perimeta SSC +# - suitable flavor to use for Perimeta RTP MSCs +# - suitable flavor to use for Perimeta MSRP MSCs +# - suitable keypair to use for Perimeta +# +# Virtual IP address and fixed IP addresses to use for the Perimeta instances +# must be provided as parameters. +# +# Template requires Juno or above and has been tested on Kilo. Note that in +# some deployments, Heat template validation will fail but actually creating +# a stack using the template will succeed. This is due to problems with +# Heat validating nested templates. +# +heat_template_version: 2014-10-16 + +description: > + HOT template to instantiate a Perimeta SSC plus MxRTP MSCs plus NxMSRP MSCs + +parameters: + # General VNF parameters + vnf_id: + type: string + description: ID of VNF + + vf_module_id: + type: string + description: Unique ID for this VF Module instance + + availability_zone_0: + type: string + description: Availability zone for A instances. + availability_zone_1: + type: string + description: Availability zone for B instances. + perimeta_keypair: + type: string + description: Keypair to use for accessing these Perimeta instances + constraints: + - custom_constraint: nova.keypair + ntp_server_ip_addrs: + type: string + description: NTP server IPv4 addresses, separated by commas. These must be accessible from the management network + constraints: + - allowed_pattern: "((?:\\d{1,3}\\.){3}\\d{1,3},)*((?:\\d{1,3}\\.){3}\\d{1,3})" + description: ntp_server_ip_addrs must be a comma separated list of IPv4 addresses (with no spaces) + perimeta_param_server_group: + type: string + description: UUID of server group to set anti-affinity policy for Perimeta instance. Only used when doing healing. + + # Management network parameters + mgmt_net_id: + type: string + description: Management network ID + constraints: + - custom_constraint: neutron.network + mgmt_net_plen: + type: number + description: Management network prefix length + constraints: + - range: { min: 0, max: 32 } + description: mgmt_net_plen must be between 0 and 32 + mgmt_net_default_gateway: + type: string + description: Default gateway for management network + mgmt_net_sec_groups: + type: comma_delimited_list + description: Management network security groups + + # Internal high availability network parameters + int_ha_net_id: + type: string + description: Internal HA network ID + constraints: + - custom_constraint: neutron.network + int_ha_net_plen: + type: number + description: Intermal HA network prefix length. + constraints: + - range: { min: 0, max: 32 } + description: int_ha_net_plen must be between 0 and 32 + int_ha_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with internal HA network + + # Trusted/core network parameters + trusted_net_id: + type: string + description: Network ID of trusted/core network. + constraints: + - custom_constraint: neutron.network + trusted_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with trusted/core network + + # Untrusted/access network parameters + untrusted_net_id: + type: string + description: Network ID of untrusted/access network. + constraints: + - custom_constraint: neutron.network + untrusted_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with untrusted/access network + untrusted_num_vlans: + type: number + description: Number of VLANs to connect to on the untrusted/access network + untrusted_vlan_ids: + type: comma_delimited_list + description: List of VLAN IDs to use on the untrusted/access network + untrusted_vlan_networks: + type: comma_delimited_list + description: List of Contrail VLAN networks to use on the untrusted/access network. The order and number of these must match the VLAN ID list + + # Unused network parameters + # + # This is used for connecting the unused 4th SSC service interface. + unused_port_net_id: + type: string + description: Unused network ID + constraints: + - custom_constraint: neutron.network + + # SSC parameters + ssc_flavor_name: + type: string + description: Flavor to use for creating SSC VM instance + constraints: + - custom_constraint: nova.flavor + ssc_image_name: + type: string + description: Glance image to use for launching SSC Perimeta instances. + constraints: + - custom_constraint: glance.image + ssc_a_name_0: + type: string + description: Name of VM A of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: VM A name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + ssc_b_name_0: + type: string + description: Name of VM B of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: VM B name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + ssc_system_name_0: + type: string + description: System name of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: System name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + + # SSC IP addresses on management network + ssc_mgmt_vip_0: + type: string + description: Management virtual IP address to use for SSC. Only required when predefining VIPs. + ssc_a_mgmt_ip_0: + type: string + description: Management fixed IP address to use for SSC A. Only required when predefining fixed IPs. + ssc_b_mgmt_ip_0: + type: string + description: Management fixed IP address to use for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on internal HA network + ssc_a_int_ha_ip_0: + type: string + description: HA fixed IP address to use for SSC A. Only required when predefining fixed IPs. + ssc_b_int_ha_ip_0: + type: string + description: HA fixed IP address to use for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on trusted/core network + ssc_trusted_vip_0: + type: string + description: Virtual IPv4 address on trusted/core network for SSC. + ssc_a_trusted_ip_0: + type: string + description: Fixed IPv4 address on trusted/core network for SSC A. Only required when predefining fixed IPs. + ssc_b_trusted_ip_0: + type: string + description: Fixed IPv4 address on trusted/core network for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on untrusted/access network + ssc_untrusted_vip_0: + type: string + description: Virtual IPv4 address on untrusted/access network for SSC. Only required when predefining virtual IPs. + ssc_untrusted_v6_vip_0: + type: string + description: Virtual IPv6 address on untrusted/access network for SSC. Only required when predefining virtual IPs. + ssc_a_untrusted_ip_0: + type: string + description: Fixed IPv4 address on untrusted/access network for SSC A. Only required when predefining fixed IPs. + ssc_a_untrusted_v6_ip_0: + type: string + description: Fixed IPv6 address on untrusted/access network for SSC A. Only required when predefining fixed IPs. + ssc_b_untrusted_ip_0: + type: string + description: Fixed IPv4 address on untrusted/access network for SSC B. Only required when predefining fixed IPs. + ssc_b_untrusted_v6_ip_0: + type: string + description: Fixed IPv6 address on untrusted/access network for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on management/Rf network + ssc_rf_vip_0: + type: string + description: Virtual IPv4 address on management/Rf network for SSC. Only required when predefining virtual IPs. + ssc_a_rf_ip_0: + type: string + description: Fixed IPv4 address on management/Rf network for SSC A. Only required when predefining fixed IPs. + ssc_b_rf_ip_0: + type: string + description: Fixed IPv4 address on management/Rf network for SSC B. Only required when predefining fixed IPs. + + # RTP MSC parameters + rtp_msc_count: + type: number + description: Count of required RTP MSCs + rtp_msc_flavor_name: + type: string + description: Flavor to use for creating RTP MSC VM instances + constraints: + - custom_constraint: nova.flavor + rtp_msc_image_name: + type: string + description: Glance image to use for launching RTP MSC Perimeta instances. + constraints: + - custom_constraint: glance.image + rtp_msc_a_names: + type: comma_delimited_list + description: List of names of RTP MSC VM A instances + rtp_msc_b_names: + type: comma_delimited_list + description: List of names of RTP MSC VM B instances + rtp_msc_system_names: + type: comma_delimited_list + description: List of system names of RTP MSC instances + + # RTP MSC IP addresses on management network + rtp_msc_mgmt_vips: + type: comma_delimited_list + description: Management virtual IP addresses to use for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_mgmt_ips: + type: comma_delimited_list + description: Management fixed IP addresses to use for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_mgmt_ips: + type: comma_delimited_list + description: Management fixed IP addresses to use for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on internal HA network + rtp_msc_a_int_ha_ips: + type: comma_delimited_list + description: HA fixed IP addresses to use for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_int_ha_ips: + type: comma_delimited_list + description: HA fixed IP addresses to use for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on trusted/core network + rtp_msc_trusted_vips: + type: comma_delimited_list + description: Virtual IPv4 addresses on trusted/core network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_trusted_ips: + type: comma_delimited_list + description: Fixed IPv4 addresses on trusted/core network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_trusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on trusted/core network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on untrusted/access network + rtp_msc_untrusted_vips: + type: comma_delimited_list + description: Virtual IPv4 address on untrusted/access network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_untrusted_v6_vips: + type: comma_delimited_list + description: Virtual IPv6 address on untrusted/access network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_untrusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on untrusted/access network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_untrusted_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 address on untrusted/access network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_untrusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on untrusted/access network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_untrusted_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 address on untrusted/access network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + +resources: + + # Perimeta SSC + perimeta_ssc: + type: perimeta_ha_swmu_a.yaml + properties: + vnf_id: { get_param: vnf_id } + vm_role: 'ssc' + vf_module_id: { get_param: vf_module_id } + system_names: [{ get_param: ssc_system_name_0 }] + vm_a_names: [{ get_param: ssc_a_name_0 }] + vm_b_names: [{ get_param: ssc_b_name_0 }] + perimeta_instance_index: 0 + perimeta_image_name: { get_param: ssc_image_name } + perimeta_flavor_name: { get_param: ssc_flavor_name } + perimeta_keypair: { get_param: perimeta_keypair } + availability_zone_0: { get_param: availability_zone_0 } + availability_zone_1: { get_param: availability_zone_1 } + mgmt_net_id: { get_param: mgmt_net_id } + mgmt_net_plen: { get_param: mgmt_net_plen } + mgmt_net_default_gateway: { get_param: mgmt_net_default_gateway } + mgmt_vips: [{ get_param: ssc_mgmt_vip_0 }] + mgmt_a_ips: [{ get_param: ssc_a_mgmt_ip_0 }] + mgmt_b_ips: [{ get_param: ssc_b_mgmt_ip_0 }] + mgmt_sec_groups: { get_param: mgmt_net_sec_groups } + ha_net_id: { get_param: int_ha_net_id } + ha_network_plen: { get_param: int_ha_net_plen } + ha_a_ips: [{ get_param: ssc_a_int_ha_ip_0 }] + ha_b_ips: [{ get_param: ssc_b_int_ha_ip_0 }] + ha_sec_groups: { get_param: int_ha_net_sec_groups } + trusted_net_id: { get_param: trusted_net_id } + trusted_vips: [{ get_param: ssc_trusted_vip_0 }] + trusted_a_ips: [{ get_param: ssc_a_trusted_ip_0 }] + trusted_b_ips: [{ get_param: ssc_b_trusted_ip_0 }] + trusted_sec_groups: { get_param: trusted_net_sec_groups } + untrusted_net_id: { get_param: untrusted_net_id } + untrusted_vips: [{ get_param: ssc_untrusted_vip_0 }] + untrusted_v6_vips: [{ get_param: ssc_untrusted_v6_vip_0 }] + untrusted_a_ips: [{ get_param: ssc_a_untrusted_ip_0 }] + untrusted_a_v6_ips: [{ get_param: ssc_a_untrusted_v6_ip_0 }] + untrusted_b_ips: [{ get_param: ssc_b_untrusted_ip_0 }] + untrusted_b_v6_ips: [{ get_param: ssc_b_untrusted_v6_ip_0 }] + untrusted_sec_groups: { get_param: untrusted_net_sec_groups } + untrusted_num_vlans: { get_param: untrusted_num_vlans } + untrusted_vlan_ids: { get_param: untrusted_vlan_ids } + untrusted_vlan_networks: { get_param: untrusted_vlan_networks } + serv3_net_id: { get_param: mgmt_net_id } + serv3_vips: [{ get_param: ssc_rf_vip_0 }] + serv3_a_ips: [{ get_param: ssc_a_rf_ip_0 }] + serv3_b_ips: [{ get_param: ssc_b_rf_ip_0 }] + serv3_sec_groups: { get_param: mgmt_net_sec_groups } + unused_net_id: { get_param: unused_port_net_id } + perimeta_param_server_group: { get_param: perimeta_param_server_group } + perimeta_config: + str_replace: + template: {get_file: ssc_a_template.json} + params: + $NTP_SERVER_IP_ADDRS: { get_param: ntp_server_ip_addrs } + $COMPLETION_PARAMS: '' + + + +outputs: + + ssc_server_group: + description: Server group for SSC pair + value: { get_attr: [ perimeta_ssc, server_group_used ] } + + + + msw_template_version: + description: Version of the heat templates used to instantiate the VMs + value: "4.0.1 - 2016-10-28" diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_1_perimeta_ssc_b_healing.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_1_perimeta_ssc_b_healing.yaml new file mode 100644 index 0000000000..8af8a1a7ea --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_1_perimeta_ssc_b_healing.yaml @@ -0,0 +1,384 @@ +# Heat template which intstantiates a Perimeta SSC and up to 10 Perimeta +# RTP MSCs and up to 10 Perimeta MSRP MSCs. Currently all instances are +# HA although standalone MSCs may be supported in future. +# +# This Heat template commissions, partners and configures the Perimeta SSC and +# MSCs with basic configuration defined by ssc_a_template.json, +# msc_a_template.json and mmc_a_template.json. These can be modified +# as required to obtain the required Perimeta configuration. +# +# This template puts the Perimeta configuration in place using userdata +# injected via OpenStack's ConfigDrive mechanism. +# +# This template sets up anti-affinity using server group anti-affinity and +# optionally availability zone anti-affinity. +# +# This template will work with any version of Perimeta software from 3.9.20. +# +# Pre-requisites are: +# - existing networks as follows +# - network for management traffic +# - network for HA traffic +# - network for core/trusted service traffic +# - network for access/untrusted service traffic +# - pre-loaded Perimeta image +# - suitable flavor to use for Perimeta SSC +# - suitable flavor to use for Perimeta RTP MSCs +# - suitable flavor to use for Perimeta MSRP MSCs +# - suitable keypair to use for Perimeta +# +# Virtual IP address and fixed IP addresses to use for the Perimeta instances +# must be provided as parameters. +# +# Template requires Juno or above and has been tested on Kilo. Note that in +# some deployments, Heat template validation will fail but actually creating +# a stack using the template will succeed. This is due to problems with +# Heat validating nested templates. +# +heat_template_version: 2014-10-16 + +description: > + HOT template to instantiate a Perimeta SSC plus MxRTP MSCs plus NxMSRP MSCs + +parameters: + # General VNF parameters + vnf_id: + type: string + description: ID of VNF + + vf_module_id: + type: string + description: Unique ID for this VF Module instance + + availability_zone_0: + type: string + description: Availability zone for A instances. + availability_zone_1: + type: string + description: Availability zone for B instances. + perimeta_keypair: + type: string + description: Keypair to use for accessing these Perimeta instances + constraints: + - custom_constraint: nova.keypair + ntp_server_ip_addrs: + type: string + description: NTP server IPv4 addresses, separated by commas. These must be accessible from the management network + constraints: + - allowed_pattern: "((?:\\d{1,3}\\.){3}\\d{1,3},)*((?:\\d{1,3}\\.){3}\\d{1,3})" + description: ntp_server_ip_addrs must be a comma separated list of IPv4 addresses (with no spaces) + perimeta_param_server_group: + type: string + description: UUID of server group to set anti-affinity policy for Perimeta instance. Only used when doing healing. + + # Management network parameters + mgmt_net_id: + type: string + description: Management network ID + constraints: + - custom_constraint: neutron.network + mgmt_net_plen: + type: number + description: Management network prefix length + constraints: + - range: { min: 0, max: 32 } + description: mgmt_net_plen must be between 0 and 32 + mgmt_net_default_gateway: + type: string + description: Default gateway for management network + mgmt_net_sec_groups: + type: comma_delimited_list + description: Management network security groups + + # Internal high availability network parameters + int_ha_net_id: + type: string + description: Internal HA network ID + constraints: + - custom_constraint: neutron.network + int_ha_net_plen: + type: number + description: Intermal HA network prefix length. + constraints: + - range: { min: 0, max: 32 } + description: int_ha_net_plen must be between 0 and 32 + int_ha_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with internal HA network + + # Trusted/core network parameters + trusted_net_id: + type: string + description: Network ID of trusted/core network. + constraints: + - custom_constraint: neutron.network + trusted_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with trusted/core network + + # Untrusted/access network parameters + untrusted_net_id: + type: string + description: Network ID of untrusted/access network. + constraints: + - custom_constraint: neutron.network + untrusted_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with untrusted/access network + untrusted_num_vlans: + type: number + description: Number of VLANs to connect to on the untrusted/access network + untrusted_vlan_ids: + type: comma_delimited_list + description: List of VLAN IDs to use on the untrusted/access network + untrusted_vlan_networks: + type: comma_delimited_list + description: List of Contrail VLAN networks to use on the untrusted/access network. The order and number of these must match the VLAN ID list + + # Unused network parameters + # + # This is used for connecting the unused 4th SSC service interface. + unused_port_net_id: + type: string + description: Unused network ID + constraints: + - custom_constraint: neutron.network + + # SSC parameters + ssc_flavor_name: + type: string + description: Flavor to use for creating SSC VM instance + constraints: + - custom_constraint: nova.flavor + ssc_image_name: + type: string + description: Glance image to use for launching SSC Perimeta instances. + constraints: + - custom_constraint: glance.image + ssc_a_name_0: + type: string + description: Name of VM A of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: VM A name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + ssc_b_name_0: + type: string + description: Name of VM B of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: VM B name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + ssc_system_name_0: + type: string + description: System name of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: System name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + + # SSC IP addresses on management network + ssc_mgmt_vip_0: + type: string + description: Management virtual IP address to use for SSC. Only required when predefining VIPs. + ssc_a_mgmt_ip_0: + type: string + description: Management fixed IP address to use for SSC A. Only required when predefining fixed IPs. + ssc_b_mgmt_ip_0: + type: string + description: Management fixed IP address to use for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on internal HA network + ssc_a_int_ha_ip_0: + type: string + description: HA fixed IP address to use for SSC A. Only required when predefining fixed IPs. + ssc_b_int_ha_ip_0: + type: string + description: HA fixed IP address to use for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on trusted/core network + ssc_trusted_vip_0: + type: string + description: Virtual IPv4 address on trusted/core network for SSC. + ssc_a_trusted_ip_0: + type: string + description: Fixed IPv4 address on trusted/core network for SSC A. Only required when predefining fixed IPs. + ssc_b_trusted_ip_0: + type: string + description: Fixed IPv4 address on trusted/core network for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on untrusted/access network + ssc_untrusted_vip_0: + type: string + description: Virtual IPv4 address on untrusted/access network for SSC. Only required when predefining virtual IPs. + ssc_untrusted_v6_vip_0: + type: string + description: Virtual IPv6 address on untrusted/access network for SSC. Only required when predefining virtual IPs. + ssc_a_untrusted_ip_0: + type: string + description: Fixed IPv4 address on untrusted/access network for SSC A. Only required when predefining fixed IPs. + ssc_a_untrusted_v6_ip_0: + type: string + description: Fixed IPv6 address on untrusted/access network for SSC A. Only required when predefining fixed IPs. + ssc_b_untrusted_ip_0: + type: string + description: Fixed IPv4 address on untrusted/access network for SSC B. Only required when predefining fixed IPs. + ssc_b_untrusted_v6_ip_0: + type: string + description: Fixed IPv6 address on untrusted/access network for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on management/Rf network + ssc_rf_vip_0: + type: string + description: Virtual IPv4 address on management/Rf network for SSC. Only required when predefining virtual IPs. + ssc_a_rf_ip_0: + type: string + description: Fixed IPv4 address on management/Rf network for SSC A. Only required when predefining fixed IPs. + ssc_b_rf_ip_0: + type: string + description: Fixed IPv4 address on management/Rf network for SSC B. Only required when predefining fixed IPs. + + # RTP MSC parameters + rtp_msc_count: + type: number + description: Count of required RTP MSCs + rtp_msc_flavor_name: + type: string + description: Flavor to use for creating RTP MSC VM instances + constraints: + - custom_constraint: nova.flavor + rtp_msc_image_name: + type: string + description: Glance image to use for launching RTP MSC Perimeta instances. + constraints: + - custom_constraint: glance.image + rtp_msc_a_names: + type: comma_delimited_list + description: List of names of RTP MSC VM A instances + rtp_msc_b_names: + type: comma_delimited_list + description: List of names of RTP MSC VM B instances + rtp_msc_system_names: + type: comma_delimited_list + description: List of system names of RTP MSC instances + + # RTP MSC IP addresses on management network + rtp_msc_mgmt_vips: + type: comma_delimited_list + description: Management virtual IP addresses to use for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_mgmt_ips: + type: comma_delimited_list + description: Management fixed IP addresses to use for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_mgmt_ips: + type: comma_delimited_list + description: Management fixed IP addresses to use for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on internal HA network + rtp_msc_a_int_ha_ips: + type: comma_delimited_list + description: HA fixed IP addresses to use for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_int_ha_ips: + type: comma_delimited_list + description: HA fixed IP addresses to use for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on trusted/core network + rtp_msc_trusted_vips: + type: comma_delimited_list + description: Virtual IPv4 addresses on trusted/core network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_trusted_ips: + type: comma_delimited_list + description: Fixed IPv4 addresses on trusted/core network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_trusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on trusted/core network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on untrusted/access network + rtp_msc_untrusted_vips: + type: comma_delimited_list + description: Virtual IPv4 address on untrusted/access network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_untrusted_v6_vips: + type: comma_delimited_list + description: Virtual IPv6 address on untrusted/access network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_untrusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on untrusted/access network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_untrusted_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 address on untrusted/access network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_untrusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on untrusted/access network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_untrusted_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 address on untrusted/access network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + +resources: + + # Perimeta SSC + perimeta_ssc: + type: perimeta_ha_swmu_b.yaml + properties: + vnf_id: { get_param: vnf_id } + vm_role: 'ssc' + vf_module_id: { get_param: vf_module_id } + system_names: [{ get_param: ssc_system_name_0 }] + vm_a_names: [{ get_param: ssc_a_name_0 }] + vm_b_names: [{ get_param: ssc_b_name_0 }] + perimeta_instance_index: 0 + perimeta_image_name: { get_param: ssc_image_name } + perimeta_flavor_name: { get_param: ssc_flavor_name } + perimeta_keypair: { get_param: perimeta_keypair } + availability_zone_0: { get_param: availability_zone_0 } + availability_zone_1: { get_param: availability_zone_1 } + mgmt_net_id: { get_param: mgmt_net_id } + mgmt_net_plen: { get_param: mgmt_net_plen } + mgmt_net_default_gateway: { get_param: mgmt_net_default_gateway } + mgmt_vips: [{ get_param: ssc_mgmt_vip_0 }] + mgmt_a_ips: [{ get_param: ssc_a_mgmt_ip_0 }] + mgmt_b_ips: [{ get_param: ssc_b_mgmt_ip_0 }] + mgmt_sec_groups: { get_param: mgmt_net_sec_groups } + ha_net_id: { get_param: int_ha_net_id } + ha_network_plen: { get_param: int_ha_net_plen } + ha_a_ips: [{ get_param: ssc_a_int_ha_ip_0 }] + ha_b_ips: [{ get_param: ssc_b_int_ha_ip_0 }] + ha_sec_groups: { get_param: int_ha_net_sec_groups } + trusted_net_id: { get_param: trusted_net_id } + trusted_vips: [{ get_param: ssc_trusted_vip_0 }] + trusted_a_ips: [{ get_param: ssc_a_trusted_ip_0 }] + trusted_b_ips: [{ get_param: ssc_b_trusted_ip_0 }] + trusted_sec_groups: { get_param: trusted_net_sec_groups } + untrusted_net_id: { get_param: untrusted_net_id } + untrusted_vips: [{ get_param: ssc_untrusted_vip_0 }] + untrusted_v6_vips: [{ get_param: ssc_untrusted_v6_vip_0 }] + untrusted_a_ips: [{ get_param: ssc_a_untrusted_ip_0 }] + untrusted_a_v6_ips: [{ get_param: ssc_a_untrusted_v6_ip_0 }] + untrusted_b_ips: [{ get_param: ssc_b_untrusted_ip_0 }] + untrusted_b_v6_ips: [{ get_param: ssc_b_untrusted_v6_ip_0 }] + untrusted_sec_groups: { get_param: untrusted_net_sec_groups } + untrusted_num_vlans: { get_param: untrusted_num_vlans } + untrusted_vlan_ids: { get_param: untrusted_vlan_ids } + untrusted_vlan_networks: { get_param: untrusted_vlan_networks } + serv3_net_id: { get_param: mgmt_net_id } + serv3_vips: [{ get_param: ssc_rf_vip_0 }] + serv3_a_ips: [{ get_param: ssc_a_rf_ip_0 }] + serv3_b_ips: [{ get_param: ssc_b_rf_ip_0 }] + serv3_sec_groups: { get_param: mgmt_net_sec_groups } + unused_net_id: { get_param: unused_port_net_id } + perimeta_param_server_group: { get_param: perimeta_param_server_group } + perimeta_config: + str_replace: + template: {get_file: ssc_a_template.json} + params: + $NTP_SERVER_IP_ADDRS: { get_param: ntp_server_ip_addrs } + $COMPLETION_PARAMS: '' + + + +outputs: + + ssc_server_group: + description: Server group for SSC pair + value: { get_attr: [ perimeta_ssc, server_group_used ] } + + + + msw_template_version: + description: Version of the heat templates used to instantiate the VMs + value: "4.0.1 - 2016-10-28" diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_1_perimeta_ssc_rebuild.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_1_perimeta_ssc_rebuild.yaml new file mode 100644 index 0000000000..0a8fc31207 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_1_perimeta_ssc_rebuild.yaml @@ -0,0 +1,384 @@ +# Heat template which intstantiates a Perimeta SSC and up to 10 Perimeta +# RTP MSCs and up to 10 Perimeta MSRP MSCs. Currently all instances are +# HA although standalone MSCs may be supported in future. +# +# This Heat template commissions, partners and configures the Perimeta SSC and +# MSCs with basic configuration defined by ssc_a_template.json, +# msc_a_template.json and mmc_a_template.json. These can be modified +# as required to obtain the required Perimeta configuration. +# +# This template puts the Perimeta configuration in place using userdata +# injected via OpenStack's ConfigDrive mechanism. +# +# This template sets up anti-affinity using server group anti-affinity and +# optionally availability zone anti-affinity. +# +# This template will work with any version of Perimeta software from 3.9.20. +# +# Pre-requisites are: +# - existing networks as follows +# - network for management traffic +# - network for HA traffic +# - network for core/trusted service traffic +# - network for access/untrusted service traffic +# - pre-loaded Perimeta image +# - suitable flavor to use for Perimeta SSC +# - suitable flavor to use for Perimeta RTP MSCs +# - suitable flavor to use for Perimeta MSRP MSCs +# - suitable keypair to use for Perimeta +# +# Virtual IP address and fixed IP addresses to use for the Perimeta instances +# must be provided as parameters. +# +# Template requires Juno or above and has been tested on Kilo. Note that in +# some deployments, Heat template validation will fail but actually creating +# a stack using the template will succeed. This is due to problems with +# Heat validating nested templates. +# +heat_template_version: 2014-10-16 + +description: > + HOT template to instantiate a Perimeta SSC plus MxRTP MSCs plus NxMSRP MSCs + +parameters: + # General VNF parameters + vnf_id: + type: string + description: ID of VNF + + vf_module_id: + type: string + description: Unique ID for this VF Module instance + + availability_zone_0: + type: string + description: Availability zone for A instances. + availability_zone_1: + type: string + description: Availability zone for B instances. + perimeta_keypair: + type: string + description: Keypair to use for accessing these Perimeta instances + constraints: + - custom_constraint: nova.keypair + ntp_server_ip_addrs: + type: string + description: NTP server IPv4 addresses, separated by commas. These must be accessible from the management network + constraints: + - allowed_pattern: "((?:\\d{1,3}\\.){3}\\d{1,3},)*((?:\\d{1,3}\\.){3}\\d{1,3})" + description: ntp_server_ip_addrs must be a comma separated list of IPv4 addresses (with no spaces) + perimeta_param_server_group: + type: string + description: UUID of server group to set anti-affinity policy for Perimeta instance. Only used when doing healing. + + # Management network parameters + mgmt_net_id: + type: string + description: Management network ID + constraints: + - custom_constraint: neutron.network + mgmt_net_plen: + type: number + description: Management network prefix length + constraints: + - range: { min: 0, max: 32 } + description: mgmt_net_plen must be between 0 and 32 + mgmt_net_default_gateway: + type: string + description: Default gateway for management network + mgmt_net_sec_groups: + type: comma_delimited_list + description: Management network security groups + + # Internal high availability network parameters + int_ha_net_id: + type: string + description: Internal HA network ID + constraints: + - custom_constraint: neutron.network + int_ha_net_plen: + type: number + description: Intermal HA network prefix length. + constraints: + - range: { min: 0, max: 32 } + description: int_ha_net_plen must be between 0 and 32 + int_ha_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with internal HA network + + # Trusted/core network parameters + trusted_net_id: + type: string + description: Network ID of trusted/core network. + constraints: + - custom_constraint: neutron.network + trusted_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with trusted/core network + + # Untrusted/access network parameters + untrusted_net_id: + type: string + description: Network ID of untrusted/access network. + constraints: + - custom_constraint: neutron.network + untrusted_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with untrusted/access network + untrusted_num_vlans: + type: number + description: Number of VLANs to connect to on the untrusted/access network + untrusted_vlan_ids: + type: comma_delimited_list + description: List of VLAN IDs to use on the untrusted/access network + untrusted_vlan_networks: + type: comma_delimited_list + description: List of Contrail VLAN networks to use on the untrusted/access network. The order and number of these must match the VLAN ID list + + # Unused network parameters + # + # This is used for connecting the unused 4th SSC service interface. + unused_port_net_id: + type: string + description: Unused network ID + constraints: + - custom_constraint: neutron.network + + # SSC parameters + ssc_flavor_name: + type: string + description: Flavor to use for creating SSC VM instance + constraints: + - custom_constraint: nova.flavor + ssc_image_name: + type: string + description: Glance image to use for launching SSC Perimeta instances. + constraints: + - custom_constraint: glance.image + ssc_a_name_0: + type: string + description: Name of VM A of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: VM A name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + ssc_b_name_0: + type: string + description: Name of VM B of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: VM B name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + ssc_system_name_0: + type: string + description: System name of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: System name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + + # SSC IP addresses on management network + ssc_mgmt_vip_0: + type: string + description: Management virtual IP address to use for SSC. Only required when predefining VIPs. + ssc_a_mgmt_ip_0: + type: string + description: Management fixed IP address to use for SSC A. Only required when predefining fixed IPs. + ssc_b_mgmt_ip_0: + type: string + description: Management fixed IP address to use for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on internal HA network + ssc_a_int_ha_ip_0: + type: string + description: HA fixed IP address to use for SSC A. Only required when predefining fixed IPs. + ssc_b_int_ha_ip_0: + type: string + description: HA fixed IP address to use for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on trusted/core network + ssc_trusted_vip_0: + type: string + description: Virtual IPv4 address on trusted/core network for SSC. + ssc_a_trusted_ip_0: + type: string + description: Fixed IPv4 address on trusted/core network for SSC A. Only required when predefining fixed IPs. + ssc_b_trusted_ip_0: + type: string + description: Fixed IPv4 address on trusted/core network for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on untrusted/access network + ssc_untrusted_vip_0: + type: string + description: Virtual IPv4 address on untrusted/access network for SSC. Only required when predefining virtual IPs. + ssc_untrusted_v6_vip_0: + type: string + description: Virtual IPv6 address on untrusted/access network for SSC. Only required when predefining virtual IPs. + ssc_a_untrusted_ip_0: + type: string + description: Fixed IPv4 address on untrusted/access network for SSC A. Only required when predefining fixed IPs. + ssc_a_untrusted_v6_ip_0: + type: string + description: Fixed IPv6 address on untrusted/access network for SSC A. Only required when predefining fixed IPs. + ssc_b_untrusted_ip_0: + type: string + description: Fixed IPv4 address on untrusted/access network for SSC B. Only required when predefining fixed IPs. + ssc_b_untrusted_v6_ip_0: + type: string + description: Fixed IPv6 address on untrusted/access network for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on management/Rf network + ssc_rf_vip_0: + type: string + description: Virtual IPv4 address on management/Rf network for SSC. Only required when predefining virtual IPs. + ssc_a_rf_ip_0: + type: string + description: Fixed IPv4 address on management/Rf network for SSC A. Only required when predefining fixed IPs. + ssc_b_rf_ip_0: + type: string + description: Fixed IPv4 address on management/Rf network for SSC B. Only required when predefining fixed IPs. + + # RTP MSC parameters + rtp_msc_count: + type: number + description: Count of required RTP MSCs + rtp_msc_flavor_name: + type: string + description: Flavor to use for creating RTP MSC VM instances + constraints: + - custom_constraint: nova.flavor + rtp_msc_image_name: + type: string + description: Glance image to use for launching RTP MSC Perimeta instances. + constraints: + - custom_constraint: glance.image + rtp_msc_a_names: + type: comma_delimited_list + description: List of names of RTP MSC VM A instances + rtp_msc_b_names: + type: comma_delimited_list + description: List of names of RTP MSC VM B instances + rtp_msc_system_names: + type: comma_delimited_list + description: List of system names of RTP MSC instances + + # RTP MSC IP addresses on management network + rtp_msc_mgmt_vips: + type: comma_delimited_list + description: Management virtual IP addresses to use for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_mgmt_ips: + type: comma_delimited_list + description: Management fixed IP addresses to use for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_mgmt_ips: + type: comma_delimited_list + description: Management fixed IP addresses to use for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on internal HA network + rtp_msc_a_int_ha_ips: + type: comma_delimited_list + description: HA fixed IP addresses to use for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_int_ha_ips: + type: comma_delimited_list + description: HA fixed IP addresses to use for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on trusted/core network + rtp_msc_trusted_vips: + type: comma_delimited_list + description: Virtual IPv4 addresses on trusted/core network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_trusted_ips: + type: comma_delimited_list + description: Fixed IPv4 addresses on trusted/core network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_trusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on trusted/core network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on untrusted/access network + rtp_msc_untrusted_vips: + type: comma_delimited_list + description: Virtual IPv4 address on untrusted/access network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_untrusted_v6_vips: + type: comma_delimited_list + description: Virtual IPv6 address on untrusted/access network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_untrusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on untrusted/access network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_untrusted_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 address on untrusted/access network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_untrusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on untrusted/access network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_untrusted_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 address on untrusted/access network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + +resources: + + # Perimeta SSC + perimeta_ssc: + type: perimeta_ha_swmu.yaml + properties: + vnf_id: { get_param: vnf_id } + vm_role: 'ssc' + vf_module_id: { get_param: vf_module_id } + system_names: [{ get_param: ssc_system_name_0 }] + vm_a_names: [{ get_param: ssc_a_name_0 }] + vm_b_names: [{ get_param: ssc_b_name_0 }] + perimeta_instance_index: 0 + perimeta_image_name: { get_param: ssc_image_name } + perimeta_flavor_name: { get_param: ssc_flavor_name } + perimeta_keypair: { get_param: perimeta_keypair } + availability_zone_0: { get_param: availability_zone_0 } + availability_zone_1: { get_param: availability_zone_1 } + mgmt_net_id: { get_param: mgmt_net_id } + mgmt_net_plen: { get_param: mgmt_net_plen } + mgmt_net_default_gateway: { get_param: mgmt_net_default_gateway } + mgmt_vips: [{ get_param: ssc_mgmt_vip_0 }] + mgmt_a_ips: [{ get_param: ssc_a_mgmt_ip_0 }] + mgmt_b_ips: [{ get_param: ssc_b_mgmt_ip_0 }] + mgmt_sec_groups: { get_param: mgmt_net_sec_groups } + ha_net_id: { get_param: int_ha_net_id } + ha_network_plen: { get_param: int_ha_net_plen } + ha_a_ips: [{ get_param: ssc_a_int_ha_ip_0 }] + ha_b_ips: [{ get_param: ssc_b_int_ha_ip_0 }] + ha_sec_groups: { get_param: int_ha_net_sec_groups } + trusted_net_id: { get_param: trusted_net_id } + trusted_vips: [{ get_param: ssc_trusted_vip_0 }] + trusted_a_ips: [{ get_param: ssc_a_trusted_ip_0 }] + trusted_b_ips: [{ get_param: ssc_b_trusted_ip_0 }] + trusted_sec_groups: { get_param: trusted_net_sec_groups } + untrusted_net_id: { get_param: untrusted_net_id } + untrusted_vips: [{ get_param: ssc_untrusted_vip_0 }] + untrusted_v6_vips: [{ get_param: ssc_untrusted_v6_vip_0 }] + untrusted_a_ips: [{ get_param: ssc_a_untrusted_ip_0 }] + untrusted_a_v6_ips: [{ get_param: ssc_a_untrusted_v6_ip_0 }] + untrusted_b_ips: [{ get_param: ssc_b_untrusted_ip_0 }] + untrusted_b_v6_ips: [{ get_param: ssc_b_untrusted_v6_ip_0 }] + untrusted_sec_groups: { get_param: untrusted_net_sec_groups } + untrusted_num_vlans: { get_param: untrusted_num_vlans } + untrusted_vlan_ids: { get_param: untrusted_vlan_ids } + untrusted_vlan_networks: { get_param: untrusted_vlan_networks } + serv3_net_id: { get_param: mgmt_net_id } + serv3_vips: [{ get_param: ssc_rf_vip_0 }] + serv3_a_ips: [{ get_param: ssc_a_rf_ip_0 }] + serv3_b_ips: [{ get_param: ssc_b_rf_ip_0 }] + serv3_sec_groups: { get_param: mgmt_net_sec_groups } + unused_net_id: { get_param: unused_port_net_id } + perimeta_param_server_group: { get_param: perimeta_param_server_group } + perimeta_config: + str_replace: + template: {get_file: ssc_a_template.json} + params: + $NTP_SERVER_IP_ADDRS: { get_param: ntp_server_ip_addrs } + $COMPLETION_PARAMS: '' + + + +outputs: + + ssc_server_group: + description: Server group for SSC pair + value: { get_attr: [ perimeta_ssc, server_group_used ] } + + + + msw_template_version: + description: Version of the heat templates used to instantiate the VMs + value: "4.0.1 - 2016-10-28" diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_2_perimeta_rtp_msc_a_healing.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_2_perimeta_rtp_msc_a_healing.yaml new file mode 100644 index 0000000000..e5a1e75a94 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_2_perimeta_rtp_msc_a_healing.yaml @@ -0,0 +1,381 @@ +# Heat template which intstantiates a Perimeta SSC and up to 10 Perimeta +# RTP MSCs and up to 10 Perimeta MSRP MSCs. Currently all instances are +# HA although standalone MSCs may be supported in future. +# +# This Heat template commissions, partners and configures the Perimeta SSC and +# MSCs with basic configuration defined by ssc_a_template.json, +# msc_a_template.json and mmc_a_template.json. These can be modified +# as required to obtain the required Perimeta configuration. +# +# This template puts the Perimeta configuration in place using userdata +# injected via OpenStack's ConfigDrive mechanism. +# +# This template sets up anti-affinity using server group anti-affinity and +# optionally availability zone anti-affinity. +# +# This template will work with any version of Perimeta software from 3.9.20. +# +# Pre-requisites are: +# - existing networks as follows +# - network for management traffic +# - network for HA traffic +# - network for core/trusted service traffic +# - network for access/untrusted service traffic +# - pre-loaded Perimeta image +# - suitable flavor to use for Perimeta SSC +# - suitable flavor to use for Perimeta RTP MSCs +# - suitable flavor to use for Perimeta MSRP MSCs +# - suitable keypair to use for Perimeta +# +# Virtual IP address and fixed IP addresses to use for the Perimeta instances +# must be provided as parameters. +# +# Template requires Juno or above and has been tested on Kilo. Note that in +# some deployments, Heat template validation will fail but actually creating +# a stack using the template will succeed. This is due to problems with +# Heat validating nested templates. +# +heat_template_version: 2014-10-16 + +description: > + HOT template to instantiate a Perimeta SSC plus MxRTP MSCs plus NxMSRP MSCs + +parameters: + # General VNF parameters + vnf_id: + type: string + description: ID of VNF + + vf_module_id: + type: string + description: Unique ID for this VF Module instance + + availability_zone_0: + type: string + description: Availability zone for A instances. + availability_zone_1: + type: string + description: Availability zone for B instances. + perimeta_keypair: + type: string + description: Keypair to use for accessing these Perimeta instances + constraints: + - custom_constraint: nova.keypair + ntp_server_ip_addrs: + type: string + description: NTP server IPv4 addresses, separated by commas. These must be accessible from the management network + constraints: + - allowed_pattern: "((?:\\d{1,3}\\.){3}\\d{1,3},)*((?:\\d{1,3}\\.){3}\\d{1,3})" + description: ntp_server_ip_addrs must be a comma separated list of IPv4 addresses (with no spaces) + perimeta_param_server_group: + type: string + description: UUID of server group to set anti-affinity policy for Perimeta instance. Only used when doing healing. + + # Management network parameters + mgmt_net_id: + type: string + description: Management network ID + constraints: + - custom_constraint: neutron.network + mgmt_net_plen: + type: number + description: Management network prefix length + constraints: + - range: { min: 0, max: 32 } + description: mgmt_net_plen must be between 0 and 32 + mgmt_net_default_gateway: + type: string + description: Default gateway for management network + mgmt_net_sec_groups: + type: comma_delimited_list + description: Management network security groups + + # Internal high availability network parameters + int_ha_net_id: + type: string + description: Internal HA network ID + constraints: + - custom_constraint: neutron.network + int_ha_net_plen: + type: number + description: Intermal HA network prefix length. + constraints: + - range: { min: 0, max: 32 } + description: int_ha_net_plen must be between 0 and 32 + int_ha_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with internal HA network + + # Trusted/core network parameters + trusted_net_id: + type: string + description: Network ID of trusted/core network. + constraints: + - custom_constraint: neutron.network + trusted_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with trusted/core network + + # Untrusted/access network parameters + untrusted_net_id: + type: string + description: Network ID of untrusted/access network. + constraints: + - custom_constraint: neutron.network + untrusted_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with untrusted/access network + untrusted_num_vlans: + type: number + description: Number of VLANs to connect to on the untrusted/access network + untrusted_vlan_ids: + type: comma_delimited_list + description: List of VLAN IDs to use on the untrusted/access network + untrusted_vlan_networks: + type: comma_delimited_list + description: List of Contrail VLAN networks to use on the untrusted/access network. The order and number of these must match the VLAN ID list + + # Unused network parameters + # + # This is used for connecting the unused 4th SSC service interface. + unused_port_net_id: + type: string + description: Unused network ID + constraints: + - custom_constraint: neutron.network + + # SSC parameters + ssc_flavor_name: + type: string + description: Flavor to use for creating SSC VM instance + constraints: + - custom_constraint: nova.flavor + ssc_image_name: + type: string + description: Glance image to use for launching SSC Perimeta instances. + constraints: + - custom_constraint: glance.image + ssc_a_name_0: + type: string + description: Name of VM A of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: VM A name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + ssc_b_name_0: + type: string + description: Name of VM B of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: VM B name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + ssc_system_name_0: + type: string + description: System name of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: System name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + + # SSC IP addresses on management network + ssc_mgmt_vip_0: + type: string + description: Management virtual IP address to use for SSC. Only required when predefining VIPs. + ssc_a_mgmt_ip_0: + type: string + description: Management fixed IP address to use for SSC A. Only required when predefining fixed IPs. + ssc_b_mgmt_ip_0: + type: string + description: Management fixed IP address to use for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on internal HA network + ssc_a_int_ha_ip_0: + type: string + description: HA fixed IP address to use for SSC A. Only required when predefining fixed IPs. + ssc_b_int_ha_ip_0: + type: string + description: HA fixed IP address to use for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on trusted/core network + ssc_trusted_vip_0: + type: string + description: Virtual IPv4 address on trusted/core network for SSC. + ssc_a_trusted_ip_0: + type: string + description: Fixed IPv4 address on trusted/core network for SSC A. Only required when predefining fixed IPs. + ssc_b_trusted_ip_0: + type: string + description: Fixed IPv4 address on trusted/core network for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on untrusted/access network + ssc_untrusted_vip_0: + type: string + description: Virtual IPv4 address on untrusted/access network for SSC. Only required when predefining virtual IPs. + ssc_untrusted_v6_vip_0: + type: string + description: Virtual IPv6 address on untrusted/access network for SSC. Only required when predefining virtual IPs. + ssc_a_untrusted_ip_0: + type: string + description: Fixed IPv4 address on untrusted/access network for SSC A. Only required when predefining fixed IPs. + ssc_a_untrusted_v6_ip_0: + type: string + description: Fixed IPv6 address on untrusted/access network for SSC A. Only required when predefining fixed IPs. + ssc_b_untrusted_ip_0: + type: string + description: Fixed IPv4 address on untrusted/access network for SSC B. Only required when predefining fixed IPs. + ssc_b_untrusted_v6_ip_0: + type: string + description: Fixed IPv6 address on untrusted/access network for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on management/Rf network + ssc_rf_vip_0: + type: string + description: Virtual IPv4 address on management/Rf network for SSC. Only required when predefining virtual IPs. + ssc_a_rf_ip_0: + type: string + description: Fixed IPv4 address on management/Rf network for SSC A. Only required when predefining fixed IPs. + ssc_b_rf_ip_0: + type: string + description: Fixed IPv4 address on management/Rf network for SSC B. Only required when predefining fixed IPs. + + # RTP MSC parameters + rtp_msc_count: + type: number + description: Count of required RTP MSCs + rtp_msc_index: + type: number + description: Index of RTP MSC to create/heal. + rtp_msc_flavor_name: + type: string + description: Flavor to use for creating RTP MSC VM instances + constraints: + - custom_constraint: nova.flavor + rtp_msc_image_name: + type: string + description: Glance image to use for launching RTP MSC Perimeta instances. + constraints: + - custom_constraint: glance.image + rtp_msc_a_names: + type: comma_delimited_list + description: List of names of RTP MSC VM A instances + rtp_msc_b_names: + type: comma_delimited_list + description: List of names of RTP MSC VM B instances + rtp_msc_system_names: + type: comma_delimited_list + description: List of system names of RTP MSC instances + + # RTP MSC IP addresses on management network + rtp_msc_mgmt_vips: + type: comma_delimited_list + description: Management virtual IP addresses to use for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_mgmt_ips: + type: comma_delimited_list + description: Management fixed IP addresses to use for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_mgmt_ips: + type: comma_delimited_list + description: Management fixed IP addresses to use for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on internal HA network + rtp_msc_a_int_ha_ips: + type: comma_delimited_list + description: HA fixed IP addresses to use for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_int_ha_ips: + type: comma_delimited_list + description: HA fixed IP addresses to use for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on trusted/core network + rtp_msc_trusted_vips: + type: comma_delimited_list + description: Virtual IPv4 addresses on trusted/core network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_trusted_ips: + type: comma_delimited_list + description: Fixed IPv4 addresses on trusted/core network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_trusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on trusted/core network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on untrusted/access network + rtp_msc_untrusted_vips: + type: comma_delimited_list + description: Virtual IPv4 address on untrusted/access network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_untrusted_v6_vips: + type: comma_delimited_list + description: Virtual IPv6 address on untrusted/access network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_untrusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on untrusted/access network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_untrusted_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 address on untrusted/access network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_untrusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on untrusted/access network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_untrusted_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 address on untrusted/access network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + +resources: + + + # Perimeta RTP MSCs. + perimeta_rtp_mscs: + type: perimeta_ha_sw_a.yaml + properties: + vnf_id: { get_param: vnf_id } + vm_role: 'rtp_msc' + vf_module_id: { get_param: vf_module_id } + system_names: { get_param: rtp_msc_system_names } + vm_a_names: { get_param: rtp_msc_a_names } + vm_b_names: { get_param: rtp_msc_b_names } + perimeta_instance_index: { get_param: rtp_msc_index } + perimeta_image_name: { get_param: rtp_msc_image_name } + perimeta_flavor_name: { get_param: rtp_msc_flavor_name } + perimeta_keypair: { get_param: perimeta_keypair } + availability_zone_0: { get_param: availability_zone_0 } + availability_zone_1: { get_param: availability_zone_1 } + mgmt_net_id: { get_param: mgmt_net_id } + mgmt_net_plen: { get_param: mgmt_net_plen } + mgmt_net_default_gateway: { get_param: mgmt_net_default_gateway } + mgmt_vips: { get_param: rtp_msc_mgmt_vips } + mgmt_a_ips: { get_param: rtp_msc_a_mgmt_ips } + mgmt_b_ips: { get_param: rtp_msc_b_mgmt_ips } + mgmt_sec_groups: { get_param: mgmt_net_sec_groups } + ha_net_id: { get_param: int_ha_net_id } + ha_network_plen: { get_param: int_ha_net_plen } + ha_a_ips: { get_param: rtp_msc_a_int_ha_ips } + ha_b_ips: { get_param: rtp_msc_b_int_ha_ips } + ha_sec_groups: { get_param: int_ha_net_sec_groups } + trusted_net_id: { get_param: trusted_net_id } + trusted_vips: { get_param: rtp_msc_trusted_vips } + trusted_a_ips: { get_param: rtp_msc_a_trusted_ips } + trusted_b_ips: { get_param: rtp_msc_b_trusted_ips } + trusted_sec_groups: { get_param: trusted_net_sec_groups } + untrusted_net_id: { get_param: untrusted_net_id } + untrusted_vips: { get_param: rtp_msc_untrusted_vips } + untrusted_v6_vips: { get_param: rtp_msc_untrusted_v6_vips } + untrusted_a_ips: { get_param: rtp_msc_a_untrusted_ips } + untrusted_a_v6_ips: { get_param: rtp_msc_a_untrusted_v6_ips } + untrusted_b_ips: { get_param: rtp_msc_b_untrusted_ips } + untrusted_b_v6_ips: { get_param: rtp_msc_b_untrusted_v6_ips } + untrusted_sec_groups: { get_param: untrusted_net_sec_groups } + untrusted_num_vlans: { get_param: untrusted_num_vlans } + untrusted_vlan_ids: { get_param: untrusted_vlan_ids } + untrusted_vlan_networks: { get_param: untrusted_vlan_networks } + perimeta_param_server_group: { get_param: perimeta_param_server_group } + perimeta_config: + str_replace: + template: {get_file: msc_a_template.json} + params: + $NTP_SERVER_IP_ADDRS: { get_param: ntp_server_ip_addrs } + $COMPLETION_PARAMS: '' + + +outputs: + + + rtp_msc_server_groups: + description: Server groups for RTP MSC pairs + value: { get_attr: [ perimeta_rtp_mscs, server_group_used ] } + + + msw_template_version: + description: Version of the heat templates used to instantiate the VMs + value: "4.0.1 - 2016-10-28" diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_2_perimeta_rtp_msc_b_healing.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_2_perimeta_rtp_msc_b_healing.yaml new file mode 100644 index 0000000000..b071897d70 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_2_perimeta_rtp_msc_b_healing.yaml @@ -0,0 +1,381 @@ +# Heat template which intstantiates a Perimeta SSC and up to 10 Perimeta +# RTP MSCs and up to 10 Perimeta MSRP MSCs. Currently all instances are +# HA although standalone MSCs may be supported in future. +# +# This Heat template commissions, partners and configures the Perimeta SSC and +# MSCs with basic configuration defined by ssc_a_template.json, +# msc_a_template.json and mmc_a_template.json. These can be modified +# as required to obtain the required Perimeta configuration. +# +# This template puts the Perimeta configuration in place using userdata +# injected via OpenStack's ConfigDrive mechanism. +# +# This template sets up anti-affinity using server group anti-affinity and +# optionally availability zone anti-affinity. +# +# This template will work with any version of Perimeta software from 3.9.20. +# +# Pre-requisites are: +# - existing networks as follows +# - network for management traffic +# - network for HA traffic +# - network for core/trusted service traffic +# - network for access/untrusted service traffic +# - pre-loaded Perimeta image +# - suitable flavor to use for Perimeta SSC +# - suitable flavor to use for Perimeta RTP MSCs +# - suitable flavor to use for Perimeta MSRP MSCs +# - suitable keypair to use for Perimeta +# +# Virtual IP address and fixed IP addresses to use for the Perimeta instances +# must be provided as parameters. +# +# Template requires Juno or above and has been tested on Kilo. Note that in +# some deployments, Heat template validation will fail but actually creating +# a stack using the template will succeed. This is due to problems with +# Heat validating nested templates. +# +heat_template_version: 2014-10-16 + +description: > + HOT template to instantiate a Perimeta SSC plus MxRTP MSCs plus NxMSRP MSCs + +parameters: + # General VNF parameters + vnf_id: + type: string + description: ID of VNF + + vf_module_id: + type: string + description: Unique ID for this VF Module instance + + availability_zone_0: + type: string + description: Availability zone for A instances. + availability_zone_1: + type: string + description: Availability zone for B instances. + perimeta_keypair: + type: string + description: Keypair to use for accessing these Perimeta instances + constraints: + - custom_constraint: nova.keypair + ntp_server_ip_addrs: + type: string + description: NTP server IPv4 addresses, separated by commas. These must be accessible from the management network + constraints: + - allowed_pattern: "((?:\\d{1,3}\\.){3}\\d{1,3},)*((?:\\d{1,3}\\.){3}\\d{1,3})" + description: ntp_server_ip_addrs must be a comma separated list of IPv4 addresses (with no spaces) + perimeta_param_server_group: + type: string + description: UUID of server group to set anti-affinity policy for Perimeta instance. Only used when doing healing. + + # Management network parameters + mgmt_net_id: + type: string + description: Management network ID + constraints: + - custom_constraint: neutron.network + mgmt_net_plen: + type: number + description: Management network prefix length + constraints: + - range: { min: 0, max: 32 } + description: mgmt_net_plen must be between 0 and 32 + mgmt_net_default_gateway: + type: string + description: Default gateway for management network + mgmt_net_sec_groups: + type: comma_delimited_list + description: Management network security groups + + # Internal high availability network parameters + int_ha_net_id: + type: string + description: Internal HA network ID + constraints: + - custom_constraint: neutron.network + int_ha_net_plen: + type: number + description: Intermal HA network prefix length. + constraints: + - range: { min: 0, max: 32 } + description: int_ha_net_plen must be between 0 and 32 + int_ha_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with internal HA network + + # Trusted/core network parameters + trusted_net_id: + type: string + description: Network ID of trusted/core network. + constraints: + - custom_constraint: neutron.network + trusted_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with trusted/core network + + # Untrusted/access network parameters + untrusted_net_id: + type: string + description: Network ID of untrusted/access network. + constraints: + - custom_constraint: neutron.network + untrusted_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with untrusted/access network + untrusted_num_vlans: + type: number + description: Number of VLANs to connect to on the untrusted/access network + untrusted_vlan_ids: + type: comma_delimited_list + description: List of VLAN IDs to use on the untrusted/access network + untrusted_vlan_networks: + type: comma_delimited_list + description: List of Contrail VLAN networks to use on the untrusted/access network. The order and number of these must match the VLAN ID list + + # Unused network parameters + # + # This is used for connecting the unused 4th SSC service interface. + unused_port_net_id: + type: string + description: Unused network ID + constraints: + - custom_constraint: neutron.network + + # SSC parameters + ssc_flavor_name: + type: string + description: Flavor to use for creating SSC VM instance + constraints: + - custom_constraint: nova.flavor + ssc_image_name: + type: string + description: Glance image to use for launching SSC Perimeta instances. + constraints: + - custom_constraint: glance.image + ssc_a_name_0: + type: string + description: Name of VM A of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: VM A name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + ssc_b_name_0: + type: string + description: Name of VM B of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: VM B name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + ssc_system_name_0: + type: string + description: System name of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: System name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + + # SSC IP addresses on management network + ssc_mgmt_vip_0: + type: string + description: Management virtual IP address to use for SSC. Only required when predefining VIPs. + ssc_a_mgmt_ip_0: + type: string + description: Management fixed IP address to use for SSC A. Only required when predefining fixed IPs. + ssc_b_mgmt_ip_0: + type: string + description: Management fixed IP address to use for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on internal HA network + ssc_a_int_ha_ip_0: + type: string + description: HA fixed IP address to use for SSC A. Only required when predefining fixed IPs. + ssc_b_int_ha_ip_0: + type: string + description: HA fixed IP address to use for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on trusted/core network + ssc_trusted_vip_0: + type: string + description: Virtual IPv4 address on trusted/core network for SSC. + ssc_a_trusted_ip_0: + type: string + description: Fixed IPv4 address on trusted/core network for SSC A. Only required when predefining fixed IPs. + ssc_b_trusted_ip_0: + type: string + description: Fixed IPv4 address on trusted/core network for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on untrusted/access network + ssc_untrusted_vip_0: + type: string + description: Virtual IPv4 address on untrusted/access network for SSC. Only required when predefining virtual IPs. + ssc_untrusted_v6_vip_0: + type: string + description: Virtual IPv6 address on untrusted/access network for SSC. Only required when predefining virtual IPs. + ssc_a_untrusted_ip_0: + type: string + description: Fixed IPv4 address on untrusted/access network for SSC A. Only required when predefining fixed IPs. + ssc_a_untrusted_v6_ip_0: + type: string + description: Fixed IPv6 address on untrusted/access network for SSC A. Only required when predefining fixed IPs. + ssc_b_untrusted_ip_0: + type: string + description: Fixed IPv4 address on untrusted/access network for SSC B. Only required when predefining fixed IPs. + ssc_b_untrusted_v6_ip_0: + type: string + description: Fixed IPv6 address on untrusted/access network for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on management/Rf network + ssc_rf_vip_0: + type: string + description: Virtual IPv4 address on management/Rf network for SSC. Only required when predefining virtual IPs. + ssc_a_rf_ip_0: + type: string + description: Fixed IPv4 address on management/Rf network for SSC A. Only required when predefining fixed IPs. + ssc_b_rf_ip_0: + type: string + description: Fixed IPv4 address on management/Rf network for SSC B. Only required when predefining fixed IPs. + + # RTP MSC parameters + rtp_msc_count: + type: number + description: Count of required RTP MSCs + rtp_msc_index: + type: number + description: Index of RTP MSC to create/heal. + rtp_msc_flavor_name: + type: string + description: Flavor to use for creating RTP MSC VM instances + constraints: + - custom_constraint: nova.flavor + rtp_msc_image_name: + type: string + description: Glance image to use for launching RTP MSC Perimeta instances. + constraints: + - custom_constraint: glance.image + rtp_msc_a_names: + type: comma_delimited_list + description: List of names of RTP MSC VM A instances + rtp_msc_b_names: + type: comma_delimited_list + description: List of names of RTP MSC VM B instances + rtp_msc_system_names: + type: comma_delimited_list + description: List of system names of RTP MSC instances + + # RTP MSC IP addresses on management network + rtp_msc_mgmt_vips: + type: comma_delimited_list + description: Management virtual IP addresses to use for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_mgmt_ips: + type: comma_delimited_list + description: Management fixed IP addresses to use for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_mgmt_ips: + type: comma_delimited_list + description: Management fixed IP addresses to use for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on internal HA network + rtp_msc_a_int_ha_ips: + type: comma_delimited_list + description: HA fixed IP addresses to use for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_int_ha_ips: + type: comma_delimited_list + description: HA fixed IP addresses to use for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on trusted/core network + rtp_msc_trusted_vips: + type: comma_delimited_list + description: Virtual IPv4 addresses on trusted/core network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_trusted_ips: + type: comma_delimited_list + description: Fixed IPv4 addresses on trusted/core network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_trusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on trusted/core network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on untrusted/access network + rtp_msc_untrusted_vips: + type: comma_delimited_list + description: Virtual IPv4 address on untrusted/access network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_untrusted_v6_vips: + type: comma_delimited_list + description: Virtual IPv6 address on untrusted/access network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_untrusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on untrusted/access network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_untrusted_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 address on untrusted/access network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_untrusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on untrusted/access network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_untrusted_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 address on untrusted/access network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + +resources: + + + # Perimeta RTP MSCs. + perimeta_rtp_mscs: + type: perimeta_ha_sw_b.yaml + properties: + vnf_id: { get_param: vnf_id } + vm_role: 'rtp_msc' + vf_module_id: { get_param: vf_module_id } + system_names: { get_param: rtp_msc_system_names } + vm_a_names: { get_param: rtp_msc_a_names } + vm_b_names: { get_param: rtp_msc_b_names } + perimeta_instance_index: { get_param: rtp_msc_index } + perimeta_image_name: { get_param: rtp_msc_image_name } + perimeta_flavor_name: { get_param: rtp_msc_flavor_name } + perimeta_keypair: { get_param: perimeta_keypair } + availability_zone_0: { get_param: availability_zone_0 } + availability_zone_1: { get_param: availability_zone_1 } + mgmt_net_id: { get_param: mgmt_net_id } + mgmt_net_plen: { get_param: mgmt_net_plen } + mgmt_net_default_gateway: { get_param: mgmt_net_default_gateway } + mgmt_vips: { get_param: rtp_msc_mgmt_vips } + mgmt_a_ips: { get_param: rtp_msc_a_mgmt_ips } + mgmt_b_ips: { get_param: rtp_msc_b_mgmt_ips } + mgmt_sec_groups: { get_param: mgmt_net_sec_groups } + ha_net_id: { get_param: int_ha_net_id } + ha_network_plen: { get_param: int_ha_net_plen } + ha_a_ips: { get_param: rtp_msc_a_int_ha_ips } + ha_b_ips: { get_param: rtp_msc_b_int_ha_ips } + ha_sec_groups: { get_param: int_ha_net_sec_groups } + trusted_net_id: { get_param: trusted_net_id } + trusted_vips: { get_param: rtp_msc_trusted_vips } + trusted_a_ips: { get_param: rtp_msc_a_trusted_ips } + trusted_b_ips: { get_param: rtp_msc_b_trusted_ips } + trusted_sec_groups: { get_param: trusted_net_sec_groups } + untrusted_net_id: { get_param: untrusted_net_id } + untrusted_vips: { get_param: rtp_msc_untrusted_vips } + untrusted_v6_vips: { get_param: rtp_msc_untrusted_v6_vips } + untrusted_a_ips: { get_param: rtp_msc_a_untrusted_ips } + untrusted_a_v6_ips: { get_param: rtp_msc_a_untrusted_v6_ips } + untrusted_b_ips: { get_param: rtp_msc_b_untrusted_ips } + untrusted_b_v6_ips: { get_param: rtp_msc_b_untrusted_v6_ips } + untrusted_sec_groups: { get_param: untrusted_net_sec_groups } + untrusted_num_vlans: { get_param: untrusted_num_vlans } + untrusted_vlan_ids: { get_param: untrusted_vlan_ids } + untrusted_vlan_networks: { get_param: untrusted_vlan_networks } + perimeta_param_server_group: { get_param: perimeta_param_server_group } + perimeta_config: + str_replace: + template: {get_file: msc_a_template.json} + params: + $NTP_SERVER_IP_ADDRS: { get_param: ntp_server_ip_addrs } + $COMPLETION_PARAMS: '' + + +outputs: + + + rtp_msc_server_groups: + description: Server groups for RTP MSC pairs + value: { get_attr: [ perimeta_rtp_mscs, server_group_used ] } + + + msw_template_version: + description: Version of the heat templates used to instantiate the VMs + value: "4.0.1 - 2016-10-28" diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_2_perimeta_rtp_msc_rebuild_scaling.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_2_perimeta_rtp_msc_rebuild_scaling.yaml new file mode 100644 index 0000000000..c85009179e --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/module_2_perimeta_rtp_msc_rebuild_scaling.yaml @@ -0,0 +1,381 @@ +# Heat template which intstantiates a Perimeta SSC and up to 10 Perimeta +# RTP MSCs and up to 10 Perimeta MSRP MSCs. Currently all instances are +# HA although standalone MSCs may be supported in future. +# +# This Heat template commissions, partners and configures the Perimeta SSC and +# MSCs with basic configuration defined by ssc_a_template.json, +# msc_a_template.json and mmc_a_template.json. These can be modified +# as required to obtain the required Perimeta configuration. +# +# This template puts the Perimeta configuration in place using userdata +# injected via OpenStack's ConfigDrive mechanism. +# +# This template sets up anti-affinity using server group anti-affinity and +# optionally availability zone anti-affinity. +# +# This template will work with any version of Perimeta software from 3.9.20. +# +# Pre-requisites are: +# - existing networks as follows +# - network for management traffic +# - network for HA traffic +# - network for core/trusted service traffic +# - network for access/untrusted service traffic +# - pre-loaded Perimeta image +# - suitable flavor to use for Perimeta SSC +# - suitable flavor to use for Perimeta RTP MSCs +# - suitable flavor to use for Perimeta MSRP MSCs +# - suitable keypair to use for Perimeta +# +# Virtual IP address and fixed IP addresses to use for the Perimeta instances +# must be provided as parameters. +# +# Template requires Juno or above and has been tested on Kilo. Note that in +# some deployments, Heat template validation will fail but actually creating +# a stack using the template will succeed. This is due to problems with +# Heat validating nested templates. +# +heat_template_version: 2014-10-16 + +description: > + HOT template to instantiate a Perimeta SSC plus MxRTP MSCs plus NxMSRP MSCs + +parameters: + # General VNF parameters + vnf_id: + type: string + description: ID of VNF + + vf_module_id: + type: string + description: Unique ID for this VF Module instance + + availability_zone_0: + type: string + description: Availability zone for A instances. + availability_zone_1: + type: string + description: Availability zone for B instances. + perimeta_keypair: + type: string + description: Keypair to use for accessing these Perimeta instances + constraints: + - custom_constraint: nova.keypair + ntp_server_ip_addrs: + type: string + description: NTP server IPv4 addresses, separated by commas. These must be accessible from the management network + constraints: + - allowed_pattern: "((?:\\d{1,3}\\.){3}\\d{1,3},)*((?:\\d{1,3}\\.){3}\\d{1,3})" + description: ntp_server_ip_addrs must be a comma separated list of IPv4 addresses (with no spaces) + perimeta_param_server_group: + type: string + description: UUID of server group to set anti-affinity policy for Perimeta instance. Only used when doing healing. + + # Management network parameters + mgmt_net_id: + type: string + description: Management network ID + constraints: + - custom_constraint: neutron.network + mgmt_net_plen: + type: number + description: Management network prefix length + constraints: + - range: { min: 0, max: 32 } + description: mgmt_net_plen must be between 0 and 32 + mgmt_net_default_gateway: + type: string + description: Default gateway for management network + mgmt_net_sec_groups: + type: comma_delimited_list + description: Management network security groups + + # Internal high availability network parameters + int_ha_net_id: + type: string + description: Internal HA network ID + constraints: + - custom_constraint: neutron.network + int_ha_net_plen: + type: number + description: Intermal HA network prefix length. + constraints: + - range: { min: 0, max: 32 } + description: int_ha_net_plen must be between 0 and 32 + int_ha_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with internal HA network + + # Trusted/core network parameters + trusted_net_id: + type: string + description: Network ID of trusted/core network. + constraints: + - custom_constraint: neutron.network + trusted_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with trusted/core network + + # Untrusted/access network parameters + untrusted_net_id: + type: string + description: Network ID of untrusted/access network. + constraints: + - custom_constraint: neutron.network + untrusted_net_sec_groups: + type: comma_delimited_list + description: Security groups associated with untrusted/access network + untrusted_num_vlans: + type: number + description: Number of VLANs to connect to on the untrusted/access network + untrusted_vlan_ids: + type: comma_delimited_list + description: List of VLAN IDs to use on the untrusted/access network + untrusted_vlan_networks: + type: comma_delimited_list + description: List of Contrail VLAN networks to use on the untrusted/access network. The order and number of these must match the VLAN ID list + + # Unused network parameters + # + # This is used for connecting the unused 4th SSC service interface. + unused_port_net_id: + type: string + description: Unused network ID + constraints: + - custom_constraint: neutron.network + + # SSC parameters + ssc_flavor_name: + type: string + description: Flavor to use for creating SSC VM instance + constraints: + - custom_constraint: nova.flavor + ssc_image_name: + type: string + description: Glance image to use for launching SSC Perimeta instances. + constraints: + - custom_constraint: glance.image + ssc_a_name_0: + type: string + description: Name of VM A of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: VM A name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + ssc_b_name_0: + type: string + description: Name of VM B of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: VM B name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + ssc_system_name_0: + type: string + description: System name of SSC + constraints: + - allowed_pattern: '[a-zA-Z0-9][a-zA-Z0-9-]{0,31}$' + description: System name must be 32 characters or less and a valid hostname. Only alphanumeric characters plus hyphen are allowed. + + # SSC IP addresses on management network + ssc_mgmt_vip_0: + type: string + description: Management virtual IP address to use for SSC. Only required when predefining VIPs. + ssc_a_mgmt_ip_0: + type: string + description: Management fixed IP address to use for SSC A. Only required when predefining fixed IPs. + ssc_b_mgmt_ip_0: + type: string + description: Management fixed IP address to use for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on internal HA network + ssc_a_int_ha_ip_0: + type: string + description: HA fixed IP address to use for SSC A. Only required when predefining fixed IPs. + ssc_b_int_ha_ip_0: + type: string + description: HA fixed IP address to use for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on trusted/core network + ssc_trusted_vip_0: + type: string + description: Virtual IPv4 address on trusted/core network for SSC. + ssc_a_trusted_ip_0: + type: string + description: Fixed IPv4 address on trusted/core network for SSC A. Only required when predefining fixed IPs. + ssc_b_trusted_ip_0: + type: string + description: Fixed IPv4 address on trusted/core network for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on untrusted/access network + ssc_untrusted_vip_0: + type: string + description: Virtual IPv4 address on untrusted/access network for SSC. Only required when predefining virtual IPs. + ssc_untrusted_v6_vip_0: + type: string + description: Virtual IPv6 address on untrusted/access network for SSC. Only required when predefining virtual IPs. + ssc_a_untrusted_ip_0: + type: string + description: Fixed IPv4 address on untrusted/access network for SSC A. Only required when predefining fixed IPs. + ssc_a_untrusted_v6_ip_0: + type: string + description: Fixed IPv6 address on untrusted/access network for SSC A. Only required when predefining fixed IPs. + ssc_b_untrusted_ip_0: + type: string + description: Fixed IPv4 address on untrusted/access network for SSC B. Only required when predefining fixed IPs. + ssc_b_untrusted_v6_ip_0: + type: string + description: Fixed IPv6 address on untrusted/access network for SSC B. Only required when predefining fixed IPs. + + # SSC IP addresses on management/Rf network + ssc_rf_vip_0: + type: string + description: Virtual IPv4 address on management/Rf network for SSC. Only required when predefining virtual IPs. + ssc_a_rf_ip_0: + type: string + description: Fixed IPv4 address on management/Rf network for SSC A. Only required when predefining fixed IPs. + ssc_b_rf_ip_0: + type: string + description: Fixed IPv4 address on management/Rf network for SSC B. Only required when predefining fixed IPs. + + # RTP MSC parameters + rtp_msc_count: + type: number + description: Count of required RTP MSCs + rtp_msc_index: + type: number + description: Index of RTP MSC to create/heal. + rtp_msc_flavor_name: + type: string + description: Flavor to use for creating RTP MSC VM instances + constraints: + - custom_constraint: nova.flavor + rtp_msc_image_name: + type: string + description: Glance image to use for launching RTP MSC Perimeta instances. + constraints: + - custom_constraint: glance.image + rtp_msc_a_names: + type: comma_delimited_list + description: List of names of RTP MSC VM A instances + rtp_msc_b_names: + type: comma_delimited_list + description: List of names of RTP MSC VM B instances + rtp_msc_system_names: + type: comma_delimited_list + description: List of system names of RTP MSC instances + + # RTP MSC IP addresses on management network + rtp_msc_mgmt_vips: + type: comma_delimited_list + description: Management virtual IP addresses to use for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_mgmt_ips: + type: comma_delimited_list + description: Management fixed IP addresses to use for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_mgmt_ips: + type: comma_delimited_list + description: Management fixed IP addresses to use for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on internal HA network + rtp_msc_a_int_ha_ips: + type: comma_delimited_list + description: HA fixed IP addresses to use for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_int_ha_ips: + type: comma_delimited_list + description: HA fixed IP addresses to use for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on trusted/core network + rtp_msc_trusted_vips: + type: comma_delimited_list + description: Virtual IPv4 addresses on trusted/core network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_trusted_ips: + type: comma_delimited_list + description: Fixed IPv4 addresses on trusted/core network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_trusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on trusted/core network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + + # RTP MSC IP addresses on untrusted/access network + rtp_msc_untrusted_vips: + type: comma_delimited_list + description: Virtual IPv4 address on untrusted/access network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_untrusted_v6_vips: + type: comma_delimited_list + description: Virtual IPv6 address on untrusted/access network for RTP MSC instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_untrusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on untrusted/access network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_a_untrusted_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 address on untrusted/access network for RTP MSC A instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_untrusted_ips: + type: comma_delimited_list + description: Fixed IPv4 address on untrusted/access network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + rtp_msc_b_untrusted_v6_ips: + type: comma_delimited_list + description: Fixed IPv6 address on untrusted/access network for RTP MSC B instances. There must be at least as many as the number of RTP MSCs. + +resources: + + + # Perimeta RTP MSCs. + perimeta_rtp_mscs: + type: perimeta_ha_sw.yaml + properties: + vnf_id: { get_param: vnf_id } + vm_role: 'rtp_msc' + vf_module_id: { get_param: vf_module_id } + system_names: { get_param: rtp_msc_system_names } + vm_a_names: { get_param: rtp_msc_a_names } + vm_b_names: { get_param: rtp_msc_b_names } + perimeta_instance_index: { get_param: rtp_msc_index } + perimeta_image_name: { get_param: rtp_msc_image_name } + perimeta_flavor_name: { get_param: rtp_msc_flavor_name } + perimeta_keypair: { get_param: perimeta_keypair } + availability_zone_0: { get_param: availability_zone_0 } + availability_zone_1: { get_param: availability_zone_1 } + mgmt_net_id: { get_param: mgmt_net_id } + mgmt_net_plen: { get_param: mgmt_net_plen } + mgmt_net_default_gateway: { get_param: mgmt_net_default_gateway } + mgmt_vips: { get_param: rtp_msc_mgmt_vips } + mgmt_a_ips: { get_param: rtp_msc_a_mgmt_ips } + mgmt_b_ips: { get_param: rtp_msc_b_mgmt_ips } + mgmt_sec_groups: { get_param: mgmt_net_sec_groups } + ha_net_id: { get_param: int_ha_net_id } + ha_network_plen: { get_param: int_ha_net_plen } + ha_a_ips: { get_param: rtp_msc_a_int_ha_ips } + ha_b_ips: { get_param: rtp_msc_b_int_ha_ips } + ha_sec_groups: { get_param: int_ha_net_sec_groups } + trusted_net_id: { get_param: trusted_net_id } + trusted_vips: { get_param: rtp_msc_trusted_vips } + trusted_a_ips: { get_param: rtp_msc_a_trusted_ips } + trusted_b_ips: { get_param: rtp_msc_b_trusted_ips } + trusted_sec_groups: { get_param: trusted_net_sec_groups } + untrusted_net_id: { get_param: untrusted_net_id } + untrusted_vips: { get_param: rtp_msc_untrusted_vips } + untrusted_v6_vips: { get_param: rtp_msc_untrusted_v6_vips } + untrusted_a_ips: { get_param: rtp_msc_a_untrusted_ips } + untrusted_a_v6_ips: { get_param: rtp_msc_a_untrusted_v6_ips } + untrusted_b_ips: { get_param: rtp_msc_b_untrusted_ips } + untrusted_b_v6_ips: { get_param: rtp_msc_b_untrusted_v6_ips } + untrusted_sec_groups: { get_param: untrusted_net_sec_groups } + untrusted_num_vlans: { get_param: untrusted_num_vlans } + untrusted_vlan_ids: { get_param: untrusted_vlan_ids } + untrusted_vlan_networks: { get_param: untrusted_vlan_networks } + perimeta_param_server_group: { get_param: perimeta_param_server_group } + perimeta_config: + str_replace: + template: {get_file: msc_a_template.json} + params: + $NTP_SERVER_IP_ADDRS: { get_param: ntp_server_ip_addrs } + $COMPLETION_PARAMS: '' + + +outputs: + + + rtp_msc_server_groups: + description: Server groups for RTP MSC pairs + value: { get_attr: [ perimeta_rtp_mscs, server_group_used ] } + + + msw_template_version: + description: Version of the heat templates used to instantiate the VMs + value: "4.0.1 - 2016-10-28" diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/msc_a_template.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/msc_a_template.json new file mode 100644 index 0000000000..4b474f07da --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/msc_a_template.json @@ -0,0 +1,33 @@ +{ + // The vnic_assignment parameter is ignored by Perimeta releases prior to + // V4.0.00. + "vnic_assignment": { + "IBG1mgmt": {"mac": "$MGMT_MACADDR"}, + "IPG1": {"mac": "$HA_MACADDR"}, + "RPG1": {"mac": "$TRUSTED_MACADDR"}, + "RPG2": {"mac": "$UNTRUSTED_MACADDR"} + }, + "autocommission":"MSC", + "autostart":"true", + "autopartner":"", + "ip_mgmt_global": "$VIRT_MGMT_IP_ADDR", + "ip_mgmt_local": "$LOCAL_MGMT_IP_ADDR", + "ip_mgmt_remote": "$REMOTE_MGMT_IP_ADDR", + "ip_mgmt_plen": "$MGMT_NETWORK_PLEN", + "ip_mgmt_gway": "$MGMT_NETWORK_DEFAULT_GATEWAY", + "ip_ha_local": "$LOCAL_HA_IP_ADDR", + "ip_ha_remote": "$REMOTE_HA_IP_ADDR", + "ip_ha_plen": "$HA_NETWORK_PLEN", + "system_name": "$SYSTEM_NAME", + "node_local": "$VM_NAME_A", + "node_remote": "$VM_NAME_B", + "ntp_servers": "$NTP_SERVER_IP_ADDRS", + "advanced_media_cpus": "2", + "perimeta": { + "dpdk_opt_enable":true, + "vlans_opt_enable":true + } + + //$COMPLETION_PARAMS +} + diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_sw.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_sw.yaml new file mode 100644 index 0000000000..5ba3e968ad --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_sw.yaml @@ -0,0 +1,480 @@ +# Heat template which intstantiates a 1+1 HA Perimeta instance with 4 or 5 +# vNICs. +# +# This is designed to be included in a higher level template. +# +# This template puts the Perimeta configuration in place using userdata +# injected via OpenStack's ConfigDrive mechanism. +# +# Host anti-affinity is achieved using different availability zones for +# the Perimeta instance or server group anti-affinity if they are in the +# same availability zone. +# +# Template requires Juno or above and has been tested on Kilo. +# +heat_template_version: 2014-10-16 + +description: > + HOT template to instantiate a Perimeta 1+1 HA instance with 4vNICs as part of a nested template + +parameters: + vnf_id: + type: string + description: VNF ID of this deployment + vm_role: + type: string + description: Role of these VMs + vf_module_id: + type: string + description: Unique ID for this VF Module instance + system_names: + type: comma_delimited_list + description: List of system names of Perimeta instances. Name of a specific instance is indexed by perimeta_instance_index + vm_a_names: + type: comma_delimited_list + description: List of names of Perimeta VM A instances, indexed by perimeta_instance_index + vm_b_names: + type: comma_delimited_list + description: List of names of Perimeta VM A instances, indexed by perimeta_instance_index + perimeta_instance_index: + type: number + description: Index of instance among multiple instances. Use to retrieve correct parameter for this instance when passed all parameters for all instances. + perimeta_image_name: + type: string + description: Glance image for Perimeta instance + constraints: + - custom_constraint: glance.image + perimeta_flavor_name: + type: string + description: Flavor to use for creating VM instances + constraints: + - custom_constraint: nova.flavor + perimeta_keypair: + type: string + description: Keypair to use for accessing this Perimeta instance + constraints: + - custom_constraint: nova.keypair + availability_zone_0: + # Can be commented out along with references if always using a single availability zone + type: string + description: Availability zone for A instances. + availability_zone_1: + # Can be commented out along with references if always using a single availability zone + type: string + description: Availability zone for B instances. May be the same as A instance. + mgmt_net_id: + type: string + description: Management network id + constraints: + - custom_constraint: neutron.network + mgmt_net_plen: + type: string + description: Prefix length of management network + mgmt_net_default_gateway: + type: string + description: IP address of management default gateway + mgmt_vips: + type: comma_delimited_list + description: List of management virtual IP addresses for all instances. + mgmt_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as management IPs of A instances. + mgmt_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as management IPs of B instances. + mgmt_sec_groups: + type: comma_delimited_list + description: List of security groups to add on management interfaces. + ha_net_id: + type: string + description: HA network id + constraints: + - custom_constraint: neutron.network + ha_network_plen: + type: number + constraints: + - range: { min: 0, max: 32 } + description: ha_network_plen must be between 0 and 32 + ha_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as HA IPs of A instances. + ha_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as HA IPs of B instances. + ha_sec_groups: + type: comma_delimited_list + description: List of security groups to add on HA interfaces. + trusted_net_id: + type: string + description: Service network 1 network UUID + constraints: + - custom_constraint: neutron.network + trusted_vips: + type: comma_delimited_list + description: List of service network 1 virtual IP addresses for all instances. + trusted_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as trusted fixed IPs of A instances. + trusted_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as trusted fixed IPs of B instances. + trusted_sec_groups: + type: comma_delimited_list + description: List of security groups to add on trusted interfaces. + untrusted_net_id: + type: string + description: Service network 2 network UUID + constraints: + - custom_constraint: neutron.network + untrusted_vips: + type: comma_delimited_list + description: List of service network 2 virtual IP addresses for all instances. + untrusted_v6_vips: + type: comma_delimited_list + description: List of service network 2 alternate virtual IP addresses for all instances. + untrusted_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted fixed IPs of A instances. + untrusted_a_v6_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted alternate fixed IPs of A instances. + untrusted_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted fixed IPs of B instances. + untrusted_b_v6_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted alternate fixed IPs of B instances. + untrusted_sec_groups: + type: comma_delimited_list + description: List of security groups to add on untrusted interfaces. + untrusted_num_vlans: + type: number + description: Number of VLANs to connect to on the untrusted/access network + untrusted_vlan_ids: + type: comma_delimited_list + description: List of VLAN IDs to use on the untrusted/access network + untrusted_vlan_networks: + type: comma_delimited_list + description: List of Contrail VLAN networks to use on the untrusted/access network. The order and number of these must match the VLAN ID list. + perimeta_param_server_group: + type: string + description: Server group to use for these VMs - ignored + perimeta_config: + type: string + description: Orchestration template configuration for instance. + +resources: + + # Perimeta management ports + perimeta_a_mgmt_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_mgmt_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: mgmt_net_id } + fixed_ips: + - ip_address: { get_param: [ mgmt_a_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: mgmt_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ mgmt_vips, { get_param: perimeta_instance_index } ] } + + perimeta_b_mgmt_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_mgmt_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: mgmt_net_id } + fixed_ips: + - ip_address: { get_param: [ mgmt_b_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: mgmt_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ mgmt_vips, { get_param: perimeta_instance_index } ] } + + # Perimeta HA ports + perimeta_a_ha_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_ha_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: ha_net_id } + fixed_ips: + - ip_address: { get_param: [ ha_a_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: ha_sec_groups } + + perimeta_b_ha_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_ha_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: ha_net_id } + fixed_ips: + - ip_address: { get_param: [ ha_b_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: ha_sec_groups } + + # Perimeta core/trusted service network ports + # + # Dual stack core network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + perimeta_a_trusted_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_trusted_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: trusted_net_id } + fixed_ips: + - ip_address: { get_param: [ trusted_a_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: trusted_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ trusted_vips, { get_param: perimeta_instance_index } ] } + + perimeta_b_trusted_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_trusted_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: trusted_net_id } + fixed_ips: + - ip_address: { get_param: [ trusted_b_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: trusted_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ trusted_vips, { get_param: perimeta_instance_index } ] } + + # Perimeta access/untrusted service network ports + # + # Dual stack access network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + perimeta_a_untrusted_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_untrusted_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: untrusted_net_id } + fixed_ips: + - ip_address: { get_param: [ untrusted_a_ips, { get_param: perimeta_instance_index } ] } + - ip_address: { get_param: [ untrusted_a_v6_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: untrusted_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + - ip_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + + # Contrail VLAN subinterfaces + perimeta_a_untrusted_0_vlan_ports: + type: OS::Heat::ResourceGroup + properties: + count: { get_param: untrusted_num_vlans } + resource_def: + type: vlan_subinterface_dual.yaml + properties: + subinterface_instance_index: "%index%" + subinterface_name_prefix: + str_replace: + template: $VM_untrusted_port_vlan_ + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + parent_interface: { get_resource: perimeta_a_untrusted_0_port } + mac_address: { get_attr: [ perimeta_a_untrusted_0_port, mac_address ] } + ip_address: { get_param: [ untrusted_a_ips, { get_param: perimeta_instance_index } ] } + ipv6_address: { get_param: [ untrusted_a_v6_ips, { get_param: perimeta_instance_index } ] } + virtual_ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + virtual_ipv6_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + vlan_ids: { get_param: untrusted_vlan_ids } + vlan_networks: { get_param: untrusted_vlan_networks } + + perimeta_b_untrusted_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_untrusted_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: untrusted_net_id } + fixed_ips: + - ip_address: { get_param: [ untrusted_b_ips, { get_param: perimeta_instance_index } ] } + - ip_address: { get_param: [ untrusted_b_v6_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: untrusted_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + - ip_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + + # Contrail VLAN subinterfaces + perimeta_b_untrusted_0_vlan_ports: + type: OS::Heat::ResourceGroup + properties: + count: { get_param: untrusted_num_vlans } + resource_def: + type: vlan_subinterface_dual.yaml + properties: + subinterface_instance_index: "%index%" + subinterface_name_prefix: + str_replace: + template: $VM_untrusted_port_vlan_ + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + parent_interface: { get_resource: perimeta_b_untrusted_0_port } + mac_address: { get_attr: [ perimeta_b_untrusted_0_port, mac_address ] } + ip_address: { get_param: [ untrusted_b_ips, { get_param: perimeta_instance_index } ] } + ipv6_address: { get_param: [ untrusted_b_v6_ips, { get_param: perimeta_instance_index } ] } + virtual_ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + virtual_ipv6_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + vlan_ids: { get_param: untrusted_vlan_ids } + vlan_networks: { get_param: untrusted_vlan_networks } + + # Perimeta Rf service network ports (SSC only) + # + # Dual stack access network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + # Add any additional service ports here. + + # Only supported in Juno and beyond - used to enforce host anti-affinity + # Can be commented out along with references to it if always using + # different availability zones. + perimeta_server_group: + type: OS::Nova::ServerGroup + properties: + name: + str_replace: + template: $SYSTEM_server_group + params: + $SYSTEM: { get_param: [ system_names, { get_param: perimeta_instance_index } ] } + policies: ['anti-affinity'] + + perimeta_a_server_0: + type: OS::Nova::Server + depends_on: perimeta_b_server_0 + properties: + name: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + image: { get_param: perimeta_image_name } + flavor: { get_param: perimeta_flavor_name } + key_name: { get_param: perimeta_keypair } + scheduler_hints: { group: { get_resource: perimeta_server_group } } + metadata: + 'vnf_id': { get_param: vnf_id } + 'vm_role': + str_replace: + template: $ROLE_a + params: + $ROLE: { get_param: vm_role } + 'vf_module_id': { get_param: vf_module_id } + personality: + '/opt/MetaSwitch/init/custom.ini': { get_file: custom.ini } + + networks: + - port: { get_resource: perimeta_a_mgmt_0_port } + - port: { get_resource: perimeta_a_ha_0_port } + - port: { get_resource: perimeta_a_trusted_0_port } + - port: { get_resource: perimeta_a_untrusted_0_port } + availability_zone: { get_param: availability_zone_0 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: { get_param: perimeta_config } + params: + $MGMT_MACADDR: { get_attr: [perimeta_a_mgmt_0_port, mac_address] } + $HA_MACADDR: { get_attr: [perimeta_a_ha_0_port, mac_address] } + $TRUSTED_MACADDR: { get_attr: [perimeta_a_trusted_0_port, mac_address] } + $UNTRUSTED_MACADDR: { get_attr: [perimeta_a_untrusted_0_port, mac_address] } + $LOCAL_HA_IP_ADDR: { get_param: [ ha_a_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_HA_IP_ADDR: { get_param: [ ha_b_ips, { get_param: perimeta_instance_index } ] } + $HA_NETWORK_PLEN: { get_param: ha_network_plen } + $LOCAL_MGMT_IP_ADDR: { get_param: [ mgmt_a_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_MGMT_IP_ADDR: { get_param: [ mgmt_b_ips, { get_param: perimeta_instance_index } ] } + $MGMT_NETWORK_PLEN: { get_param: mgmt_net_plen } + $MGMT_NETWORK_DEFAULT_GATEWAY: { get_param: mgmt_net_default_gateway } + $VIRT_MGMT_IP_ADDR: { get_param: [ mgmt_vips, { get_param: perimeta_instance_index } ] } + $VIRT_TRUSTED_IP_ADDR: { get_param: [ trusted_vips, { get_param: perimeta_instance_index } ] } + $LOCAL_TRUSTED_IP_ADDR: { get_param: [ trusted_a_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_TRUSTED_IP_ADDR: { get_param: [ trusted_b_ips, { get_param: perimeta_instance_index } ] } + $VIRT_UNTRUSTED_IP_ADDR: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + $VIRT_UNTRUSTED_ALT_IP_ADDR: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + $LOCAL_UNTRUSTED_IP_ADDR: { get_param: [ untrusted_a_ips, { get_param: perimeta_instance_index } ] } + $LOCAL_UNTRUSTED_ALT_IP_ADDR: { get_param: [ untrusted_a_v6_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_UNTRUSTED_IP_ADDR: { get_param: [ untrusted_b_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_UNTRUSTED_ALT_IP_ADDR: { get_param: [ untrusted_b_v6_ips, { get_param: perimeta_instance_index } ] } + $VM_NAME_A: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + $VM_NAME_B: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + $SYSTEM_NAME: { get_param: [ system_names, { get_param: perimeta_instance_index } ] } + + perimeta_b_server_0: + type: OS::Nova::Server + properties: + name: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + image: { get_param: perimeta_image_name } + flavor: { get_param: perimeta_flavor_name } + key_name: { get_param: perimeta_keypair } + scheduler_hints: { group: { get_resource: perimeta_server_group } } + metadata: + 'vnf_id': { get_param: vnf_id } + 'vm_role': + str_replace: + template: $ROLE_b + params: + $ROLE: { get_param: vm_role } + 'vf_module_id': { get_param: vf_module_id } + networks: + - port: { get_resource: perimeta_b_mgmt_0_port } + - port: { get_resource: perimeta_b_ha_0_port } + - port: { get_resource: perimeta_b_trusted_0_port } + - port: { get_resource: perimeta_b_untrusted_0_port } + availability_zone: { get_param: availability_zone_1 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + { + "vnic_assignment": { + "IBG1mgmt": {"mac": "$MGMT_MACADDR"}, + "IPG1": {"mac": "$HA_MACADDR"}, + "RPG1": {"mac": "$TRUSTED_MACADDR"}, + "RPG2": {"mac": "$UNTRUSTED_MACADDR"} + }, + "ip_ha_local": "$LOCAL_HA_IP_ADDR", + "ip_ha_remote": "$REMOTE_HA_IP_ADDR", + "ip_ha_plen": "$HA_NETWORK_PLEN" + //"ip_mgmt_local": "$LOCAL_MGMT_IP_ADDR", + //"ip_mgmt_remote": "$REMOTE_MGMT_IP_ADDR", + //"ip_mgmt_plen": "$MGMT_NETWORK_PLEN", + //"ip_mgmt_gway": "$MGMT_NETWORK_DEFAULT_GATEWAY" + } + + params: + $MGMT_MACADDR: { get_attr: [perimeta_b_mgmt_0_port, mac_address] } + $HA_MACADDR: { get_attr: [perimeta_b_ha_0_port, mac_address] } + $TRUSTED_MACADDR: { get_attr: [perimeta_b_trusted_0_port, mac_address] } + $UNTRUSTED_MACADDR: { get_attr: [perimeta_b_untrusted_0_port, mac_address] } + $LOCAL_HA_IP_ADDR: { get_param: [ ha_b_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_HA_IP_ADDR: { get_param: [ ha_a_ips, { get_param: perimeta_instance_index } ] } + $HA_NETWORK_PLEN: { get_param: ha_network_plen } + $LOCAL_MGMT_IP_ADDR: { get_param: [ mgmt_b_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_MGMT_IP_ADDR: { get_param: [ mgmt_a_ips, { get_param: perimeta_instance_index } ] } + $MGMT_NETWORK_PLEN: { get_param: mgmt_net_plen } + $MGMT_NETWORK_DEFAULT_GATEWAY: { get_param: mgmt_net_default_gateway } + +outputs: + + server_group_used: + description: Server group used for these VMs + value: { get_resource: perimeta_server_group } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_sw_a.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_sw_a.yaml new file mode 100644 index 0000000000..4f489e4ffc --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_sw_a.yaml @@ -0,0 +1,332 @@ +# Heat template which intstantiates a 1+1 HA Perimeta instance with 4 or 5 +# vNICs. +# +# This is designed to be included in a higher level template. +# +# This template puts the Perimeta configuration in place using userdata +# injected via OpenStack's ConfigDrive mechanism. +# +# Host anti-affinity is achieved using different availability zones for +# the Perimeta instance or server group anti-affinity if they are in the +# same availability zone. +# +# Template requires Juno or above and has been tested on Kilo. +# +heat_template_version: 2014-10-16 + +description: > + HOT template to instantiate a Perimeta 1+1 HA instance with 4vNICs as part of a nested template + +parameters: + vnf_id: + type: string + description: VNF ID of this deployment + vm_role: + type: string + description: Role of these VMs + vf_module_id: + type: string + description: Unique ID for this VF Module instance + system_names: + type: comma_delimited_list + description: List of system names of Perimeta instances. Name of a specific instance is indexed by perimeta_instance_index + vm_a_names: + type: comma_delimited_list + description: List of names of Perimeta VM A instances, indexed by perimeta_instance_index + vm_b_names: + type: comma_delimited_list + description: List of names of Perimeta VM A instances, indexed by perimeta_instance_index + perimeta_instance_index: + type: number + description: Index of instance among multiple instances. Use to retrieve correct parameter for this instance when passed all parameters for all instances. + perimeta_image_name: + type: string + description: Glance image for Perimeta instance + constraints: + - custom_constraint: glance.image + perimeta_flavor_name: + type: string + description: Flavor to use for creating VM instances + constraints: + - custom_constraint: nova.flavor + perimeta_keypair: + type: string + description: Keypair to use for accessing this Perimeta instance + constraints: + - custom_constraint: nova.keypair + availability_zone_0: + # Can be commented out along with references if always using a single availability zone + type: string + description: Availability zone for A instances. + availability_zone_1: + # Can be commented out along with references if always using a single availability zone + type: string + description: Availability zone for B instances. May be the same as A instance. + mgmt_net_id: + type: string + description: Management network id + constraints: + - custom_constraint: neutron.network + mgmt_net_plen: + type: string + description: Prefix length of management network + mgmt_net_default_gateway: + type: string + description: IP address of management default gateway + mgmt_vips: + type: comma_delimited_list + description: List of management virtual IP addresses for all instances. + mgmt_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as management IPs of A instances. + mgmt_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as management IPs of B instances. + mgmt_sec_groups: + type: comma_delimited_list + description: List of security groups to add on management interfaces. + ha_net_id: + type: string + description: HA network id + constraints: + - custom_constraint: neutron.network + ha_network_plen: + type: number + constraints: + - range: { min: 0, max: 32 } + description: ha_network_plen must be between 0 and 32 + ha_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as HA IPs of A instances. + ha_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as HA IPs of B instances. + ha_sec_groups: + type: comma_delimited_list + description: List of security groups to add on HA interfaces. + trusted_net_id: + type: string + description: Service network 1 network UUID + constraints: + - custom_constraint: neutron.network + trusted_vips: + type: comma_delimited_list + description: List of service network 1 virtual IP addresses for all instances. + trusted_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as trusted fixed IPs of A instances. + trusted_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as trusted fixed IPs of B instances. + trusted_sec_groups: + type: comma_delimited_list + description: List of security groups to add on trusted interfaces. + untrusted_net_id: + type: string + description: Service network 2 network UUID + constraints: + - custom_constraint: neutron.network + untrusted_vips: + type: comma_delimited_list + description: List of service network 2 virtual IP addresses for all instances. + untrusted_v6_vips: + type: comma_delimited_list + description: List of service network 2 alternate virtual IP addresses for all instances. + untrusted_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted fixed IPs of A instances. + untrusted_a_v6_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted alternate fixed IPs of A instances. + untrusted_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted fixed IPs of B instances. + untrusted_b_v6_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted alternate fixed IPs of B instances. + untrusted_sec_groups: + type: comma_delimited_list + description: List of security groups to add on untrusted interfaces. + untrusted_num_vlans: + type: number + description: Number of VLANs to connect to on the untrusted/access network + untrusted_vlan_ids: + type: comma_delimited_list + description: List of VLAN IDs to use on the untrusted/access network + untrusted_vlan_networks: + type: comma_delimited_list + description: List of Contrail VLAN networks to use on the untrusted/access network. The order and number of these must match the VLAN ID list. + perimeta_param_server_group: + type: string + description: Server group to use for these VMs - ignored + perimeta_config: + type: string + description: Orchestration template configuration for instance. + +resources: + + # Perimeta management ports + perimeta_a_mgmt_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_mgmt_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: mgmt_net_id } + fixed_ips: + - ip_address: { get_param: [ mgmt_a_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: mgmt_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ mgmt_vips, { get_param: perimeta_instance_index } ] } + + # Perimeta HA ports + perimeta_a_ha_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_ha_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: ha_net_id } + fixed_ips: + - ip_address: { get_param: [ ha_a_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: ha_sec_groups } + + # Perimeta core/trusted service network ports + # + # Dual stack core network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + perimeta_a_trusted_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_trusted_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: trusted_net_id } + fixed_ips: + - ip_address: { get_param: [ trusted_a_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: trusted_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ trusted_vips, { get_param: perimeta_instance_index } ] } + + # Perimeta access/untrusted service network ports + # + # Dual stack access network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + perimeta_a_untrusted_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_untrusted_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: untrusted_net_id } + fixed_ips: + - ip_address: { get_param: [ untrusted_a_ips, { get_param: perimeta_instance_index } ] } + - ip_address: { get_param: [ untrusted_a_v6_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: untrusted_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + - ip_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + + # Contrail VLAN subinterfaces + perimeta_a_untrusted_0_vlan_ports: + type: OS::Heat::ResourceGroup + properties: + count: { get_param: untrusted_num_vlans } + resource_def: + type: vlan_subinterface_dual.yaml + properties: + subinterface_instance_index: "%index%" + subinterface_name_prefix: + str_replace: + template: $VM_untrusted_port_vlan_ + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + parent_interface: { get_resource: perimeta_a_untrusted_0_port } + mac_address: { get_attr: [ perimeta_a_untrusted_0_port, mac_address ] } + ip_address: { get_param: [ untrusted_a_ips, { get_param: perimeta_instance_index } ] } + ipv6_address: { get_param: [ untrusted_a_v6_ips, { get_param: perimeta_instance_index } ] } + virtual_ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + virtual_ipv6_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + vlan_ids: { get_param: untrusted_vlan_ids } + vlan_networks: { get_param: untrusted_vlan_networks } + + # Perimeta Rf service network ports (SSC only) + # + # Dual stack access network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + # Add any additional service ports here. + + perimeta_a_server_0: + type: OS::Nova::Server +# depends_on: perimeta_b_server_0 + properties: + name: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + image: { get_param: perimeta_image_name } + flavor: { get_param: perimeta_flavor_name } + key_name: { get_param: perimeta_keypair } + scheduler_hints: { group: { get_param: perimeta_param_server_group } } + metadata: + 'vnf_id': { get_param: vnf_id } + 'vm_role': + str_replace: + template: $ROLE_a + params: + $ROLE: { get_param: vm_role } + 'vf_module_id': { get_param: vf_module_id } + personality: + '/opt/MetaSwitch/init/custom.ini': { get_file: custom.ini } + + networks: + - port: { get_resource: perimeta_a_mgmt_0_port } + - port: { get_resource: perimeta_a_ha_0_port } + - port: { get_resource: perimeta_a_trusted_0_port } + - port: { get_resource: perimeta_a_untrusted_0_port } + availability_zone: { get_param: availability_zone_0 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + { + "vnic_assignment": { + "IBG1mgmt": {"mac": "$MGMT_MACADDR"}, + "IPG1": {"mac": "$HA_MACADDR"}, + "RPG1": {"mac": "$TRUSTED_MACADDR"}, + "RPG2": {"mac": "$UNTRUSTED_MACADDR"} + }, + "ip_ha_local": "$LOCAL_HA_IP_ADDR", + "ip_ha_remote": "$REMOTE_HA_IP_ADDR", + "ip_ha_plen": "$HA_NETWORK_PLEN" + // "ip_mgmt_local": "$LOCAL_MGMT_IP_ADDR", + // "ip_mgmt_remote": "$REMOTE_MGMT_IP_ADDR", + // "ip_mgmt_plen": "$MGMT_NETWORK_PLEN", + // "ip_mgmt_gway": "$MGMT_NETWORK_DEFAULT_GATEWAY" + } + + params: + $MGMT_MACADDR: { get_attr: [perimeta_a_mgmt_0_port, mac_address] } + $HA_MACADDR: { get_attr: [perimeta_a_ha_0_port, mac_address] } + $TRUSTED_MACADDR: { get_attr: [perimeta_a_trusted_0_port, mac_address] } + $UNTRUSTED_MACADDR: { get_attr: [perimeta_a_untrusted_0_port, mac_address] } + $LOCAL_HA_IP_ADDR: { get_param: [ ha_a_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_HA_IP_ADDR: { get_param: [ ha_b_ips, { get_param: perimeta_instance_index } ] } + $HA_NETWORK_PLEN: { get_param: ha_network_plen } + $LOCAL_MGMT_IP_ADDR: { get_param: [ mgmt_a_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_MGMT_IP_ADDR: { get_param: [ mgmt_b_ips, { get_param: perimeta_instance_index } ] } + $MGMT_NETWORK_PLEN: { get_param: mgmt_net_plen } + $MGMT_NETWORK_DEFAULT_GATEWAY: { get_param: mgmt_net_default_gateway } + + +outputs: + + server_group_used: + description: Server group used for these VMs + value: { get_param: perimeta_param_server_group } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_sw_b.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_sw_b.yaml new file mode 100644 index 0000000000..4b68c3adf2 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_sw_b.yaml @@ -0,0 +1,327 @@ +# Heat template which intstantiates a 1+1 HA Perimeta instance with 4 or 5 +# vNICs. +# +# This is designed to be included in a higher level template. +# +# This template puts the Perimeta configuration in place using userdata +# injected via OpenStack's ConfigDrive mechanism. +# +# Host anti-affinity is achieved using different availability zones for +# the Perimeta instance or server group anti-affinity if they are in the +# same availability zone. +# +# Template requires Juno or above and has been tested on Kilo. +# +heat_template_version: 2014-10-16 + +description: > + HOT template to instantiate a Perimeta 1+1 HA instance with 4vNICs as part of a nested template + +parameters: + vnf_id: + type: string + description: VNF ID of this deployment + vm_role: + type: string + description: Role of these VMs + vf_module_id: + type: string + description: Unique ID for this VF Module instance + system_names: + type: comma_delimited_list + description: List of system names of Perimeta instances. Name of a specific instance is indexed by perimeta_instance_index + vm_a_names: + type: comma_delimited_list + description: List of names of Perimeta VM A instances, indexed by perimeta_instance_index + vm_b_names: + type: comma_delimited_list + description: List of names of Perimeta VM A instances, indexed by perimeta_instance_index + perimeta_instance_index: + type: number + description: Index of instance among multiple instances. Use to retrieve correct parameter for this instance when passed all parameters for all instances. + perimeta_image_name: + type: string + description: Glance image for Perimeta instance + constraints: + - custom_constraint: glance.image + perimeta_flavor_name: + type: string + description: Flavor to use for creating VM instances + constraints: + - custom_constraint: nova.flavor + perimeta_keypair: + type: string + description: Keypair to use for accessing this Perimeta instance + constraints: + - custom_constraint: nova.keypair + availability_zone_0: + # Can be commented out along with references if always using a single availability zone + type: string + description: Availability zone for A instances. + availability_zone_1: + # Can be commented out along with references if always using a single availability zone + type: string + description: Availability zone for B instances. May be the same as A instance. + mgmt_net_id: + type: string + description: Management network id + constraints: + - custom_constraint: neutron.network + mgmt_net_plen: + type: string + description: Prefix length of management network + mgmt_net_default_gateway: + type: string + description: IP address of management default gateway + mgmt_vips: + type: comma_delimited_list + description: List of management virtual IP addresses for all instances. + mgmt_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as management IPs of A instances. + mgmt_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as management IPs of B instances. + mgmt_sec_groups: + type: comma_delimited_list + description: List of security groups to add on management interfaces. + ha_net_id: + type: string + description: HA network id + constraints: + - custom_constraint: neutron.network + ha_network_plen: + type: number + constraints: + - range: { min: 0, max: 32 } + description: ha_network_plen must be between 0 and 32 + ha_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as HA IPs of A instances. + ha_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as HA IPs of B instances. + ha_sec_groups: + type: comma_delimited_list + description: List of security groups to add on HA interfaces. + trusted_net_id: + type: string + description: Service network 1 network UUID + constraints: + - custom_constraint: neutron.network + trusted_vips: + type: comma_delimited_list + description: List of service network 1 virtual IP addresses for all instances. + trusted_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as trusted fixed IPs of A instances. + trusted_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as trusted fixed IPs of B instances. + trusted_sec_groups: + type: comma_delimited_list + description: List of security groups to add on trusted interfaces. + untrusted_net_id: + type: string + description: Service network 2 network UUID + constraints: + - custom_constraint: neutron.network + untrusted_vips: + type: comma_delimited_list + description: List of service network 2 virtual IP addresses for all instances. + untrusted_v6_vips: + type: comma_delimited_list + description: List of service network 2 alternate virtual IP addresses for all instances. + untrusted_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted fixed IPs of A instances. + untrusted_a_v6_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted alternate fixed IPs of A instances. + untrusted_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted fixed IPs of B instances. + untrusted_b_v6_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted alternate fixed IPs of B instances. + untrusted_sec_groups: + type: comma_delimited_list + description: List of security groups to add on untrusted interfaces. + untrusted_num_vlans: + type: number + description: Number of VLANs to connect to on the untrusted/access network + untrusted_vlan_ids: + type: comma_delimited_list + description: List of VLAN IDs to use on the untrusted/access network + untrusted_vlan_networks: + type: comma_delimited_list + description: List of Contrail VLAN networks to use on the untrusted/access network. The order and number of these must match the VLAN ID list. + perimeta_param_server_group: + type: string + description: Server group to use for these VMs - ignored + perimeta_config: + type: string + description: Orchestration template configuration for instance. + +resources: + + # Perimeta management ports + perimeta_b_mgmt_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_mgmt_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: mgmt_net_id } + fixed_ips: + - ip_address: { get_param: [ mgmt_b_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: mgmt_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ mgmt_vips, { get_param: perimeta_instance_index } ] } + + # Perimeta HA ports + perimeta_b_ha_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_ha_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: ha_net_id } + fixed_ips: + - ip_address: { get_param: [ ha_b_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: ha_sec_groups } + + # Perimeta core/trusted service network ports + # + # Dual stack core network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + perimeta_b_trusted_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_trusted_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: trusted_net_id } + fixed_ips: + - ip_address: { get_param: [ trusted_b_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: trusted_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ trusted_vips, { get_param: perimeta_instance_index } ] } + + # Perimeta access/untrusted service network ports + # + # Dual stack access network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + perimeta_b_untrusted_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_untrusted_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: untrusted_net_id } + fixed_ips: + - ip_address: { get_param: [ untrusted_b_ips, { get_param: perimeta_instance_index } ] } + - ip_address: { get_param: [ untrusted_b_v6_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: untrusted_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + - ip_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + + # Contrail VLAN subinterfaces + perimeta_b_untrusted_0_vlan_ports: + type: OS::Heat::ResourceGroup + properties: + count: { get_param: untrusted_num_vlans } + resource_def: + type: vlan_subinterface_dual.yaml + properties: + subinterface_instance_index: "%index%" + subinterface_name_prefix: + str_replace: + template: $VM_untrusted_port_vlan_ + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + parent_interface: { get_resource: perimeta_b_untrusted_0_port } + mac_address: { get_attr: [ perimeta_b_untrusted_0_port, mac_address ] } + ip_address: { get_param: [ untrusted_b_ips, { get_param: perimeta_instance_index } ] } + ipv6_address: { get_param: [ untrusted_b_v6_ips, { get_param: perimeta_instance_index } ] } + virtual_ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + virtual_ipv6_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + vlan_ids: { get_param: untrusted_vlan_ids } + vlan_networks: { get_param: untrusted_vlan_networks } + + # Perimeta Rf service network ports (SSC only) + # + # Dual stack access network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + # Add any additional service ports here. + + perimeta_b_server_0: + type: OS::Nova::Server + properties: + name: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + image: { get_param: perimeta_image_name } + flavor: { get_param: perimeta_flavor_name } + key_name: { get_param: perimeta_keypair } + scheduler_hints: { group: { get_param: perimeta_param_server_group } } + metadata: + 'vnf_id': { get_param: vnf_id } + 'vm_role': + str_replace: + template: $ROLE_b + params: + $ROLE: { get_param: vm_role } + 'vf_module_id': { get_param: vf_module_id } + networks: + - port: { get_resource: perimeta_b_mgmt_0_port } + - port: { get_resource: perimeta_b_ha_0_port } + - port: { get_resource: perimeta_b_trusted_0_port } + - port: { get_resource: perimeta_b_untrusted_0_port } + availability_zone: { get_param: availability_zone_1 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + { + "vnic_assignment": { + "IBG1mgmt": {"mac": "$MGMT_MACADDR"}, + "IPG1": {"mac": "$HA_MACADDR"}, + "RPG1": {"mac": "$TRUSTED_MACADDR"}, + "RPG2": {"mac": "$UNTRUSTED_MACADDR"} + }, + "ip_ha_local": "$LOCAL_HA_IP_ADDR", + "ip_ha_remote": "$REMOTE_HA_IP_ADDR", + "ip_ha_plen": "$HA_NETWORK_PLEN" + //"ip_mgmt_local": "$LOCAL_MGMT_IP_ADDR", + //"ip_mgmt_remote": "$REMOTE_MGMT_IP_ADDR", + //"ip_mgmt_plen": "$MGMT_NETWORK_PLEN", + //"ip_mgmt_gway": "$MGMT_NETWORK_DEFAULT_GATEWAY" + } + + params: + $MGMT_MACADDR: { get_attr: [perimeta_b_mgmt_0_port, mac_address] } + $HA_MACADDR: { get_attr: [perimeta_b_ha_0_port, mac_address] } + $TRUSTED_MACADDR: { get_attr: [perimeta_b_trusted_0_port, mac_address] } + $UNTRUSTED_MACADDR: { get_attr: [perimeta_b_untrusted_0_port, mac_address] } + $LOCAL_HA_IP_ADDR: { get_param: [ ha_b_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_HA_IP_ADDR: { get_param: [ ha_a_ips, { get_param: perimeta_instance_index } ] } + $HA_NETWORK_PLEN: { get_param: ha_network_plen } + $LOCAL_MGMT_IP_ADDR: { get_param: [ mgmt_b_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_MGMT_IP_ADDR: { get_param: [ mgmt_a_ips, { get_param: perimeta_instance_index } ] } + $MGMT_NETWORK_PLEN: { get_param: mgmt_net_plen } + $MGMT_NETWORK_DEFAULT_GATEWAY: { get_param: mgmt_net_default_gateway } + +outputs: + + server_group_used: + description: Server group used for these VMs + value: { get_param: perimeta_param_server_group } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_swmu.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_swmu.yaml new file mode 100644 index 0000000000..7e4307b75f --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_swmu.yaml @@ -0,0 +1,561 @@ +# Heat template which intstantiates a 1+1 HA Perimeta instance with 4 or 5 +# vNICs. +# +# This is designed to be included in a higher level template. +# +# This template puts the Perimeta configuration in place using userdata +# injected via OpenStack's ConfigDrive mechanism. +# +# Host anti-affinity is achieved using different availability zones for +# the Perimeta instance or server group anti-affinity if they are in the +# same availability zone. +# +# Template requires Juno or above and has been tested on Kilo. +# +heat_template_version: 2014-10-16 + +description: > + HOT template to instantiate a Perimeta 1+1 HA instance with 4vNICs as part of a nested template + +parameters: + vnf_id: + type: string + description: VNF ID of this deployment + vm_role: + type: string + description: Role of these VMs + vf_module_id: + type: string + description: Unique ID for this VF Module instance + system_names: + type: comma_delimited_list + description: List of system names of Perimeta instances. Name of a specific instance is indexed by perimeta_instance_index + vm_a_names: + type: comma_delimited_list + description: List of names of Perimeta VM A instances, indexed by perimeta_instance_index + vm_b_names: + type: comma_delimited_list + description: List of names of Perimeta VM A instances, indexed by perimeta_instance_index + perimeta_instance_index: + type: number + description: Index of instance among multiple instances. Use to retrieve correct parameter for this instance when passed all parameters for all instances. + perimeta_image_name: + type: string + description: Glance image for Perimeta instance + constraints: + - custom_constraint: glance.image + perimeta_flavor_name: + type: string + description: Flavor to use for creating VM instances + constraints: + - custom_constraint: nova.flavor + perimeta_keypair: + type: string + description: Keypair to use for accessing this Perimeta instance + constraints: + - custom_constraint: nova.keypair + availability_zone_0: + # Can be commented out along with references if always using a single availability zone + type: string + description: Availability zone for A instances. + availability_zone_1: + # Can be commented out along with references if always using a single availability zone + type: string + description: Availability zone for B instances. May be the same as A instance. + mgmt_net_id: + type: string + description: Management network id + constraints: + - custom_constraint: neutron.network + mgmt_net_plen: + type: string + description: Prefix length of management network + mgmt_net_default_gateway: + type: string + description: IP address of management default gateway + mgmt_vips: + type: comma_delimited_list + description: List of management virtual IP addresses for all instances. + mgmt_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as management IPs of A instances. + mgmt_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as management IPs of B instances. + mgmt_sec_groups: + type: comma_delimited_list + description: List of security groups to add on management interfaces. + ha_net_id: + type: string + description: HA network id + constraints: + - custom_constraint: neutron.network + ha_network_plen: + type: number + constraints: + - range: { min: 0, max: 32 } + description: ha_network_plen must be between 0 and 32 + ha_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as HA IPs of A instances. + ha_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as HA IPs of B instances. + ha_sec_groups: + type: comma_delimited_list + description: List of security groups to add on HA interfaces. + trusted_net_id: + type: string + description: Service network 1 network UUID + constraints: + - custom_constraint: neutron.network + trusted_vips: + type: comma_delimited_list + description: List of service network 1 virtual IP addresses for all instances. + trusted_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as trusted fixed IPs of A instances. + trusted_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as trusted fixed IPs of B instances. + trusted_sec_groups: + type: comma_delimited_list + description: List of security groups to add on trusted interfaces. + untrusted_net_id: + type: string + description: Service network 2 network UUID + constraints: + - custom_constraint: neutron.network + untrusted_vips: + type: comma_delimited_list + description: List of service network 2 virtual IP addresses for all instances. + untrusted_v6_vips: + type: comma_delimited_list + description: List of service network 2 alternate virtual IP addresses for all instances. + untrusted_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted fixed IPs of A instances. + untrusted_a_v6_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted alternate fixed IPs of A instances. + untrusted_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted fixed IPs of B instances. + untrusted_b_v6_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted alternate fixed IPs of B instances. + untrusted_sec_groups: + type: comma_delimited_list + description: List of security groups to add on untrusted interfaces. + untrusted_num_vlans: + type: number + description: Number of VLANs to connect to on the untrusted/access network + untrusted_vlan_ids: + type: comma_delimited_list + description: List of VLAN IDs to use on the untrusted/access network + untrusted_vlan_networks: + type: comma_delimited_list + description: List of Contrail VLAN networks to use on the untrusted/access network. The order and number of these must match the VLAN ID list. + serv3_net_id: + type: string + description: Service network 3 network UUID + serv3_vips: + type: comma_delimited_list + description: List of service network 3 virtual IP addresses for all instances. + serv3_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as serv3 fixed IPs of A instances. + serv3_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as serv3 fixed IPs of B instances. + serv3_sec_groups: + type: comma_delimited_list + description: List of security groups to add on serv3 interfaces. + unused_net_id: + type: string + description: Service network unused port network UUID + perimeta_param_server_group: + type: string + description: Server group to use for these VMs - ignored + perimeta_config: + type: string + description: Orchestration template configuration for instance. + +resources: + + # Perimeta management ports + perimeta_a_mgmt_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_mgmt_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: mgmt_net_id } + fixed_ips: + - ip_address: { get_param: [ mgmt_a_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: mgmt_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ mgmt_vips, { get_param: perimeta_instance_index } ] } + + perimeta_b_mgmt_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_mgmt_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: mgmt_net_id } + fixed_ips: + - ip_address: { get_param: [ mgmt_b_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: mgmt_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ mgmt_vips, { get_param: perimeta_instance_index } ] } + + # Perimeta HA ports + perimeta_a_ha_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_ha_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: ha_net_id } + fixed_ips: + - ip_address: { get_param: [ ha_a_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: ha_sec_groups } + + perimeta_b_ha_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_ha_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: ha_net_id } + fixed_ips: + - ip_address: { get_param: [ ha_b_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: ha_sec_groups } + + # Perimeta core/trusted service network ports + # + # Dual stack core network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + perimeta_a_trusted_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_trusted_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: trusted_net_id } + fixed_ips: + - ip_address: { get_param: [ trusted_a_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: trusted_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ trusted_vips, { get_param: perimeta_instance_index } ] } + + perimeta_b_trusted_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_trusted_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: trusted_net_id } + fixed_ips: + - ip_address: { get_param: [ trusted_b_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: trusted_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ trusted_vips, { get_param: perimeta_instance_index } ] } + + # Perimeta access/untrusted service network ports + # + # Dual stack access network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + perimeta_a_untrusted_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_untrusted_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: untrusted_net_id } + fixed_ips: + - ip_address: { get_param: [ untrusted_a_ips, { get_param: perimeta_instance_index } ] } + - ip_address: { get_param: [ untrusted_a_v6_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: untrusted_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + - ip_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + + # Contrail VLAN subinterfaces + perimeta_a_untrusted_0_vlan_ports: + type: OS::Heat::ResourceGroup + properties: + count: { get_param: untrusted_num_vlans } + resource_def: + type: vlan_subinterface_dual.yaml + properties: + subinterface_instance_index: "%index%" + subinterface_name_prefix: + str_replace: + template: $VM_untrusted_port_vlan_ + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + parent_interface: { get_resource: perimeta_a_untrusted_0_port } + mac_address: { get_attr: [ perimeta_a_untrusted_0_port, mac_address ] } + ip_address: { get_param: [ untrusted_a_ips, { get_param: perimeta_instance_index } ] } + ipv6_address: { get_param: [ untrusted_a_v6_ips, { get_param: perimeta_instance_index } ] } + virtual_ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + virtual_ipv6_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + vlan_ids: { get_param: untrusted_vlan_ids } + vlan_networks: { get_param: untrusted_vlan_networks } + + perimeta_b_untrusted_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_untrusted_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: untrusted_net_id } + fixed_ips: + - ip_address: { get_param: [ untrusted_b_ips, { get_param: perimeta_instance_index } ] } + - ip_address: { get_param: [ untrusted_b_v6_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: untrusted_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + - ip_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + + # Contrail VLAN subinterfaces + perimeta_b_untrusted_0_vlan_ports: + type: OS::Heat::ResourceGroup + properties: + count: { get_param: untrusted_num_vlans } + resource_def: + type: vlan_subinterface_dual.yaml + properties: + subinterface_instance_index: "%index%" + subinterface_name_prefix: + str_replace: + template: $VM_untrusted_port_vlan_ + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + parent_interface: { get_resource: perimeta_b_untrusted_0_port } + mac_address: { get_attr: [ perimeta_b_untrusted_0_port, mac_address ] } + ip_address: { get_param: [ untrusted_b_ips, { get_param: perimeta_instance_index } ] } + ipv6_address: { get_param: [ untrusted_b_v6_ips, { get_param: perimeta_instance_index } ] } + virtual_ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + virtual_ipv6_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + vlan_ids: { get_param: untrusted_vlan_ids } + vlan_networks: { get_param: untrusted_vlan_networks } + + # Perimeta Rf service network ports (SSC only) + # + # Dual stack access network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + perimeta_a_serv3_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_serv3_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: serv3_net_id } + fixed_ips: + - ip_address: { get_param: [ serv3_a_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: serv3_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ serv3_vips, { get_param: perimeta_instance_index } ] } + + perimeta_b_serv3_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_serv3_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: serv3_net_id } + fixed_ips: + - ip_address: { get_param: [ serv3_b_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: serv3_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ serv3_vips, { get_param: perimeta_instance_index } ] } + + perimeta_a_unused_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_unused_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network: { get_param: unused_net_id } + + perimeta_b_unused_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_unused_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network: { get_param: unused_net_id } + + # Add any additional service ports here. + + # Only supported in Juno and beyond - used to enforce host anti-affinity + # Can be commented out along with references to it if always using + # different availability zones. + perimeta_server_group: + type: OS::Nova::ServerGroup + properties: + name: + str_replace: + template: $SYSTEM_server_group + params: + $SYSTEM: { get_param: [ system_names, { get_param: perimeta_instance_index } ] } + policies: ['anti-affinity'] + + perimeta_a_server_0: + type: OS::Nova::Server + depends_on: perimeta_b_server_0 + properties: + name: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + image: { get_param: perimeta_image_name } + flavor: { get_param: perimeta_flavor_name } + key_name: { get_param: perimeta_keypair } + scheduler_hints: { group: { get_resource: perimeta_server_group } } + metadata: + 'vnf_id': { get_param: vnf_id } + 'vm_role': + str_replace: + template: $ROLE_a + params: + $ROLE: { get_param: vm_role } + 'vf_module_id': { get_param: vf_module_id } + personality: + '/opt/MetaSwitch/init/custom.ini': { get_file: custom.ini } + + networks: + - port: { get_resource: perimeta_a_mgmt_0_port } + - port: { get_resource: perimeta_a_ha_0_port } + - port: { get_resource: perimeta_a_trusted_0_port } + - port: { get_resource: perimeta_a_untrusted_0_port } + - port: { get_resource: perimeta_a_serv3_0_port } + - port: { get_resource: perimeta_a_unused_0_port } + availability_zone: { get_param: availability_zone_0 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: { get_param: perimeta_config } + params: + $MGMT_MACADDR: { get_attr: [perimeta_a_mgmt_0_port, mac_address] } + $HA_MACADDR: { get_attr: [perimeta_a_ha_0_port, mac_address] } + $TRUSTED_MACADDR: { get_attr: [perimeta_a_trusted_0_port, mac_address] } + $UNTRUSTED_MACADDR: { get_attr: [perimeta_a_untrusted_0_port, mac_address] } + $SERV3_MACADDR: { get_attr: [perimeta_a_serv3_0_port, mac_address] } + $SERV4_MACADDR: { get_attr: [perimeta_a_unused_0_port, mac_address] } + $LOCAL_HA_IP_ADDR: { get_param: [ ha_a_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_HA_IP_ADDR: { get_param: [ ha_b_ips, { get_param: perimeta_instance_index } ] } + $HA_NETWORK_PLEN: { get_param: ha_network_plen } + $LOCAL_MGMT_IP_ADDR: { get_param: [ mgmt_a_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_MGMT_IP_ADDR: { get_param: [ mgmt_b_ips, { get_param: perimeta_instance_index } ] } + $MGMT_NETWORK_PLEN: { get_param: mgmt_net_plen } + $MGMT_NETWORK_DEFAULT_GATEWAY: { get_param: mgmt_net_default_gateway } + $VIRT_MGMT_IP_ADDR: { get_param: [ mgmt_vips, { get_param: perimeta_instance_index } ] } + $VIRT_TRUSTED_IP_ADDR: { get_param: [ trusted_vips, { get_param: perimeta_instance_index } ] } + $LOCAL_TRUSTED_IP_ADDR: { get_param: [ trusted_a_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_TRUSTED_IP_ADDR: { get_param: [ trusted_b_ips, { get_param: perimeta_instance_index } ] } + $VIRT_UNTRUSTED_IP_ADDR: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + $VIRT_UNTRUSTED_ALT_IP_ADDR: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + $LOCAL_UNTRUSTED_IP_ADDR: { get_param: [ untrusted_a_ips, { get_param: perimeta_instance_index } ] } + $LOCAL_UNTRUSTED_ALT_IP_ADDR: { get_param: [ untrusted_a_v6_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_UNTRUSTED_IP_ADDR: { get_param: [ untrusted_b_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_UNTRUSTED_ALT_IP_ADDR: { get_param: [ untrusted_b_v6_ips, { get_param: perimeta_instance_index } ] } + $VIRT_SERV3_IP_ADDR: { get_param: [ serv3_vips, { get_param: perimeta_instance_index } ] } + $LOCAL_SERV3_IP_ADDR: { get_param: [ serv3_a_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_SERV3_IP_ADDR: { get_param: [ serv3_b_ips, { get_param: perimeta_instance_index } ] } + $VM_NAME_A: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + $VM_NAME_B: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + $SYSTEM_NAME: { get_param: [ system_names, { get_param: perimeta_instance_index } ] } + + perimeta_b_server_0: + type: OS::Nova::Server + properties: + name: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + image: { get_param: perimeta_image_name } + flavor: { get_param: perimeta_flavor_name } + key_name: { get_param: perimeta_keypair } + scheduler_hints: { group: { get_resource: perimeta_server_group } } + metadata: + 'vnf_id': { get_param: vnf_id } + 'vm_role': + str_replace: + template: $ROLE_b + params: + $ROLE: { get_param: vm_role } + 'vf_module_id': { get_param: vf_module_id } + networks: + - port: { get_resource: perimeta_b_mgmt_0_port } + - port: { get_resource: perimeta_b_ha_0_port } + - port: { get_resource: perimeta_b_trusted_0_port } + - port: { get_resource: perimeta_b_untrusted_0_port } + - port: { get_resource: perimeta_b_serv3_0_port } + - port: { get_resource: perimeta_b_unused_0_port } + availability_zone: { get_param: availability_zone_1 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + { + "vnic_assignment": { + "IBG1mgmt": {"mac": "$MGMT_MACADDR"}, + "IPG1": {"mac": "$HA_MACADDR"}, + "RPG1": {"mac": "$TRUSTED_MACADDR"}, + "RPG2": {"mac": "$UNTRUSTED_MACADDR"}, + "RPG3": {"mac": "$SERV3_MACADDR"}, + "RPG4": {"mac": "$SERV4_MACADDR"} + }, + "ip_ha_local": "$LOCAL_HA_IP_ADDR", + "ip_ha_remote": "$REMOTE_HA_IP_ADDR", + "ip_ha_plen": "$HA_NETWORK_PLEN" + //"ip_mgmt_local": "$LOCAL_MGMT_IP_ADDR", + //"ip_mgmt_remote": "$REMOTE_MGMT_IP_ADDR", + //"ip_mgmt_plen": "$MGMT_NETWORK_PLEN", + //"ip_mgmt_gway": "$MGMT_NETWORK_DEFAULT_GATEWAY" + } + + params: + $MGMT_MACADDR: { get_attr: [perimeta_b_mgmt_0_port, mac_address] } + $HA_MACADDR: { get_attr: [perimeta_b_ha_0_port, mac_address] } + $TRUSTED_MACADDR: { get_attr: [perimeta_b_trusted_0_port, mac_address] } + $UNTRUSTED_MACADDR: { get_attr: [perimeta_b_untrusted_0_port, mac_address] } + $SERV3_MACADDR: { get_attr: [perimeta_b_serv3_0_port, mac_address] } + $SERV4_MACADDR: { get_attr: [perimeta_b_unused_0_port, mac_address] } + $LOCAL_HA_IP_ADDR: { get_param: [ ha_b_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_HA_IP_ADDR: { get_param: [ ha_a_ips, { get_param: perimeta_instance_index } ] } + $HA_NETWORK_PLEN: { get_param: ha_network_plen } + $LOCAL_MGMT_IP_ADDR: { get_param: [ mgmt_b_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_MGMT_IP_ADDR: { get_param: [ mgmt_a_ips, { get_param: perimeta_instance_index } ] } + $MGMT_NETWORK_PLEN: { get_param: mgmt_net_plen } + $MGMT_NETWORK_DEFAULT_GATEWAY: { get_param: mgmt_net_default_gateway } + +outputs: + + server_group_used: + description: Server group used for these VMs + value: { get_resource: perimeta_server_group } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_swmu_a.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_swmu_a.yaml new file mode 100644 index 0000000000..2c4fb50842 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_swmu_a.yaml @@ -0,0 +1,381 @@ +# Heat template which intstantiates a 1+1 HA Perimeta instance with 4 or 5 +# vNICs. +# +# This is designed to be included in a higher level template. +# +# This template puts the Perimeta configuration in place using userdata +# injected via OpenStack's ConfigDrive mechanism. +# +# Host anti-affinity is achieved using different availability zones for +# the Perimeta instance or server group anti-affinity if they are in the +# same availability zone. +# +# Template requires Juno or above and has been tested on Kilo. +# +heat_template_version: 2014-10-16 + +description: > + HOT template to instantiate a Perimeta 1+1 HA instance with 4vNICs as part of a nested template + +parameters: + vnf_id: + type: string + description: VNF ID of this deployment + vm_role: + type: string + description: Role of these VMs + vf_module_id: + type: string + description: Unique ID for this VF Module instance + system_names: + type: comma_delimited_list + description: List of system names of Perimeta instances. Name of a specific instance is indexed by perimeta_instance_index + vm_a_names: + type: comma_delimited_list + description: List of names of Perimeta VM A instances, indexed by perimeta_instance_index + vm_b_names: + type: comma_delimited_list + description: List of names of Perimeta VM A instances, indexed by perimeta_instance_index + perimeta_instance_index: + type: number + description: Index of instance among multiple instances. Use to retrieve correct parameter for this instance when passed all parameters for all instances. + perimeta_image_name: + type: string + description: Glance image for Perimeta instance + constraints: + - custom_constraint: glance.image + perimeta_flavor_name: + type: string + description: Flavor to use for creating VM instances + constraints: + - custom_constraint: nova.flavor + perimeta_keypair: + type: string + description: Keypair to use for accessing this Perimeta instance + constraints: + - custom_constraint: nova.keypair + availability_zone_0: + # Can be commented out along with references if always using a single availability zone + type: string + description: Availability zone for A instances. + availability_zone_1: + # Can be commented out along with references if always using a single availability zone + type: string + description: Availability zone for B instances. May be the same as A instance. + mgmt_net_id: + type: string + description: Management network id + constraints: + - custom_constraint: neutron.network + mgmt_net_plen: + type: string + description: Prefix length of management network + mgmt_net_default_gateway: + type: string + description: IP address of management default gateway + mgmt_vips: + type: comma_delimited_list + description: List of management virtual IP addresses for all instances. + mgmt_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as management IPs of A instances. + mgmt_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as management IPs of B instances. + mgmt_sec_groups: + type: comma_delimited_list + description: List of security groups to add on management interfaces. + ha_net_id: + type: string + description: HA network id + constraints: + - custom_constraint: neutron.network + ha_network_plen: + type: number + constraints: + - range: { min: 0, max: 32 } + description: ha_network_plen must be between 0 and 32 + ha_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as HA IPs of A instances. + ha_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as HA IPs of B instances. + ha_sec_groups: + type: comma_delimited_list + description: List of security groups to add on HA interfaces. + trusted_net_id: + type: string + description: Service network 1 network UUID + constraints: + - custom_constraint: neutron.network + trusted_vips: + type: comma_delimited_list + description: List of service network 1 virtual IP addresses for all instances. + trusted_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as trusted fixed IPs of A instances. + trusted_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as trusted fixed IPs of B instances. + trusted_sec_groups: + type: comma_delimited_list + description: List of security groups to add on trusted interfaces. + untrusted_net_id: + type: string + description: Service network 2 network UUID + constraints: + - custom_constraint: neutron.network + untrusted_vips: + type: comma_delimited_list + description: List of service network 2 virtual IP addresses for all instances. + untrusted_v6_vips: + type: comma_delimited_list + description: List of service network 2 alternate virtual IP addresses for all instances. + untrusted_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted fixed IPs of A instances. + untrusted_a_v6_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted alternate fixed IPs of A instances. + untrusted_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted fixed IPs of B instances. + untrusted_b_v6_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted alternate fixed IPs of B instances. + untrusted_sec_groups: + type: comma_delimited_list + description: List of security groups to add on untrusted interfaces. + untrusted_num_vlans: + type: number + description: Number of VLANs to connect to on the untrusted/access network + untrusted_vlan_ids: + type: comma_delimited_list + description: List of VLAN IDs to use on the untrusted/access network + untrusted_vlan_networks: + type: comma_delimited_list + description: List of Contrail VLAN networks to use on the untrusted/access network. The order and number of these must match the VLAN ID list. + serv3_net_id: + type: string + description: Service network 3 network UUID + serv3_vips: + type: comma_delimited_list + description: List of service network 3 virtual IP addresses for all instances. + serv3_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as serv3 fixed IPs of A instances. + serv3_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as serv3 fixed IPs of B instances. + serv3_sec_groups: + type: comma_delimited_list + description: List of security groups to add on serv3 interfaces. + unused_net_id: + type: string + description: Service network unused port network UUID + perimeta_param_server_group: + type: string + description: Server group to use for these VMs - ignored + perimeta_config: + type: string + description: Orchestration template configuration for instance. + +resources: + + # Perimeta management ports + perimeta_a_mgmt_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_mgmt_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: mgmt_net_id } + fixed_ips: + - ip_address: { get_param: [ mgmt_a_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: mgmt_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ mgmt_vips, { get_param: perimeta_instance_index } ] } + + # Perimeta HA ports + perimeta_a_ha_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_ha_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: ha_net_id } + fixed_ips: + - ip_address: { get_param: [ ha_a_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: ha_sec_groups } + + # Perimeta core/trusted service network ports + # + # Dual stack core network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + perimeta_a_trusted_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_trusted_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: trusted_net_id } + fixed_ips: + - ip_address: { get_param: [ trusted_a_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: trusted_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ trusted_vips, { get_param: perimeta_instance_index } ] } + + # Perimeta access/untrusted service network ports + # + # Dual stack access network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + perimeta_a_untrusted_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_untrusted_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: untrusted_net_id } + fixed_ips: + - ip_address: { get_param: [ untrusted_a_ips, { get_param: perimeta_instance_index } ] } + - ip_address: { get_param: [ untrusted_a_v6_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: untrusted_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + - ip_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + + # Contrail VLAN subinterfaces + perimeta_a_untrusted_0_vlan_ports: + type: OS::Heat::ResourceGroup + properties: + count: { get_param: untrusted_num_vlans } + resource_def: + type: vlan_subinterface_dual.yaml + properties: + subinterface_instance_index: "%index%" + subinterface_name_prefix: + str_replace: + template: $VM_untrusted_port_vlan_ + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + parent_interface: { get_resource: perimeta_a_untrusted_0_port } + mac_address: { get_attr: [ perimeta_a_untrusted_0_port, mac_address ] } + ip_address: { get_param: [ untrusted_a_ips, { get_param: perimeta_instance_index } ] } + ipv6_address: { get_param: [ untrusted_a_v6_ips, { get_param: perimeta_instance_index } ] } + virtual_ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + virtual_ipv6_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + vlan_ids: { get_param: untrusted_vlan_ids } + vlan_networks: { get_param: untrusted_vlan_networks } + + # Perimeta Rf service network ports (SSC only) + # + # Dual stack access network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + perimeta_a_serv3_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_serv3_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: serv3_net_id } + fixed_ips: + - ip_address: { get_param: [ serv3_a_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: serv3_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ serv3_vips, { get_param: perimeta_instance_index } ] } + + perimeta_a_unused_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_unused_port + params: + $VM: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + network: { get_param: unused_net_id } + + # Add any additional service ports here. + + perimeta_a_server_0: + type: OS::Nova::Server + #depends_on: perimeta_b_server_0 + properties: + name: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] } + image: { get_param: perimeta_image_name } + flavor: { get_param: perimeta_flavor_name } + key_name: { get_param: perimeta_keypair } + scheduler_hints: { group: { get_param: perimeta_param_server_group } } + metadata: + 'vnf_id': { get_param: vnf_id } + 'vm_role': + str_replace: + template: $ROLE_a + params: + $ROLE: { get_param: vm_role } + 'vf_module_id': { get_param: vf_module_id } + personality: + '/opt/MetaSwitch/init/custom.ini': { get_file: custom.ini } + + networks: + - port: { get_resource: perimeta_a_mgmt_0_port } + - port: { get_resource: perimeta_a_ha_0_port } + - port: { get_resource: perimeta_a_trusted_0_port } + - port: { get_resource: perimeta_a_untrusted_0_port } + - port: { get_resource: perimeta_a_serv3_0_port } + - port: { get_resource: perimeta_a_unused_0_port } + availability_zone: { get_param: availability_zone_0 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + { + "vnic_assignment": { + "IBG1mgmt": {"mac": "$MGMT_MACADDR"}, + "IPG1": {"mac": "$HA_MACADDR"}, + "RPG1": {"mac": "$TRUSTED_MACADDR"}, + "RPG2": {"mac": "$UNTRUSTED_MACADDR"}, + "RPG3": {"mac": "$SERV3_MACADDR"}, + "RPG4": {"mac": "$SERV4_MACADDR"} + }, + "ip_ha_local": "$LOCAL_HA_IP_ADDR", + "ip_ha_remote": "$REMOTE_HA_IP_ADDR", + "ip_ha_plen": "$HA_NETWORK_PLEN" + // "ip_mgmt_local": "$LOCAL_MGMT_IP_ADDR", + // "ip_mgmt_remote": "$REMOTE_MGMT_IP_ADDR", + // "ip_mgmt_plen": "$MGMT_NETWORK_PLEN", + // "ip_mgmt_gway": "$MGMT_NETWORK_DEFAULT_GATEWAY" + } + + params: + $MGMT_MACADDR: { get_attr: [perimeta_a_mgmt_0_port, mac_address] } + $HA_MACADDR: { get_attr: [perimeta_a_ha_0_port, mac_address] } + $TRUSTED_MACADDR: { get_attr: [perimeta_a_trusted_0_port, mac_address] } + $UNTRUSTED_MACADDR: { get_attr: [perimeta_a_untrusted_0_port, mac_address] } + $SERV3_MACADDR: { get_attr: [perimeta_a_serv3_0_port, mac_address] } + $SERV4_MACADDR: { get_attr: [perimeta_a_unused_0_port, mac_address] } + $LOCAL_HA_IP_ADDR: { get_param: [ ha_a_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_HA_IP_ADDR: { get_param: [ ha_b_ips, { get_param: perimeta_instance_index } ] } + $HA_NETWORK_PLEN: { get_param: ha_network_plen } + $LOCAL_MGMT_IP_ADDR: { get_param: [ mgmt_a_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_MGMT_IP_ADDR: { get_param: [ mgmt_b_ips, { get_param: perimeta_instance_index } ] } + $MGMT_NETWORK_PLEN: { get_param: mgmt_net_plen } + $MGMT_NETWORK_DEFAULT_GATEWAY: { get_param: mgmt_net_default_gateway } + + +outputs: + + server_group_used: + description: Server group used for these VMs + value: { get_param: perimeta_param_server_group } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_swmu_b.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_swmu_b.yaml new file mode 100644 index 0000000000..77fb15a9a0 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/perimeta_ha_swmu_b.yaml @@ -0,0 +1,376 @@ +# Heat template which intstantiates a 1+1 HA Perimeta instance with 4 or 5 +# vNICs. +# +# This is designed to be included in a higher level template. +# +# This template puts the Perimeta configuration in place using userdata +# injected via OpenStack's ConfigDrive mechanism. +# +# Host anti-affinity is achieved using different availability zones for +# the Perimeta instance or server group anti-affinity if they are in the +# same availability zone. +# +# Template requires Juno or above and has been tested on Kilo. +# +heat_template_version: 2014-10-16 + +description: > + HOT template to instantiate a Perimeta 1+1 HA instance with 4vNICs as part of a nested template + +parameters: + vnf_id: + type: string + description: VNF ID of this deployment + vm_role: + type: string + description: Role of these VMs + vf_module_id: + type: string + description: Unique ID for this VF Module instance + system_names: + type: comma_delimited_list + description: List of system names of Perimeta instances. Name of a specific instance is indexed by perimeta_instance_index + vm_a_names: + type: comma_delimited_list + description: List of names of Perimeta VM A instances, indexed by perimeta_instance_index + vm_b_names: + type: comma_delimited_list + description: List of names of Perimeta VM A instances, indexed by perimeta_instance_index + perimeta_instance_index: + type: number + description: Index of instance among multiple instances. Use to retrieve correct parameter for this instance when passed all parameters for all instances. + perimeta_image_name: + type: string + description: Glance image for Perimeta instance + constraints: + - custom_constraint: glance.image + perimeta_flavor_name: + type: string + description: Flavor to use for creating VM instances + constraints: + - custom_constraint: nova.flavor + perimeta_keypair: + type: string + description: Keypair to use for accessing this Perimeta instance + constraints: + - custom_constraint: nova.keypair + availability_zone_0: + # Can be commented out along with references if always using a single availability zone + type: string + description: Availability zone for A instances. + availability_zone_1: + # Can be commented out along with references if always using a single availability zone + type: string + description: Availability zone for B instances. May be the same as A instance. + mgmt_net_id: + type: string + description: Management network id + constraints: + - custom_constraint: neutron.network + mgmt_net_plen: + type: string + description: Prefix length of management network + mgmt_net_default_gateway: + type: string + description: IP address of management default gateway + mgmt_vips: + type: comma_delimited_list + description: List of management virtual IP addresses for all instances. + mgmt_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as management IPs of A instances. + mgmt_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as management IPs of B instances. + mgmt_sec_groups: + type: comma_delimited_list + description: List of security groups to add on management interfaces. + ha_net_id: + type: string + description: HA network id + constraints: + - custom_constraint: neutron.network + ha_network_plen: + type: number + constraints: + - range: { min: 0, max: 32 } + description: ha_network_plen must be between 0 and 32 + ha_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as HA IPs of A instances. + ha_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as HA IPs of B instances. + ha_sec_groups: + type: comma_delimited_list + description: List of security groups to add on HA interfaces. + trusted_net_id: + type: string + description: Service network 1 network UUID + constraints: + - custom_constraint: neutron.network + trusted_vips: + type: comma_delimited_list + description: List of service network 1 virtual IP addresses for all instances. + trusted_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as trusted fixed IPs of A instances. + trusted_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as trusted fixed IPs of B instances. + trusted_sec_groups: + type: comma_delimited_list + description: List of security groups to add on trusted interfaces. + untrusted_net_id: + type: string + description: Service network 2 network UUID + constraints: + - custom_constraint: neutron.network + untrusted_vips: + type: comma_delimited_list + description: List of service network 2 virtual IP addresses for all instances. + untrusted_v6_vips: + type: comma_delimited_list + description: List of service network 2 alternate virtual IP addresses for all instances. + untrusted_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted fixed IPs of A instances. + untrusted_a_v6_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted alternate fixed IPs of A instances. + untrusted_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted fixed IPs of B instances. + untrusted_b_v6_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as untrusted alternate fixed IPs of B instances. + untrusted_sec_groups: + type: comma_delimited_list + description: List of security groups to add on untrusted interfaces. + untrusted_num_vlans: + type: number + description: Number of VLANs to connect to on the untrusted/access network + untrusted_vlan_ids: + type: comma_delimited_list + description: List of VLAN IDs to use on the untrusted/access network + untrusted_vlan_networks: + type: comma_delimited_list + description: List of Contrail VLAN networks to use on the untrusted/access network. The order and number of these must match the VLAN ID list. + serv3_net_id: + type: string + description: Service network 3 network UUID + serv3_vips: + type: comma_delimited_list + description: List of service network 3 virtual IP addresses for all instances. + serv3_a_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as serv3 fixed IPs of A instances. + serv3_b_ips: + type: comma_delimited_list + description: List of fixed IP addresses to use as serv3 fixed IPs of B instances. + serv3_sec_groups: + type: comma_delimited_list + description: List of security groups to add on serv3 interfaces. + unused_net_id: + type: string + description: Service network unused port network UUID + perimeta_param_server_group: + type: string + description: Server group to use for these VMs - ignored + perimeta_config: + type: string + description: Orchestration template configuration for instance. + +resources: + + # Perimeta management ports + perimeta_b_mgmt_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_mgmt_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: mgmt_net_id } + fixed_ips: + - ip_address: { get_param: [ mgmt_b_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: mgmt_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ mgmt_vips, { get_param: perimeta_instance_index } ] } + + # Perimeta HA ports + perimeta_b_ha_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_ha_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: ha_net_id } + fixed_ips: + - ip_address: { get_param: [ ha_b_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: ha_sec_groups } + + # Perimeta core/trusted service network ports + # + # Dual stack core network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + perimeta_b_trusted_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_trusted_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: trusted_net_id } + fixed_ips: + - ip_address: { get_param: [ trusted_b_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: trusted_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ trusted_vips, { get_param: perimeta_instance_index } ] } + + # Perimeta access/untrusted service network ports + # + # Dual stack access network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + perimeta_b_untrusted_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_untrusted_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: untrusted_net_id } + fixed_ips: + - ip_address: { get_param: [ untrusted_b_ips, { get_param: perimeta_instance_index } ] } + - ip_address: { get_param: [ untrusted_b_v6_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: untrusted_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + - ip_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + + # Contrail VLAN subinterfaces + perimeta_b_untrusted_0_vlan_ports: + type: OS::Heat::ResourceGroup + properties: + count: { get_param: untrusted_num_vlans } + resource_def: + type: vlan_subinterface_dual.yaml + properties: + subinterface_instance_index: "%index%" + subinterface_name_prefix: + str_replace: + template: $VM_untrusted_port_vlan_ + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + parent_interface: { get_resource: perimeta_b_untrusted_0_port } + mac_address: { get_attr: [ perimeta_b_untrusted_0_port, mac_address ] } + ip_address: { get_param: [ untrusted_b_ips, { get_param: perimeta_instance_index } ] } + ipv6_address: { get_param: [ untrusted_b_v6_ips, { get_param: perimeta_instance_index } ] } + virtual_ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] } + virtual_ipv6_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] } + vlan_ids: { get_param: untrusted_vlan_ids } + vlan_networks: { get_param: untrusted_vlan_networks } + + # Perimeta Rf service network ports (SSC only) + # + # Dual stack access network - if only IPv4 required, comment out second entry + # in fixed_ips and allowed_addrsess_pairs parameters. + perimeta_b_serv3_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_serv3_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network_id: { get_param: serv3_net_id } + fixed_ips: + - ip_address: { get_param: [ serv3_b_ips, { get_param: perimeta_instance_index } ] } + security_groups: { get_param: serv3_sec_groups } + allowed_address_pairs: + - ip_address: { get_param: [ serv3_vips, { get_param: perimeta_instance_index } ] } + + perimeta_b_unused_0_port: + type: OS::Neutron::Port + properties: + name: + str_replace: + template: $VM_unused_port + params: + $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + network: { get_param: unused_net_id } + + # Add any additional service ports here. + + perimeta_b_server_0: + type: OS::Nova::Server + properties: + name: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] } + image: { get_param: perimeta_image_name } + flavor: { get_param: perimeta_flavor_name } + key_name: { get_param: perimeta_keypair } + scheduler_hints: { group: { get_param: perimeta_param_server_group } } + metadata: + 'vnf_id': { get_param: vnf_id } + 'vm_role': + str_replace: + template: $ROLE_b + params: + $ROLE: { get_param: vm_role } + 'vf_module_id': { get_param: vf_module_id } + networks: + - port: { get_resource: perimeta_b_mgmt_0_port } + - port: { get_resource: perimeta_b_ha_0_port } + - port: { get_resource: perimeta_b_trusted_0_port } + - port: { get_resource: perimeta_b_untrusted_0_port } + - port: { get_resource: perimeta_b_serv3_0_port } + - port: { get_resource: perimeta_b_unused_0_port } + availability_zone: { get_param: availability_zone_1 } + config_drive: True + user_data_format: RAW + user_data: + str_replace: + template: | + { + "vnic_assignment": { + "IBG1mgmt": {"mac": "$MGMT_MACADDR"}, + "IPG1": {"mac": "$HA_MACADDR"}, + "RPG1": {"mac": "$TRUSTED_MACADDR"}, + "RPG2": {"mac": "$UNTRUSTED_MACADDR"}, + "RPG3": {"mac": "$SERV3_MACADDR"}, + "RPG4": {"mac": "$SERV4_MACADDR"} + }, + "ip_ha_local": "$LOCAL_HA_IP_ADDR", + "ip_ha_remote": "$REMOTE_HA_IP_ADDR", + "ip_ha_plen": "$HA_NETWORK_PLEN" + //"ip_mgmt_local": "$LOCAL_MGMT_IP_ADDR", + //"ip_mgmt_remote": "$REMOTE_MGMT_IP_ADDR", + //"ip_mgmt_plen": "$MGMT_NETWORK_PLEN", + //"ip_mgmt_gway": "$MGMT_NETWORK_DEFAULT_GATEWAY" + } + + params: + $MGMT_MACADDR: { get_attr: [perimeta_b_mgmt_0_port, mac_address] } + $HA_MACADDR: { get_attr: [perimeta_b_ha_0_port, mac_address] } + $TRUSTED_MACADDR: { get_attr: [perimeta_b_trusted_0_port, mac_address] } + $UNTRUSTED_MACADDR: { get_attr: [perimeta_b_untrusted_0_port, mac_address] } + $SERV3_MACADDR: { get_attr: [perimeta_b_serv3_0_port, mac_address] } + $SERV4_MACADDR: { get_attr: [perimeta_b_unused_0_port, mac_address] } + $LOCAL_HA_IP_ADDR: { get_param: [ ha_b_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_HA_IP_ADDR: { get_param: [ ha_a_ips, { get_param: perimeta_instance_index } ] } + $HA_NETWORK_PLEN: { get_param: ha_network_plen } + $LOCAL_MGMT_IP_ADDR: { get_param: [ mgmt_b_ips, { get_param: perimeta_instance_index } ] } + $REMOTE_MGMT_IP_ADDR: { get_param: [ mgmt_a_ips, { get_param: perimeta_instance_index } ] } + $MGMT_NETWORK_PLEN: { get_param: mgmt_net_plen } + $MGMT_NETWORK_DEFAULT_GATEWAY: { get_param: mgmt_net_default_gateway } + +outputs: + + server_group_used: + description: Server group used for these VMs + value: { get_param: perimeta_param_server_group } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/ssc_a_template.json b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/ssc_a_template.json new file mode 100644 index 0000000000..7e82527836 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/ssc_a_template.json @@ -0,0 +1,34 @@ +{ + // The vnic_assignment parameter is ignored by Perimeta releases prior to + // V4.0.00. + "vnic_assignment": { + "IBG1mgmt": {"mac": "$MGMT_MACADDR"}, + "IPG1": {"mac": "$HA_MACADDR"}, + "RPG1": {"mac": "$TRUSTED_MACADDR"}, + "RPG2": {"mac": "$UNTRUSTED_MACADDR"}, + "RPG3": {"mac": "$SERV3_MACADDR"}, + "RPG4": {"mac": "$SERV4_MACADDR"} + }, + "autocommission":"SSC", + "autostart":"true", + "autopartner":"", + "ip_mgmt_global": "$VIRT_MGMT_IP_ADDR", + "ip_mgmt_local": "$LOCAL_MGMT_IP_ADDR", + "ip_mgmt_remote": "$REMOTE_MGMT_IP_ADDR", + "ip_mgmt_plen": "$MGMT_NETWORK_PLEN", + "ip_mgmt_gway": "$MGMT_NETWORK_DEFAULT_GATEWAY", + "ip_ha_local": "$LOCAL_HA_IP_ADDR", + "ip_ha_remote": "$REMOTE_HA_IP_ADDR", + "ip_ha_plen": "$HA_NETWORK_PLEN", + "system_name": "$SYSTEM_NAME", + "node_local": "$VM_NAME_A", + "node_remote": "$VM_NAME_B", + "ntp_servers": "$NTP_SERVER_IP_ADDRS", + "perimeta": { + "dpdk_opt_enable":true, + "vlans_opt_enable":true + } + + // $COMPLETION_PARAMS +} + diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/vlan_subinterface_dual.yaml b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/vlan_subinterface_dual.yaml new file mode 100644 index 0000000000..5d0a72920c --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/resources/mock/services/heattotosca/subInterfaceToInterfaceConnection/vTSBC_AIC/inputfiles/vlan_subinterface_dual.yaml @@ -0,0 +1,98 @@ +heat_template_version: 2014-10-16 + +description: > + HOT template to instantiate a single Contrail VLAN sub-interface with associated instance IP addresses and allowed address pairs + +parameters: + subinterface_instance_index: + type: number + description: Index of instance among multiple instances. Use to retrieve correct parameter for this instance when passed all parameters for all instances. + subinterface_name_prefix: + type: string + description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource + parent_interface: + type: string + description: Parent Contrail interface + mac_address: + type: string + description: MAC address to use for subinterface + ip_address: + type: string + description: IPv4 address associated with subinterfaces + ipv6_address: + type: string + description: IPv6 address associated with subinterfaces + virtual_ip_address: + type: string + description: virtual IPv4 address associated with subinterfaces + virtual_ipv6_address: + type: string + description: virtual IPv6 address associated with subinterfaces + vlan_ids: + type: comma_delimited_list + description: List of VLAN IDs to use for subinterfaces + vlan_networks: + type: comma_delimited_list + description: List of Contrail VLAN networks to use for the subinterfaces. The order and number of these must match the VLAN ID list + +resources: + contrail_vmi_subinterface: + type: OS::ContrailV2::VirtualMachineInterface + properties: + name: + str_replace: + template: $NAME$VLAN + params: + $NAME: { get_param: subinterface_name_prefix } + $VLAN: { get_param: [ vlan_ids, { get_param: subinterface_instance_index } ] } + virtual_machine_interface_properties: + { + virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: [ vlan_ids, { get_param: subinterface_instance_index } ] } + } + virtual_machine_interface_mac_addresses: + { + virtual_machine_interface_mac_addresses_mac_address: [{ get_param: mac_address }], + } + virtual_machine_interface_allowed_address_pairs: + { + virtual_machine_interface_allowed_address_pairs_allowed_address_pair: [ + { + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address }, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip: + { + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ip_address }, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 32 + } + }, + { + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: mac_address }, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip: + { + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: virtual_ipv6_address }, + virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 128 + } + } + ] + } + virtual_network_refs: [{ get_param: [ vlan_networks, { get_param: subinterface_instance_index } ] }] + virtual_machine_interface_refs: [{ get_param: parent_interface }] + + contrail_vmi_ip: + type: OS::ContrailV2::InstanceIp + depends_on: [ contrail_vmi_subinterface ] + properties: + virtual_machine_interface_refs: [{ get_resource: contrail_vmi_subinterface }] + virtual_network_refs: [{ get_param: [ vlan_networks, { get_param: subinterface_instance_index } ] }] + instance_ip_address: { get_param: ip_address } + instance_ip_family: v4 + + contrail_vmi_ipv6: + type: OS::ContrailV2::InstanceIp + depends_on: [ contrail_vmi_subinterface ] + properties: + virtual_machine_interface_refs: [{ get_resource: contrail_vmi_subinterface }] + virtual_network_refs: [{ get_param: [ vlan_networks, { get_param: subinterface_instance_index } ] }] + instance_ip_address: { get_param: ipv6_address } + instance_ip_family: v6 |