From 936415d85d9d7471d7061b81f5f0d17164c9c795 Mon Sep 17 00:00:00 2001 From: zhihui wu Date: Wed, 17 Jan 2018 16:09:08 +0800 Subject: Add the creation/deletion of image in the pipeline - Specify image download and upload details JIRA: QTIP-291 Change-Id: I9f4e0d179f7d907b448b716274348fb6c71dd3bc Signed-off-by: zhihui wu --- .../ansible_roles/openstack/defaults/main.yml | 7 ++- .../ansible_roles/openstack/tasks/create_image.yml | 32 ++++++++++ .../ansible_roles/openstack/tasks/create_stack.yml | 24 ++++++++ .../ansible_roles/openstack/tasks/delete_image.yml | 17 ++++++ .../ansible_roles/openstack/tasks/delete_stack.yml | 16 +++++ resources/ansible_roles/openstack/tasks/main.yml | 16 +---- .../openstack/templates/heat_template.yml | 70 ---------------------- .../ansible_roles/qtip-generator/defaults/main.yml | 3 + .../qtip-generator/files/compute/heat_template.yml | 70 ++++++++++++++++++++++ .../qtip-generator/files/compute/setup.yml | 8 +++ .../qtip-generator/files/compute/teardown.yml | 10 ++++ 11 files changed, 188 insertions(+), 85 deletions(-) create mode 100644 resources/ansible_roles/openstack/tasks/create_image.yml create mode 100644 resources/ansible_roles/openstack/tasks/create_stack.yml create mode 100644 resources/ansible_roles/openstack/tasks/delete_image.yml create mode 100644 resources/ansible_roles/openstack/tasks/delete_stack.yml delete mode 100644 resources/ansible_roles/openstack/templates/heat_template.yml create mode 100644 resources/ansible_roles/qtip-generator/files/compute/heat_template.yml diff --git a/resources/ansible_roles/openstack/defaults/main.yml b/resources/ansible_roles/openstack/defaults/main.yml index 3b83d6c0..19af96b4 100644 --- a/resources/ansible_roles/openstack/defaults/main.yml +++ b/resources/ansible_roles/openstack/defaults/main.yml @@ -11,7 +11,10 @@ stack_name: qtip_stack image_name: qtip_image -flavor_name: m1.large +flavor_name: qtip_flavor net_name: qtip_net subnet_name: qtip_subnet -instance_name: qtip_vm \ No newline at end of file +inst_name: qtip +image_url: https://cloud-images.ubuntu.com/releases/16.04/release/ubuntu-16.04-server-cloudimg-amd64-disk1.img +checksum: 9cb8ed487ad8fbc8b7d082968915c4fd +download_dest: /tmp/qtip/images \ No newline at end of file diff --git a/resources/ansible_roles/openstack/tasks/create_image.yml b/resources/ansible_roles/openstack/tasks/create_image.yml new file mode 100644 index 00000000..b67595ce --- /dev/null +++ b/resources/ansible_roles/openstack/tasks/create_image.yml @@ -0,0 +1,32 @@ +############################################################################## +# Copyright (c) 2018 ZTE Corporation and others. +# taseer94@gmail.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +--- + +- name: create directories for image + file: + path: "{{ download_dest }}" + state: directory + +- name: download image as qtip image + get_url: + url: "{{ image_url }}" + dest: "{{ download_dest }}/{{ image_name }}.img" + checksum: "md5:{{ checksum }}" + when: image_url | search("https://") + +- name: upload qtip image + os_image: + name: "{{ image_name }}" + container_format: bare + disk_format: qcow2 + state: present + endpoint_type: admin + filename: "{{ download_dest }}/{{ image_name }}.img" + diff --git a/resources/ansible_roles/openstack/tasks/create_stack.yml b/resources/ansible_roles/openstack/tasks/create_stack.yml new file mode 100644 index 00000000..33e8f148 --- /dev/null +++ b/resources/ansible_roles/openstack/tasks/create_stack.yml @@ -0,0 +1,24 @@ +############################################################################## +# Copyright (c) 2017 ZTE Corporation and others. +# taseer94@gmail.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +--- + +- name: create qtip stack + os_stack: + name: "{{ stack_name }}" + state: present + template: ../template/heat_template.yml + endpoint_type: admin + parameters: + image_name: "{{ image_name }}" + flavor_name: "{{ flavor_name }}" + net_name: "{{ net_name }}" + subnet_name: "{{ subnet_name }}" + instance_name: "{{ inst_name }}" + timeout: 600 diff --git a/resources/ansible_roles/openstack/tasks/delete_image.yml b/resources/ansible_roles/openstack/tasks/delete_image.yml new file mode 100644 index 00000000..46653080 --- /dev/null +++ b/resources/ansible_roles/openstack/tasks/delete_image.yml @@ -0,0 +1,17 @@ +############################################################################## +# Copyright (c) 2018 ZTE Corporation and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +--- + +- name: delete qtip image + os_image: + name: "{{ image_name }}" + state: absent + endpoint_type: admin + diff --git a/resources/ansible_roles/openstack/tasks/delete_stack.yml b/resources/ansible_roles/openstack/tasks/delete_stack.yml new file mode 100644 index 00000000..63739345 --- /dev/null +++ b/resources/ansible_roles/openstack/tasks/delete_stack.yml @@ -0,0 +1,16 @@ +############################################################################## +# Copyright (c) 2018 ZTE Corporation and others. +# wu.zhihui1@zte.com.cn +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +--- + +- name: cleanup qtip stack + os_stack: + name: "{{ stack_name }}" + state: absent + endpoint_type: admin diff --git a/resources/ansible_roles/openstack/tasks/main.yml b/resources/ansible_roles/openstack/tasks/main.yml index f4d3d18c..0b84923e 100644 --- a/resources/ansible_roles/openstack/tasks/main.yml +++ b/resources/ansible_roles/openstack/tasks/main.yml @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2017 ZTE Corporation and others. -# taseer94@gmail.com +# Copyright (c) 2018 ZTE Corporation and others. +# # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 # which accompanies this distribution, and is available at @@ -9,14 +9,4 @@ --- -- name: create qtip stack - os_stack: - name: "{{ stack_name }}" - state: present - template: heat_template.yml - parameters: - image_name: "{{ image_name }}" - flavor_name: "{{ flavor_name }}" - net_name: "{{ net_name }}" - subnet_name: "{{ subnet_name }}" - instance_name: "{{ inst_name }}" +- include_tasks: "{{ tasks }}.yml" diff --git a/resources/ansible_roles/openstack/templates/heat_template.yml b/resources/ansible_roles/openstack/templates/heat_template.yml deleted file mode 100644 index ed5a3ab7..00000000 --- a/resources/ansible_roles/openstack/templates/heat_template.yml +++ /dev/null @@ -1,70 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation and others. -# taseer94@gmail.com -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - ---- - -heat_template_version: 2015-04-30 - -description: Simple template to deploy a single compute instance - -parameters: - image_name: - type: string - label: Image ID - description: Image to be used for compute instance - default: Ubuntu 16.04 x86_64 - flavor_name: - type: string - label: Instance Type - description: Type of instance (flavor) to be used - default: m1.large - net_name: - type: string - label: Test network name - description: The name of the stack's network - default: qtip_net - subnet_name: - type: string - label: Test subnet name - description: The name of the stack's subnet - default: qtip_subnet - instance_name: - type: string - label: Test VM name - description: The name of the spawned vm - default: qtip_vm - -resources: - private_net: - type: OS::Neutron::Net - properties: - name: { get_param: net_name } - - private_subnet: - type: OS::Neutron::Subnet - properties: - name: { get_param: subnet_name } - network_id: { get_resource: private_net } - cidr: 10.0.0.0/24 - - server1_port: - type: OS::Neutron::Port - properties: - network_id: { get_resource: private_net } - fixed_ips: - - subnet_id: { get_resource: private_subnet } - - my_instance: - type: OS::Nova::Server - properties: - name: { get_param: inst_name } - image: { get_param: image_name } - flavor: { get_param: flavor_name } - networks: - - port: { get_resource: server1_port } diff --git a/resources/ansible_roles/qtip-generator/defaults/main.yml b/resources/ansible_roles/qtip-generator/defaults/main.yml index 344feb54..b7616486 100644 --- a/resources/ansible_roles/qtip-generator/defaults/main.yml +++ b/resources/ansible_roles/qtip-generator/defaults/main.yml @@ -22,3 +22,6 @@ project_template: 'compute' qtip_package: ../../.. qtip_cache: .qtip-cache cwd: . + +# TODO(zhihui) temporarily hardcode +sut_type: vnf \ No newline at end of file diff --git a/resources/ansible_roles/qtip-generator/files/compute/heat_template.yml b/resources/ansible_roles/qtip-generator/files/compute/heat_template.yml new file mode 100644 index 00000000..d476c8f5 --- /dev/null +++ b/resources/ansible_roles/qtip-generator/files/compute/heat_template.yml @@ -0,0 +1,70 @@ +############################################################################## +# Copyright (c) 2017 ZTE Corporation and others. +# taseer94@gmail.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +--- + +heat_template_version: 2015-04-30 + +description: Simple template to deploy a single compute instance + +parameters: + image_name: + type: string + label: Image ID + description: Image to be used for compute instance + default: Ubuntu 16.04 x86_64 + flavor_name: + type: string + label: Instance Type + description: Type of instance (flavor) to be used + default: m1.large + net_name: + type: string + label: Test network name + description: The name of the stack's network + default: qtip_net + subnet_name: + type: string + label: Test subnet name + description: The name of the stack's subnet + default: qtip_subnet + instance_name: + type: string + label: Test VM name + description: The name of the spawned vm + default: qtip_vm + +resources: + private_net: + type: OS::Neutron::Net + properties: + name: { get_param: net_name } + + private_subnet: + type: OS::Neutron::Subnet + properties: + name: { get_param: subnet_name } + network_id: { get_resource: private_net } + cidr: 10.0.0.0/24 + + server1_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + + my_instance: + type: OS::Nova::Server + properties: + name: { get_param: instance_name } + image: { get_param: image_name } + flavor: { get_param: flavor_name } + networks: + - port: { get_resource: server1_port } diff --git a/resources/ansible_roles/qtip-generator/files/compute/setup.yml b/resources/ansible_roles/qtip-generator/files/compute/setup.yml index f5920c1f..d7f2b875 100644 --- a/resources/ansible_roles/qtip-generator/files/compute/setup.yml +++ b/resources/ansible_roles/qtip-generator/files/compute/setup.yml @@ -10,6 +10,14 @@ # Prepare connection to SUT (System Under Test) --- + +{% if sut_type == 'vnf' %} +- hosts: localhost + gather_facts: no + roles: + - { role: openstack, tasks: create_image } +{% endif %} + {% if installer_type == 'manual' %} - hosts: localhost gather_facts: no diff --git a/resources/ansible_roles/qtip-generator/files/compute/teardown.yml b/resources/ansible_roles/qtip-generator/files/compute/teardown.yml index dc659930..84d9c8c1 100644 --- a/resources/ansible_roles/qtip-generator/files/compute/teardown.yml +++ b/resources/ansible_roles/qtip-generator/files/compute/teardown.yml @@ -7,8 +7,18 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +{% if sut_type == 'vnf' %} +- hosts: localhost + gather_facts: no + roles: + - { role: openstack, tasks: delete_image } +{% endif %} + - hosts: SUT roles: # teardown environment - { role: qtip, tasks: teardown } + + + -- cgit 1.2.3-korg