From d8b44c78aba070616aaf7412881ec52c445b291c Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Fri, 1 Sep 2017 14:44:26 -0700 Subject: [PATCH] Zuul v3: run devstack Add a role to run devstack, and add it to the main devstack playbook for the next-gen devstack job. Change-Id: If84d764e9b2f8dbb6beb1990abc11cbb9f1156b0 --- .zuul.yaml | 46 +++++++++++++++---- playbooks/devstack.yaml | 6 +-- playbooks/pre.yaml | 13 ++++++ roles/run-devstack/README.rst | 8 ++++ roles/run-devstack/defaults/main.yaml | 1 + roles/run-devstack/tasks/main.yaml | 6 +++ roles/setup-devstack-cache/README.rst | 15 ++++++ roles/setup-devstack-cache/defaults/main.yaml | 2 + roles/setup-devstack-cache/tasks/main.yaml | 14 ++++++ .../library/devstack_local_conf.py | 2 +- 10 files changed, 98 insertions(+), 15 deletions(-) create mode 100644 roles/run-devstack/README.rst create mode 100644 roles/run-devstack/defaults/main.yaml create mode 100644 roles/run-devstack/tasks/main.yaml create mode 100644 roles/setup-devstack-cache/README.rst create mode 100644 roles/setup-devstack-cache/defaults/main.yaml create mode 100644 roles/setup-devstack-cache/tasks/main.yaml diff --git a/.zuul.yaml b/.zuul.yaml index 6ee922a5..4a4a4cfb 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -10,20 +10,46 @@ description: Base devstack job. required-projects: - openstack-dev/devstack + - openstack/requirements + - openstack/nova + - openstack/keystone + - openstack/glance + - openstack/cinder + - openstack/neutron + timeout: 7200 + vars: + devstack_localrc: + DATABASE_PASSWORD: secretdatabase + RABBIT_PASSWORD: secretrabbit + ADMIN_PASSWORD: secretadmin + SERVICE_PASSWORD: secretservice + NETWORK_GATEWAY: 10.1.0.1 + Q_USE_DEBUG_COMMAND: True + FIXED_RANGE: 10.1.0.0/20 + IPV4_ADDRS_SAFE_TO_USE: 10.1.0.0/20 + FLOATING_RANGE: 172.24.5.0/24 + PUBLIC_NETWORK_GATEWAY: 172.24.5.1 + FLOATING_HOST_PREFIX: 172.24.4 + FLOATING_HOST_MASK: 23 + SWIFT_REPLICAS: 1 + SWIFT_START_ALL_SERVICES: False + LOG_COLOR: False + VERBOSE: True + NETWORK_GATEWAY: 10.1.0.1 + NOVNC_FROM_PACKAGE: True + ERROR_ON_CLONE: True + # NOTE(dims): etcd 3.x is not available in debian/ubuntu + # etc. As a stop gap measure, devstack uses wget to download + # from the location below for all the CI jobs. + ETCD_DOWNLOAD_URL: "http://tarballs.openstack.org/etcd/" + devstack_services: + horizon: False + tempest: False pre-run: playbooks/pre post-run: playbooks/post -- job: - name: devstack-lxc - parent: devstack - description: A job which sets something in local.conf - vars: - devstack_localrc: - LIBVIRT_TYPE: lxc - NOVA_BACKEND: LVM - - job: name: devstack-legacy parent: base-test @@ -106,7 +132,7 @@ name: openstack-infra/devstack-gate check: jobs: - - devstack-lxc: + - devstack: files: - ^playbooks/pre - ^playbooks/post diff --git a/playbooks/devstack.yaml b/playbooks/devstack.yaml index 81ce3a06..ede83826 100644 --- a/playbooks/devstack.yaml +++ b/playbooks/devstack.yaml @@ -1,5 +1,3 @@ -# A temporary test playbook to aid in job construction. - hosts: all - tasks: - - command: ls /opt/stack - - command: cat /opt/stack/devstack/local.conf + roles: + - run-devstack diff --git a/playbooks/pre.yaml b/playbooks/pre.yaml index d4807c06..7e871915 100644 --- a/playbooks/pre.yaml +++ b/playbooks/pre.yaml @@ -4,5 +4,18 @@ - setup-tempest-user - setup-devstack-source-dirs - setup-devstack-log-dir + - setup-devstack-cache - start-fresh-logging - write-devstack-local-conf + # TODO(jeblair): remove when configure-mirrors is fixed + tasks: + - name: Hack mirror_info + shell: + _raw_params: | + mkdir /etc/ci + cat << "EOF" > /etc/ci/mirror_info.sh + export NODEPOOL_UCA_MIRROR=http://mirror.dfw.rax.openstack.org/ubuntu-cloud-archive + EOF + args: + executable: /bin/bash + become: true diff --git a/roles/run-devstack/README.rst b/roles/run-devstack/README.rst new file mode 100644 index 00000000..d77eb15e --- /dev/null +++ b/roles/run-devstack/README.rst @@ -0,0 +1,8 @@ +Run devstack + +**Role Variables** + +.. zuul:rolevar:: devstack_base_dir + :default: /opt/stack + + The devstack base directory. diff --git a/roles/run-devstack/defaults/main.yaml b/roles/run-devstack/defaults/main.yaml new file mode 100644 index 00000000..fea05c81 --- /dev/null +++ b/roles/run-devstack/defaults/main.yaml @@ -0,0 +1 @@ +devstack_base_dir: /opt/stack diff --git a/roles/run-devstack/tasks/main.yaml b/roles/run-devstack/tasks/main.yaml new file mode 100644 index 00000000..bafebafd --- /dev/null +++ b/roles/run-devstack/tasks/main.yaml @@ -0,0 +1,6 @@ +- name: Run devstack + command: ./stack.sh + args: + chdir: "{{devstack_base_dir}}/devstack" + become: true + become_user: stack diff --git a/roles/setup-devstack-cache/README.rst b/roles/setup-devstack-cache/README.rst new file mode 100644 index 00000000..b8938c3d --- /dev/null +++ b/roles/setup-devstack-cache/README.rst @@ -0,0 +1,15 @@ +Set up the devstack cache directory + +If the node has a cache of devstack image files, copy it into place. + +**Role Variables** + +.. zuul:rolevar:: devstack_base_dir + :default: /opt/stack + + The devstack base directory. + +.. zuul:rolevar:: devstack_cache_dir + :default: /opt/cache + + The directory with the cached files. diff --git a/roles/setup-devstack-cache/defaults/main.yaml b/roles/setup-devstack-cache/defaults/main.yaml new file mode 100644 index 00000000..c56720b4 --- /dev/null +++ b/roles/setup-devstack-cache/defaults/main.yaml @@ -0,0 +1,2 @@ +devstack_base_dir: /opt/stack +devstack_cache_dir: /opt/cache diff --git a/roles/setup-devstack-cache/tasks/main.yaml b/roles/setup-devstack-cache/tasks/main.yaml new file mode 100644 index 00000000..84f33f0e --- /dev/null +++ b/roles/setup-devstack-cache/tasks/main.yaml @@ -0,0 +1,14 @@ +- name: Copy cached devstack files + # This uses hard links to avoid using extra space. + command: "find {{ devstack_cache_dir }}/files -mindepth 1 -maxdepth 1 -exec cp -l {} {{ devstack_base_dir }}/devstack/files/ ;" + become: true + +- name: Set ownership of cached files + file: + path: '{{ devstack_base_dir }}/devstack/files' + state: directory + recurse: true + owner: stack + group: stack + mode: a+r + become: yes diff --git a/roles/write-devstack-local-conf/library/devstack_local_conf.py b/roles/write-devstack-local-conf/library/devstack_local_conf.py index a49142af..4134beb0 100644 --- a/roles/write-devstack-local-conf/library/devstack_local_conf.py +++ b/roles/write-devstack-local-conf/library/devstack_local_conf.py @@ -27,7 +27,7 @@ class VarGraph(object): for k, v in vars.items(): self._varnames.add(k) for k, v in vars.items(): - self._addVar(k, v) + self._addVar(k, str(v)) bash_var_re = re.compile(r'\$\{?(\w+)') def getDependencies(self, value):