--- /dev/null
+heat_template_version: 2013-05-23
+
+description: Simple template to deploy a single compute instance
+
+parameters:
+ vnf_id:
+ description: Unique ID for this VNF
+ type: string
+ vf_module_id:
+ description: Unique ID for this VF module
+ type: string
+ vnf_name:
+ type: string
+ description: Unique name for this VNF instance
+ ex_image_name:
+ type: string
+ label: Image name or ID
+ description: Image to be used for compute instance
+ ex_flavor_name:
+ type: string
+ label: Flavor
+ description: Type of instance (flavor) to be used
+ ex_key:
+ type: string
+ label: key pair
+ description: Name of the key apir the nova server will use
+ ex_vm_name:
+ type: string
+ description: Name of the VM
+ ex1_vm_names:
+ type: comma_delimited_list
+ description: Name of the VM
+ ex1_image_name:
+ type: string
+ label: Image name or ID
+ description: Image to be used for compute instance
+ ex1_flavor_name:
+ type: string
+ label: Flavor
+ description: Type of instance (flavor) to be used
+ ex1_key:
+ type: string
+ label: key pair
+ description: Name of the key apir the nova server will use
+ int_network_net_id:
+ type: string
+ label: Network name
+ description: Name of the network the nova server will connect to
+ ex1_server_index:
+ type: number
+ label: server index
+ description: Index of server
+ constraint:
+ - range: { min: 1, max: 100 }
+ availability_zone_0:
+ type: string
+ description: availabilityzone name
+
+
+resources:
+ ex_software_config_0:
+ type: OS::Heat::SoftwareConfig
+ properties:
+ group: ungrouped
+ config:
+ params:
+ $stack_name: { get_param: 'OS::stack_name' }
+
+ ex_nova_serverGroup:
+ type: OS::Nova::ServerGroup
+ properties:
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+ vnf_name: { get_param: vnf_name }
+ availability_zones: { list_join: [',', [ { get_param: availability_zone_0 }, { get_param: availability_zone_1 } ] ] }
+
+ ex_nova_server_0:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: ex_vm_name }
+ metadata:
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+ vnf_name: { get_param: vnf_name }
+ image: { get_param: ex_image_name }
+ flavor: { get_param: ex_flavor_name }
+ key_name: { get_param: ex_key }
+ networks:
+ - network: { get_param: int_network_net_id }
+ user_data:
+ get_resource: ex_software_config_0
+
+ ex1_nova_server_0:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [ ex1_vm_names, 0 ] }
+ metadata:
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+ vnf_name: { get_param: vnf_name }
+ image: { get_param: ex1_image_name}
+ flavor: { get_param: ex1_flavor_name }
+ key_name: { get_param: ex1_key }
+
+ ex1_nova_server_1:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [ ex1_vm_names, { get_param: ex1_server_index } ] }
+ metadata:
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+ vnf_name: { get_param: vnf_name }
+ image: { get_param: ex1_image_name}
+ flavor: { get_param: ex1_flavor_name }
+ key_name: { get_param: ex1_key }
--- /dev/null
+# -*- coding: utf8 -*-
+# ============LICENSE_START=======================================================
+# org.onap.vvp/validation-scripts
+# ===================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ===================================================================
+#
+# Unless otherwise specified, all software contained herein is licensed
+# under the Apache License, Version 2.0 (the “License”);
+# you may not use this software except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+#
+# Unless otherwise specified, all documentation contained herein is licensed
+# under the Creative Commons License, Attribution 4.0 Intl. (the “License”);
+# you may not use this documentation except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://creativecommons.org/licenses/by/4.0/
+#
+# Unless required by applicable law or agreed to in writing, documentation
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# ============LICENSE_END============================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+---
+heat_template_version: 2013-05-23
+
+description: Simple template to deploy a single compute instance
+
+parameters:
+ vnf_id:
+ description: Unique ID for this VNF
+ type: string
+ vf_module_id:
+ description: Unique ID for this VF module
+ type: string
+ vnf_name:
+ type: string
+ description: Unique name for this VNF instance
+ ex_image_name:
+ type: string
+ label: Image name or ID
+ description: Image to be used for compute instance
+ ex_key:
+ type: string
+ label: key pair
+ description: Name of the key apir the nova server will use
+ ex_vm_name:
+ type: string
+ description: Name of the VM
+ ex1_vm_names:
+ type: comma_delimited_list
+ description: Name of the VM
+ ex1_image_name:
+ type: string
+ label: Image name or ID
+ description: Image to be used for compute instance
+ ex1_flavor_name:
+ type: string
+ label: Flavor
+ description: Type of instance (flavor) to be used
+ ex1_key:
+ type: string
+ label: key pair
+ description: Name of the key apir the nova server will use
+ ex1_server_index:
+ type: number
+ label: server index
+ description: Index of server
+ constraint:
+ - range: { min: 1, max: 100 }
+
+resources:
+ ex_software_config_0:
+ type: OS::Heat::SoftwareConfig
+ properties:
+ group: ungrouped
+ config:
+ params:
+ $stack_name: { get_param: 'OS::stack_name' }
+
+ ex_nova_server_0:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: ex_vm_name }
+ metadata:
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+ vnf_name: { get_param: vnf_name }
+ image: { get_param: ex_image_name }
+ flavor: { get_param: ex_flavor_name }
+ key_name: { get_param: ex_key }
+ user_data:
+ get_resource: ex_software_config_0
+
+ ex1_nova_server_0:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [ ex1_vm_names, 0 ] }
+ metadata:
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+ vnf_name: { get_param: vnf_name }
+ project_id: { get_param: "OS::project_id" }
+ image: { get_param: ex1_image_name }
+ flavor: { get_param: ex1_flavor_name }
+ key_name: { get_param: ex1_key }
+
+ ex1_nova_server_1:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [ ex1_vm_names, { get_param: ex1_server_index } ] }
+ metadata:
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+ vnf_name: { get_param: vnf_name }
+ image: { get_param: ex1_image_name}
+ flavor: { get_param: ex1_flavor_name }
+ key_name: { get_param: ex1_key }
--- /dev/null
+heat_template_version: 2013-05-23
+
+description: Simple template to deploy a single compute instance
+
+parameters:
+ vnf_id:
+ description: Unique ID for this VNF
+ type: string
+ vf_module_id:
+ description: Unique ID for this VF module
+ type: string
+ vnf_name:
+ type: string
+ description: Unique name for this VNF instance
+ ex_image_name:
+ type: string
+ label: Image name or ID
+ description: Image to be used for compute instance
+ ex_flavor_name:
+ type: string
+ label: Flavor
+ description: Type of instance (flavor) to be used
+ ex_key:
+ type: string
+ label: key pair
+ description: Name of the key apir the nova server will use
+ ex_vm_name:
+ type: string
+ description: Name of the VM
+ ex1_vm_names:
+ type: comma_delimited_list
+ description: Name of the VM
+ ex1_image_name:
+ type: string
+ label: Image name or ID
+ description: Image to be used for compute instance
+ ex1_flavor_name:
+ type: string
+ label: Flavor
+ description: Type of instance (flavor) to be used
+ ex1_key:
+ type: string
+ label: key pair
+ description: Name of the key apir the nova server will use
+ int_network_net_id:
+ type: string
+ label: Network name
+ description: Name of the network the nova server will connect to
+ ex1_server_index:
+ type: number
+ label: server index
+ description: Index of server
+ constraint:
+ - range: { min: 1, max: 100 }
+ availability_zone_0:
+ type: string
+ description: availabilityzone name
+ availability_zone_1:
+ type: string
+ description: availabilityzone name
+ availability_zone_2:
+ type: string
+ description: availabilityzone name
+
+resources:
+ ex_software_config_0:
+ type: OS::Heat::SoftwareConfig
+ properties:
+ group: ungrouped
+ config:
+ params:
+ $stack_name: { get_param: 'OS::stack_name' }
+
+ ex_nova_serverGroup:
+ type: OS::Nova::ServerGroup
+ properties:
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+ vnf_name: { get_param: vnf_name }
+ availability_zones: { list_join: [',', [ { get_param: availability_zone_0 }, { get_param: availability_zone_2 } ] ] }
+
+ ex_nova_server_0:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: ex_vm_name }
+ metadata:
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+ vnf_name: { get_param: vnf_name }
+ image: { get_param: ex_image_name }
+ flavor: { get_param: ex_flavor_name }
+ key_name: { get_param: ex_key }
+ networks:
+ - network: { get_param: int_network_net_id }
+ user_data:
+ get_resource: ex_software_config_0
+
+ ex1_nova_server_0:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [ ex1_vm_names, 0 ] }
+ metadata:
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+ vnf_name: { get_param: vnf_name }
+ image: { get_param: ex1_image_name}
+ flavor: { get_param: ex1_flavor_name }
+ key_name: { get_param: ex1_key }
+
+ ex1_nova_server_1:
+ type: OS::Nova::Server
+ properties:
+ name: { get_param: [ ex1_vm_names, { get_param: ex1_server_index } ] }
+ metadata:
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+ vnf_name: { get_param: vnf_name }
+ image: { get_param: ex1_image_name}
+ flavor: { get_param: ex1_flavor_name }
+ key_name: { get_param: ex1_key }
ex1_flavor_name:
type: string
label: Flavor
- description: Type of instance (flavor) to be used
+ description: Type of instance (flavor) to be used
ex1_key:
type: string
label: key pair
description: Index of server
constraint:
- range: { min: 1, max: 100 }
+ availability_zone_0:
+ type: string
+ description: availabilityzone name
+ availability_zone_1:
+ type: string
+ description: availabilityzone name
resources:
ex_software_config_0:
params:
$stack_name: { get_param: 'OS::stack_name' }
+ ex_nova_serverGroup:
+ type: OS::Nova::ServerGroup
+ properties:
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+ vnf_name: { get_param: vnf_name }
+ availability_zones: { list_join: [',', [ { get_param: availability_zone_0 }, { get_param: availability_zone_1 } ] ] }
+
ex_nova_server_0:
type: OS::Nova::Server
properties:
vnf_name: { get_param: vnf_name }
image: { get_param: ex1_image_name}
flavor: { get_param: ex1_flavor_name }
- key_name: { get_param: ex1_key }
\ No newline at end of file
+ key_name: { get_param: ex1_key }
--- /dev/null
+heat_template_version: 2015-04-30
+
+description: Heat template description
+
+parameters:
+
+ vnf_id:
+ type: string
+ description: Unique ID for this VNF instance
+
+ vf_module_id:
+ type: string
+ description: Unique ID for this VF module
+
+ vnf_name:
+ type: string
+ description: Unique name for this VNF instance
+
+ admin_names:
+ type: comma_delimited_list
+ description: Names attribute for the VMs
+
+ availability_zone_0:
+ type: string
+ description: availability zone to be used
+
+ admin_flavor_name:
+ type: string
+ description: flavor to be used to create this vm must be one of the following flavors
+
+ admin_volume_ids:
+ type: json
+ description: Unique IDs for volumes
+
+
+resources:
+
+ admin_server_0:
+ type: OS::Nova::Server
+ properties:
+ availability_zone: { get_param: availability_zone_0 }
+ name: { get_param: [admin2_names, 0] }
+ block_device_mapping: [{ device_name: "vda", volume_id: { get_param : [admin_volume_ids, 0] }, delete_on_termination : "false" }]
+ flavor: { get_param: admin2_flavor_name}
+ metadata:
+ vnf_name: { get_param: vnf_name }
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+
+ admin_server_1:
+ type: OS::Nova::Server
+ properties:
+ availability_zone: { get_param: availability_zone_0 }
+ name: { get_param: [admin_names, 1] }
+ block_device_mapping: [{ device_name: "vda", volume_id : { get_param : [admin_volume_ids, 1] }, delete_on_termination : "false" }]
+ flavor: { get_param: admin_flavor_name}
+ metadata:
+ vnf_name: { get_param: vnf_name }
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
--- /dev/null
+heat_template_version: 2015-04-30
+
+description: Heat template description
+
+parameters:
+
+ vnf_id:
+ type: string
+ description: Unique ID for this VNF instance
+
+ vf_module_id:
+ type: string
+ description: Unique ID for this VF module
+
+ vnf_name:
+ type: string
+ description: Unique name for this VNF instance
+
+ admin_names:
+ type: comma_delimited_list
+ description: Names attribute for the VMs
+
+ availability_zone_0:
+ type: string
+ description: availability zone to be used
+
+ admin_flavor_name:
+ type: string
+ description: flavor to be used to create this vm must be one of the following flavors
+
+ admin_volume_ids:
+ type: json
+ description: Unique IDs for volumes
+
+
+
+resources:
+
+ admin_server_0:
+ type: OS::Nova::Server
+ properties:
+ availability_zone: { get_param: availability_zone_0 }
+ name: { get_param: [admin_names, 0] }
+ block_device_mapping: [{ device_name: "vda", volume_id: { get_param : [admin2_volume_ids, 0] }, delete_on_termination : "false" }]
+ flavor: { get_param: admin_flavor_name}
+ metadata:
+ vnf_name: { get_param: vnf_name }
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+
+ admin_server_1:
+ type: OS::Nova::Server
+ properties:
+ availability_zone: { get_param: availability_zone_0 }
+ name: { get_param: [admin_names, 1] }
+ block_device_mapping: [{ device_name: "vda", volume_id : { get_param : [admin_volume_ids, 1] }, delete_on_termination : "false" }]
+ flavor: { get_param: admin_flavor_name}
+ metadata:
+ vnf_name: { get_param: vnf_name }
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
--- /dev/null
+heat_template_version: 2015-04-30
+
+description: Heat template using json string for volumes
+
+parameters:
+
+ vnf_id:
+ type: string
+ description: Unique ID for this VNF instance
+
+ vf_module_id:
+ type: string
+ description: Unique ID for this VF module
+
+ vnf_name:
+ type: string
+ description: Unique name for this VNF instance
+
+ admin_names:
+ type: comma_delimited_list
+ description: Names attribute for the VMs
+
+ availability_zone_0:
+ type: string
+ description: availability zone to be used
+
+ admin_flavor_name:
+ type: string
+ description: flavor to be used to create this vm must be one of the following flavors
+
+ admin_volume_ids:
+ type: json
+ description: Unique IDs for volumes
+
+
+resources:
+
+ admin_server_0:
+ type: OS::Nova::Server
+ properties:
+ availability_zone: { get_param: availability_zone_0 }
+ name: { get_param: [admin_names, 0] }
+ flavor: { get_param: admin_flavor_name}
+ metadata:
+ vnf_name: { get_param: vnf_name }
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+
+ admin_server_1:
+ type: OS::Nova::Server
+ properties:
+ availability_zone: { get_param: availability_zone_0 }
+ name: { get_param: [admin_names, 1] }
+ flavor: { get_param: admin_flavor_name}
+ metadata:
+ vnf_name: { get_param: vnf_name }
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+
+ admin_volume_attachment_0:
+ type: OS::Cinder::VolumeAttachment
+ properties:
+ volume_id: {get_param: [admin_volume_ids, 0]}
+ instance_uuid: {get_resource: admin_server_0}
+
+ admin_volume_attachment_1:
+ type: OS::Cinder::VolumeAttachment
+ properties:
+ volume_id: {get_param: [admin2_volume_ids, 1]}
+ instance_uuid: {get_resource: admin_server_1}
--- /dev/null
+heat_template_version: 2015-04-30
+
+description: Heat template using json string for volumes
+
+parameters:
+
+ vnf_id:
+ type: string
+ description: Unique ID for this VNF instance
+
+ vf_module_id:
+ type: string
+ description: Unique ID for this VF module
+
+ vnf_name:
+ type: string
+ description: Unique name for this VNF instance
+
+ admin_names:
+ type: comma_delimited_list
+ description: Names attribute for the VMs
+
+ availability_zone_0:
+ type: string
+ description: availability zone to be used
+
+ admin_flavor_name:
+ type: string
+ description: flavor to be used to create this vm must be one of the following flavors
+
+ admin_volume_ids:
+ type: json
+ description: Unique IDs for volumes
+
+
+resources:
+
+ admin_server_0:
+ type: OS::Nova::Server
+ properties:
+ availability_zone: { get_param: availability_zone_0 }
+ name: { get_param: [admin_names, 0] }
+ flavor: { get_param: admin_flavor_name}
+ metadata:
+ vnf_name: { get_param: vnf_name }
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+
+ admin_server_1:
+ type: OS::Nova::Server
+ properties:
+ availability_zone: { get_param: availability_zone_0 }
+ name: { get_param: [admin_names, 1] }
+ flavor: { get_param: admin_flavor_name}
+ metadata:
+ vnf_name: { get_param: vnf_name }
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+
+ admin_volume_attachment_0:
+ type: OS::Cinder::VolumeAttachment
+ properties:
+ volume_id: {get_param: [admin_volume_ids, 0]}
+ instance_uuid: {get_resource: admin_server_0}
+
+ admin_volume_attachment_1:
+ type: OS::Cinder::VolumeAttachment
+ properties:
+ volume_id: {get_param: [admin_volume_ids, 1]}
+ instance_uuid: {get_resource: admin_server_1}
--- /dev/null
+heat_template_version: 2015-04-30
+
+description: Heat template description
+
+parameters:
+
+ vnf_id:
+ type: string
+ description: Unique ID for this VNF instance
+
+ vf_module_id:
+ type: string
+ description: Unique ID for this VF module
+
+ vnf_name:
+ type: string
+ description: Unique name for this VNF instance
+
+ admin_names:
+ type: comma_delimited_list
+ description: Names attribute for the VMs
+
+ availability_zone_0:
+ type: string
+ description: availability zone to be used
+
+ admin_flavor_name:
+ type: string
+ description: flavor to be used to create this vm must be one of the following flavors
+
+ admin_volume_ids:
+ type: json
+ description: Unique IDs for volumes
+
+resources:
+
+ admin_server_0:
+ type: OS::Nova::Server
+ properties:
+ availability_zone: { get_param: availability_zone_0 }
+ name: { get_param: [admin_names, 0] }
+ block_device_mapping: [{ device_name: "vda", volume_id: { get_param : [admin_volume_ids, 0] }, delete_on_termination : "false" }]
+ flavor: { get_param: admin_flavor_name}
+ metadata:
+ vnf_name: { get_param: vnf_name }
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
+
+ admin_server_1:
+ type: OS::Nova::Server
+ properties:
+ availability_zone: { get_param: availability_zone_0 }
+ name: { get_param: [admin_names, 1] }
+ block_device_mapping: [{ device_name: "vda", volume_id : { get_param : [admin_volume_ids, 1] }, delete_on_termination : "false" }]
+ flavor: { get_param: admin_flavor_name}
+ metadata:
+ vnf_name: { get_param: vnf_name }
+ vnf_id: { get_param: vnf_id }
+ vf_module_id: { get_param: vf_module_id }
v3.get('get_resource'))
if not volume_id:
continue
- volume_id = volume_id.lower()
+ if isinstance(volume_id, list):
+ volume_id = volume_id[0].lower()
+ else:
+ volume_id = volume_id.lower()
if vm_type+"_" not in volume_id:
invalid_volumes.append(volume_id)
properties['volume_id'].get('get_resource'))
if not volume_id:
continue
- volume_id = volume_id.lower()
+ if isinstance(volume_id, list):
+ volume_id = volume_id[0].lower()
+ else:
+ volume_id = volume_id.lower()
# do not test the case when the instance_uuid and
# volume_id are not defined
elif isinstance(item, str):
params.append(item)
continue
+ elif k == 'list_join':
+ for item in (v if isinstance(v, list) else [v]):
+ if isinstance(item, list):
+ for d in item:
+ params.extend(find_all_get_param_in_yml(d))
+ continue
if isinstance(v, dict):
params.extend(find_all_get_param_in_yml(v))
elif isinstance(v, list):