From 683de3683bc46cda2f34300d9dbea168f58b0ecf Mon Sep 17 00:00:00 2001
From: Derek Higgins <derekh@redhat.com>
Date: Wed, 19 Jul 2017 16:29:48 +0100
Subject: [PATCH] Add scenario011 to install ironic in the overcloud

Depends-On: Ib3f183980ce3e383c0e6319ee373bd8438e8e6b8
Change-Id: Ice806c363950c7868f464c856c0594e5fc41b554
---
 ci/common/vbmc_setup.yaml                     | 34 +++++++++
 .../scenario011-multinode-containers.yaml     | 74 +++++++++++++++++++
 zuul.d/layout.yaml                            |  5 ++
 3 files changed, 113 insertions(+)
 create mode 100644 ci/common/vbmc_setup.yaml
 create mode 100644 ci/environments/scenario011-multinode-containers.yaml

diff --git a/ci/common/vbmc_setup.yaml b/ci/common/vbmc_setup.yaml
new file mode 100644
index 0000000000..444e7c6be7
--- /dev/null
+++ b/ci/common/vbmc_setup.yaml
@@ -0,0 +1,34 @@
+heat_template_version: rocky
+
+parameters:
+  servers:
+    type: json
+
+resources:
+
+  ExtraConfig:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config: |
+        #!/bin/bash
+        cd /etc/yum.repos.d
+        echo 'nameserver 8.8.8.8' > /etc/resolv.conf
+        curl https://git.openstack.org/cgit/openstack/tripleo-repos/plain/tripleo_repos/main.py | python - current-tripleo
+        yum install -y python2-virtualbmc epel-release libvirt-client libvirt-daemon libvirt qemu-kvm-ev
+        yum install -y qemu-system-x86  # <-- needs epel
+        yum remove -y epel-release
+        systemctl start libvirtd
+        git clone https://git.openstack.org/openstack/ironic /tmp/ironic
+        mkdir -p /var/log/bmlogs
+        chmod 777 /var/log/bmlogs
+        # nohup needed as vbmc seems to keep stdin open
+        nohup /tmp/ironic/devstack/tools/ironic/scripts/create-node.sh -n node1 -c 1 -m 3072 -d 10 -b br-ex -p 1161 -M 1350 -f qcow2 -a x86_64 -E qemu -e /usr/bin/qemu-system-x86_64 -l /var/log/bmlogs -A 66:0d:1d:d8:0b:a3 > ~zuul/create-node.log 2>&1 < /dev/null &
+        disown -a
+  ExtraDeployments:
+    type: OS::Heat::SoftwareDeploymentGroup
+    properties:
+      servers:  {get_param: servers}
+      config: {get_resource: ExtraConfig}
+      actions: ['CREATE'] # Only do this on CREATE
+      name: VirtNodeExtraConfig
diff --git a/ci/environments/scenario011-multinode-containers.yaml b/ci/environments/scenario011-multinode-containers.yaml
new file mode 100644
index 0000000000..ffd5abab01
--- /dev/null
+++ b/ci/environments/scenario011-multinode-containers.yaml
@@ -0,0 +1,74 @@
+resource_registry:
+  OS::TripleO::Controller::Net::SoftwareConfig: ../common/net-config-multinode.yaml
+  OS::TripleO::Compute::Net::SoftwareConfig: ../common/net-config-multinode.yaml
+  OS::TripleO::Services::NovaIronic: ../../docker/services/nova-ironic.yaml
+  OS::TripleO::Services::IronicApi: ../../docker/services/ironic-api.yaml
+  OS::TripleO::Services::IronicConductor: ../../docker/services/ironic-conductor.yaml
+  OS::TripleO::Services::IronicPxe: ../../docker/services/ironic-pxe.yaml
+  # These enable Pacemaker
+  OS::TripleO::Tasks::ControllerPreConfig: OS::Heat::None
+  OS::TripleO::Tasks::ControllerPostConfig: OS::Heat::None
+  OS::TripleO::Tasks::ControllerPostPuppetRestart: ../../extraconfig/tasks/post_puppet_pacemaker_restart.yaml
+  OS::TripleO::Services::OsloMessagingRpc: ../../docker/services/pacemaker/rpc-rabbitmq.yaml
+  OS::TripleO::Services::OsloMessagingNotify: ../../docker/services/messaging/notify-rabbitmq-shared.yaml
+  OS::TripleO::Services::HAproxy: ../../docker/services/pacemaker/haproxy.yaml
+  OS::TripleO::Services::Pacemaker: ../../puppet/services/pacemaker.yaml
+  OS::TripleO::Services::PacemakerRemote: ../../puppet/services/pacemaker_remote.yaml
+  OS::TripleO::Services::Clustercheck: ../../docker/services/pacemaker/clustercheck.yaml
+  OS::TripleO::Services::MySQL: ../../docker/services/pacemaker/database/mysql.yaml
+  # Some infra instances don't pass the ping test but are otherwise working.
+  # Since the OVB jobs also test this functionality we can shut it off here.
+  OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml
+  OS::TripleO::NodeExtraConfigPost: ../common/vbmc_setup.yaml
+  OS::TripleO::Services::CinderVolume: ../../docker/services/pacemaker/cinder-volume.yaml
+
+parameter_defaults:
+  ControllerServices:
+    - OS::TripleO::Services::Clustercheck
+    - OS::TripleO::Services::Docker
+    - OS::TripleO::Services::Keystone
+    - OS::TripleO::Services::GlanceApi
+    - OS::TripleO::Services::IronicApi
+    - OS::TripleO::Services::IronicConductor
+    - OS::TripleO::Services::IronicPxe
+    - OS::TripleO::Services::MySQL
+    - OS::TripleO::Services::MySQLClient
+    - OS::TripleO::Services::NeutronDhcpAgent
+    - OS::TripleO::Services::NeutronL3Agent
+    - OS::TripleO::Services::NeutronMetadataAgent
+    - OS::TripleO::Services::NeutronServer
+    - OS::TripleO::Services::NeutronCorePlugin
+    - OS::TripleO::Services::NeutronOvsAgent
+    - OS::TripleO::Services::OsloMessagingRpc
+    - OS::TripleO::Services::OsloMessagingNotify
+    - OS::TripleO::Services::HAproxy
+    - OS::TripleO::Services::Memcached
+    - OS::TripleO::Services::Pacemaker
+    - OS::TripleO::Services::NovaConductor
+    - OS::TripleO::Services::NovaApi
+    - OS::TripleO::Services::NovaIronic
+    - OS::TripleO::Services::NovaPlacement
+    - OS::TripleO::Services::NovaMetadata
+    - OS::TripleO::Services::NovaScheduler
+    - OS::TripleO::Services::Ntp
+    - OS::TripleO::Services::Snmp
+    - OS::TripleO::Services::SwiftProxy
+    - OS::TripleO::Services::SwiftStorage
+    - OS::TripleO::Services::SwiftRingBuilder
+    - OS::TripleO::Services::Timezone
+    - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::TripleoFirewall
+    - OS::TripleO::Services::Sshd
+    - OS::TripleO::Services::CinderApi
+    - OS::TripleO::Services::CinderScheduler
+    - OS::TripleO::Services::CinderVolume
+
+  ControllerExtraConfig:
+    nova::compute::libvirt::services::libvirt_virt_type: qemu
+    nova::compute::libvirt::libvirt_virt_type: qemu
+  Debug: true
+  DockerPuppetDebug: True
+  NotificationDriver: 'noop'
+  SwiftCeilometerPipelineEnabled: false
+  IronicCleaningDiskErase: 'metadata'
+  NovaSchedulerDiscoverHostsInCellsInterval: 15
diff --git a/zuul.d/layout.yaml b/zuul.d/layout.yaml
index 598a9c4cec..539d6b2a7f 100644
--- a/zuul.d/layout.yaml
+++ b/zuul.d/layout.yaml
@@ -176,3 +176,8 @@
               - ci/environments/scenario009-multinode.yaml
               - ci/pingtests/scenario009-multinode.yaml
               - ^deployed-server/.*$
+        - tripleo-ci-centos-7-scenario011-multinode-oooq-container:
+            files:
+              - ci/environments/scenario011-multinode-containers.yaml
+              - ^(docker|puppet)/services/.*ironic.*$
+              - ^environments\/.*ironic.*$