]> xenbits.xensource.com Git - openstack/ci-loop-config.git/commitdiff
Added libvirt+xen config
authorBob Ball <bob.ball@citrix.com>
Thu, 11 Feb 2016 11:52:34 +0000 (11:52 +0000)
committerBob Ball <bob.ball@citrix.com>
Thu, 11 Feb 2016 11:55:34 +0000 (11:55 +0000)
19 files changed:
install_master.sh [new file with mode: 0644]
jenkins/jobs/jobs.yaml [new file with mode: 0644]
jenkins/jobs/macros-common.yaml
nodepool/nodepool.yaml
nodepool/scripts/libvirt-bin_1.2.15-anthony_amd64.deb [new file with mode: 0644]
nodepool/scripts/libvirt-dev_1.2.15-anthony_amd64.deb [new file with mode: 0644]
nodepool/scripts/libvirt0-dbg_1.2.15-anthony_amd64.deb [new file with mode: 0644]
nodepool/scripts/libvirt0_1.2.15-anthony_amd64.deb [new file with mode: 0644]
nodepool/scripts/libxen-4.4_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb [new file with mode: 0644]
nodepool/scripts/libxen-dev_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb [new file with mode: 0644]
nodepool/scripts/libxenstore3.0_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb [new file with mode: 0644]
nodepool/scripts/prepare_node_devstack_xen.sh [new file with mode: 0644]
nodepool/scripts/read-vendor-json.py [new file with mode: 0644]
nodepool/scripts/static-network-config [new file with mode: 0755]
nodepool/scripts/xen-hypervisor-4.4-amd64_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb [new file with mode: 0644]
nodepool/scripts/xen-utils-4.4_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb [new file with mode: 0644]
nodepool/scripts/xen-utils-common_4.4.2-0ubuntu0.14.04.2.anthony_all.deb [new file with mode: 0644]
nodepool/scripts/xenstore-utils_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb [new file with mode: 0644]
zuul/layout.yaml

diff --git a/install_master.sh b/install_master.sh
new file mode 100644 (file)
index 0000000..7433f09
--- /dev/null
@@ -0,0 +1,53 @@
+#!/usr/bin/env bash
+set -eux
+
+THIS_DIR=`pwd`
+DATA_PATH=/root/os-ext-data
+
+# Steps to reinstall:
+# 1) Create new Ubuntu 14.04 server (copy password)
+# 1a) 7.5GB Compute v1 flavor
+# 1b) Enable monitoring and security updates
+# 2) Disable password authentication
+# 2a) ssh-copy-id to copy a key to the server
+# 2b) edit /etc/sshd_config to set "PermitRootLogin without-password"
+# 3) Copy the secret credentials dir (http://hg.uk.xensource.com/openstack/infrastructure.hg/os-ext-data) to /root
+# 4) Clone this repo git:
+# 4a) git clone https://github.com/citrix-openstack/os-ext-testing.git
+# 4b) cd os-ext-testing; git checkout common_ci
+# ?) Follow steps below
+# ?) Set up monitoring checks https://intelligence.rackspace.com/cloud/entities/enWCIYVVnt
+
+# Copied from the following URL Feb 2016
+# http://docs.openstack.org/infra/openstackci/third_party_ci.html
+
+sudo su -
+# Install puppet
+[ -e install_puppet.sh ] && rm install_puppet.sh
+wget https://git.openstack.org/cgit/openstack-infra/system-config/plain/install_puppet.sh
+bash install_puppet.sh
+
+# Install puppet modules to /etc/puppet/modules
+git clone https://git.openstack.org/openstack-infra/system-config
+cd system-config
+./install_modules.sh
+exit
+
+sudo su -
+# Setup the site we're deploying
+cp /etc/puppet/modules/openstackci/contrib/single_node_ci_site.pp /etc/puppet/manifests/site.pp
+
+# And the secret credentials store
+cp /etc/puppet/modules/openstackci/contrib/hiera.yaml /etc/puppet
+
+# Verify that our config file matches the latest template file
+# If this check fails, copy the new template to os-ext-data and create a new secrets file
+diff -q /root/os-ext-data/single_node_ci_data_orig.yaml /etc/puppet/modules/openstackci/contrib/single_node_ci_data.yaml
+# Since the template hasn't changed, just use the existing secrets
+cp /root/os-ext-data/single_node_ci_data.yaml /etc/puppet/environments/common.yaml
+
+# Add 'jenkins' to the hostname so Apache is happy
+sed -i -e 's/^\(127\.0\.0\.1.*\)$/\1 jenkins/' /etc/hosts
+exit
+
+sudo puppet apply --verbose /etc/puppet/manifests/site.pp
diff --git a/jenkins/jobs/jobs.yaml b/jenkins/jobs/jobs.yaml
new file mode 100644 (file)
index 0000000..fe262ff
--- /dev/null
@@ -0,0 +1,57 @@
+- job-template:
+    name: 'dsvm-tempest-xen'
+    node: '{node}'
+
+    wrappers:
+      - timeout:
+          timeout: 185  # Timeout in *minutes*
+          fail: true  # A job run that exceeds the timeout will cause a failure
+      - timestamps
+
+    builders:
+      - net-info
+      - devstack-checkout
+      - shell: |
+          #!/bin/bash -xe
+
+          function pre_test_hook {{
+              echo "Install thirdparty libraries"
+
+              # Install libvirt here to ensure it is
+              # not replaced devstack
+              sudo dpkg -i /opt/nodepool-scripts/*.deb
+              sudo apt-get install -y -f --fix-missing
+          }}
+
+          function cleanup_host_hook {{
+              echo "Copying custom logs"
+
+              # Xen logs
+              if [ -d /var/log/xen ]; then
+                  sudo cp -r /var/log/xen $BASE/logs/
+              fi
+          }}
+
+          export -f pre_test_hook
+          export -f cleanup_host_hook
+
+          if [ -z $ZUUL_PROJECT ]; then
+              export ZUUL_PROJECT=openstack-dev/sandbox
+          fi
+          if [ -z $ZUUL_BRANCH ]; then
+              export ZUUL_BRANCH=master
+          fi
+          export PYTHONUNBUFFERED=true
+          export DEVSTACK_GATE_TEMPEST=1
+          export DEVSTACK_GATE_VIRT_DRIVER=libvirt
+          export DEVSTACK_GATE_LIBVIRT_TYPE=xen
+          export DEVSTACK_GATE_TIMEOUT=180
+          export DEVSTACK_GATE_TEMPEST_REGEX='(?!.*\[.*\bslow\b.*\]|.*test_volume_boot_pattern)(^tempest\.(api|scenario|thirdparty))'
+          export RE_EXEC=true
+          cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh
+          ./safe-devstack-vm-gate-wrap.sh
+      - link-logs  # In macros.yaml from os-ext-testing
+
+    publishers:
+      - osci-swift-upload-logs-with-console:
+          upload_source: 'logs'
index 10a7806bd77aca64a6abcaceb404c072d89c63a5..02222d3723ffef152cfd5dc84f7e579a495cd4a0 100644 (file)
           ip -6 route show
           echo "Network neighbors..."
           ip neighbor show
+
+- builder:
+    name: osci-swift-upload-logs-with-console
+    builders:
+      - shell: "/usr/local/jenkins/slave_scripts/grab_console_log.sh"
+      - shell: |
+          #!/bin/sh
+          virtualenv osci-env
+          . osci-env/bin/activate
+          git clone https://github.com/citrix-openstack/openstack-citrix-ci openstack-citrix-ci
+          pip install -r openstack-citrix-ci/requirements.txt
+          pip install -e openstack-citrix-ci
+          # CA bundle in 2.5.2 is broken
+          pip install --upgrade requests>2.5.2
+          sudo mkdir -p /etc/osci/
+          cat | sudo tee /etc/osci/osci.config >/dev/null << EOF
+          SWIFT_API_KEY=<%= @swift_api_key %>
+          SWIFT_USERNAME=<%= @swift_api_user %>
+          SWIFT_REGION=IAD
+          SWIFT_CONTAINER=XenLogs
+          EOF
+          osci-upload /tmp/console.html {upload_source} $LOG_PATH
+
+
+- publisher:
+    name: osci-swift-upload-logs-with-console
+    publishers:
+      - postbuildscript:
+          builders:
+            - osci-swift-upload-logs-with-console:
+                upload_source: '{upload_source}'
+          # These flags really mean only if on * when
+          # checked. When both set to false the post script
+          # should run on every job regardless of status.
+          onfailure: False
+          onsuccess: False
index 21f7f9707baa90ee0f146b6dfed3effcb7be5d5c..b43e59f6e3e1f39b51b68dc4f52c520265623724 100644 (file)
@@ -15,7 +15,7 @@ cron:
 #   root@jenkins:~# echo "0 $((RANDOM%23+1)) * * *"
 #   0 16 * * *
 # This references the hour of the day when images will be built.
-  image-update: '0 0 * * *'
+  image-update: '0 11 * * *'
 
 zmq-publishers:
   - tcp://localhost:8888
@@ -24,40 +24,73 @@ gearman-servers:
   - host: 127.0.0.1
 
 labels:
-  - name: d-p-c
-    image: dpc
-    min-ready: 1
+  - name: ds-xen
+    image: ds-xen
+    min-ready: 2
     providers:
-      - name: local_01
-
-diskimages:
-    - name: dpc
-      elements:
-        - ubuntu
-        - vm
-        - openstack-repos
-        - puppet
-        - nodepool-base
-        - node-devstack
-      release: trusty
-      env-vars:
-        TMPDIR: /opt/dib_tmp
-        DIB_IMAGE_CACHE: /opt/dib_cache
+      - name: rax-iad
 
 providers:
-  - name: local_01
-#TODO: Update the provider username, password, and authurl
+  - name: rax-iad
+    region-name: 'IAD'
+    service-type: 'compute'
+    service-name: 'cloudServersOpenStack'
     username: '<%= provider_username %>'
     password: '<%= provider_password %>'
-    auth-url: 'http://<openstack cloud>:5000/v2.0'
-    project-name: 'admin'
-    max-servers: 2
+    project-id: '874240'
+    auth-url: 'https://identity.api.rackspacecloud.com/v2.0/'
+    boot-timeout: 600
+    max-servers: 5
+    rate: 10.0
+    keypair: 'xenproject-nodepool'
+    template-hostname: '{image.name}-{timestamp}.template.xen.org'
     images:
-      - name: dpc
+      - name: ds-xen
+        # This is the image name to use found in this provider's `glance image-list`
+        base-image: 'Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)'
         min-ram: 8192
-        diskimage: dpc
-        username: jenkins
-        private-key: '/home/nodepool/.ssh/id_rsa'
+        name-filter: 'Performance'
+        # This is the script that will be used to prepare the image
+        setup: prepare_node_devstack_xen.sh
+        #Set the public key part only of the jenkin's key (no whitespace) to the NODEPOOL_SSH_KEY environment variable in order to
+        #inject it into the image's jenkins user .ssh/authorized_keys
+        #This key will be used to log in and setup jenkins on the target VM
+#      private-key: '/home/nodepool/.ssh/id_rsa'
+        config-drive: true
+        meta:
+            xenapi_use_agent: 'false'
+#  - name: rax-ord
+#    region-name: 'ORD'
+#    username: '<%= provider_username %>'
+#    password: '<%= provider_password %>'
+#    project-id: '874240'
+#    auth-url: 'https://identity.api.rackspacecloud.com/v2.0/'
+#    boot-timeout: 600
+#    max-servers: 5
+#    rate: 10.0
+#    keypair: 'xenproject-nodepool'
+#    template-hostname: '{image.name}-{timestamp}.template.xen.org'
+#    images:
+#      - name: ds-xen
+#        # This is the image name to use found in this provider's `glance image-list`
+#        base-image: 'Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)'
+#        min-ram: 8192
+#        name-filter: 'Performance'
+#        # This is the script that will be used to prepare the image
+#        setup: prepare_node_devstack_xen.sh
+#        #Set the public key part only of the jenkin's key (no whitespace) to the NODEPOOL_SSH_KEY environment variable in order to
+#        #inject it into the image's jenkins user .ssh/authorized_keys
+#        #This key will be used to log in and setup jenkins on the target VM
+#        private-key: '/home/nodepool/.ssh/id_rsa'
+#        config-drive: true
+#        meta:
+#            xenapi_use_agent: 'false'
+
 
 targets:
   - name: jenkins1
+#    jenkins:
+#      url: 'http://localhost:8080/'
+#      user: '<%= jenkins_api_user %>'
+#      apikey: '<%= jenkins_api_key %>'
+#      credentials-id: '<%= jenkins_credentials_id %>'
diff --git a/nodepool/scripts/libvirt-bin_1.2.15-anthony_amd64.deb b/nodepool/scripts/libvirt-bin_1.2.15-anthony_amd64.deb
new file mode 100644 (file)
index 0000000..2b18fa0
Binary files /dev/null and b/nodepool/scripts/libvirt-bin_1.2.15-anthony_amd64.deb differ
diff --git a/nodepool/scripts/libvirt-dev_1.2.15-anthony_amd64.deb b/nodepool/scripts/libvirt-dev_1.2.15-anthony_amd64.deb
new file mode 100644 (file)
index 0000000..49aea62
Binary files /dev/null and b/nodepool/scripts/libvirt-dev_1.2.15-anthony_amd64.deb differ
diff --git a/nodepool/scripts/libvirt0-dbg_1.2.15-anthony_amd64.deb b/nodepool/scripts/libvirt0-dbg_1.2.15-anthony_amd64.deb
new file mode 100644 (file)
index 0000000..8f71051
Binary files /dev/null and b/nodepool/scripts/libvirt0-dbg_1.2.15-anthony_amd64.deb differ
diff --git a/nodepool/scripts/libvirt0_1.2.15-anthony_amd64.deb b/nodepool/scripts/libvirt0_1.2.15-anthony_amd64.deb
new file mode 100644 (file)
index 0000000..d5a5642
Binary files /dev/null and b/nodepool/scripts/libvirt0_1.2.15-anthony_amd64.deb differ
diff --git a/nodepool/scripts/libxen-4.4_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb b/nodepool/scripts/libxen-4.4_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb
new file mode 100644 (file)
index 0000000..81dd333
Binary files /dev/null and b/nodepool/scripts/libxen-4.4_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb differ
diff --git a/nodepool/scripts/libxen-dev_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb b/nodepool/scripts/libxen-dev_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb
new file mode 100644 (file)
index 0000000..2c68d90
Binary files /dev/null and b/nodepool/scripts/libxen-dev_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb differ
diff --git a/nodepool/scripts/libxenstore3.0_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb b/nodepool/scripts/libxenstore3.0_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb
new file mode 100644 (file)
index 0000000..11959ad
Binary files /dev/null and b/nodepool/scripts/libxenstore3.0_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb differ
diff --git a/nodepool/scripts/prepare_node_devstack_xen.sh b/nodepool/scripts/prepare_node_devstack_xen.sh
new file mode 100644 (file)
index 0000000..b4aedeb
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/bash
+set -xe
+
+./prepare_node_devstack.sh
+
+# Install Xen and update the kernel
+sudo apt-get -y install htop vim git pwgen xen-hypervisor-4.4
+
+sudo mv /etc/default/grub{,.bak}
+sudo tee /etc/default/grub << EOC
+GRUB_DEFAULT=0
+GRUB_TIMEOUT=30
+GRUB_DISTRIBUTOR=\`lsb_release -i -s 2> /dev/null || echo Debian\`
+GRUB_CMDLINE_LINUX_DEFAULT="debug loglevel=7"
+GRUB_CMDLINE_LINUX=""
+GRUB_TERMINAL=console
+GRUB_DISABLE_LINUX_UUID="false"
+EOC
+
+sudo mv /etc/default/grub.d/xen.cfg{,.bak}
+sudo tee /etc/default/grub.d/xen.cfg << EOC
+echo "Including Xen overrides from /etc/default/grub.d/xen.cfg"
+GRUB_CMDLINE_XEN="dom0_mem=7680M:max=7680M dom0_max_vcpus=4 max-console=vga"
+GRUB_DEFAULT="Ubuntu GNU/Linux, with Xen hypervisor"
+EOC
+
+sudo update-grub
+
+# Disable cloud-init - it doesn't work in dom0 Xen
+for i in /etc/init/cloud-*; do echo manual | sudo tee ${i%.conf}.override; done
+
+# Install Monty's config drive network setup (from https://review.openstack.org/#/c/154132/5)
+# ./read-vendor-json/install.d/05-read-vendor-json
+sudo cp read-vendor-json.py /usr/local/bin
+sudo cp static-network-config /etc/init.d
+
+# ./read-vendor-json/install.d/10-static-network-config
+sudo tee /etc/init/write-network-interfaces.conf <<EOF
+start on starting networking
+task
+exec /etc/init.d/static-network-config
+EOF
+
+# ./read-vendor-json/install.d/15-write-interfaces
+sudo rm -rf /etc/network/interfaces.d
+sudo tee /etc/network/interfaces <<EOF
+auto lo
+iface lo inet loopback
+EOF
+
+# Create a swap file
+sudo dd if=/dev/zero of=/swapfile bs=1024 count=524288
+sudo chown root:root /swapfile
+sudo chmod 0600 /swapfile
+sudo mkswap /swapfile
+echo "/swapfile        none    swap    sw      0       0" | sudo tee -a /etc/fstab
+
+sync
+sleep 5
diff --git a/nodepool/scripts/read-vendor-json.py b/nodepool/scripts/read-vendor-json.py
new file mode 100644 (file)
index 0000000..a9b325e
--- /dev/null
@@ -0,0 +1,147 @@
+# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file 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.
+
+import argparse
+import json
+import platform
+import sys
+
+post_up = "    post-up route add -net {net} netmask {mask} gw {gw} || true\n"
+pre_down = "    pre-down route del -net {net} netmask {mask} gw {gw} || true\n"
+
+
+def _write_rh_interface(name, interface):
+    files_to_write = dict()
+    results = """# Automatically generated, do not edit
+DEVICE={name}
+BOOTPROTO=static
+HWADDR={hwaddr}
+IPADDR={ip_address}
+NETMASK={netmask}
+ONBOOT=yes
+NM_CONTROLLED=no
+""".format(
+        name=name,
+        hwaddr=interface['mac_address'],
+        ip_address=interface['ip_address'],
+        netmask=interface['netmask'],
+
+    )
+    routes = []
+    for route in interface['routes']:
+        if route['network'] == '0.0.0.0' and route['netmask'] == '0.0.0.0':
+            results += "DEFROUTE=yes\n"
+            results += "GATEWAY={gw}\n".format(gw=route['gateway'])
+        else:
+            routes.append(dict(
+                net=route['network'], mask=route['netmask'],
+                gw=route['gateway']))
+
+    if routes:
+        route_content = ""
+        for x in range(0, len(routes)):
+            route_content += "ADDRESS{x}={net}\n".format(x=x, **routes[x])
+            route_content += "NETMASK{x}={mask}\n".format(x=x, **routes[x])
+            route_content += "GATEWAY{x}={gw}\n".format(x=x, **routes[x])
+        files_to_write['/etc/sysconfig/network-scripts/route-{name}'.format(
+            name=name)] = route_content
+    files_to_write['/etc/sysconfig/network-scripts/ifcfg-{name}'.format(
+        name=name)] = results
+    return files_to_write
+
+
+def write_redhat_interfaces(interfaces):
+    files_to_write = dict()
+    for iname, interface in interfaces.items():
+        if interface['type'] != 'ipv6':
+            interface_name = interface['id'].replace('network', 'eth')
+            files_to_write.update(
+                _write_rh_interface(interface_name, interface))
+    return files_to_write
+
+
+def write_debian_interfaces(interfaces):
+    results = ""
+    for iname, interface in interfaces.items():
+        link_type = "inet"
+        if interface['type'] == 'ipv6':
+            link_type = "inet6"
+        interface_name = interface['id'].replace('network', 'eth')
+        results += "auto {0}\n".format(interface_name)
+        results += "iface {name} {link_type} static\n".format(
+            name=interface_name, link_type=link_type)
+        results += "    address {0}\n".format(interface['ip_address'])
+        results += "    netmask {0}\n".format(interface['netmask'])
+        for route in interface['routes']:
+            if route['network'] == '0.0.0.0' and route['netmask'] == '0.0.0.0':
+                results += "    gateway {0}\n".format(route['gateway'])
+            else:
+                results += post_up.format(
+                    net=route['network'], mask=route['netmask'],
+                    gw=route['gateway'])
+                results += pre_down.format(
+                    net=route['network'], mask=route['netmask'],
+                    gw=route['gateway'])
+    return {'/etc/network/interfaces': results}
+
+
+def write_dns_info(dns_servers):
+    results = ""
+    for server in dns_servers:
+        results += "nameserver {0}\n".format(server)
+    return {'/etc/resolv.conf': results}
+
+
+def main():
+    parser = argparse.ArgumentParser(description="Static network config")
+    parser.add_argument(
+        '-n', '--noop', action='store_true', help='Do not write files')
+    parser.add_argument(
+        '--distro', dest='distro', default=None,
+        help='Override detected distro')
+    args = parser.parse_args()
+
+    v = json.load(open('/mnt/config/openstack/latest/vendor_data.json'))
+    net = v['network_info']
+
+    dns_servers = [f['address'] for f in net['services'] if f['type'] == 'dns']
+
+    interfaces = {}
+
+    for network in net['networks']:
+        interfaces[network['link']] = network
+    for link in net['links']:
+        interfaces[link['id']]['mac_address'] = link['ethernet_mac_address']
+
+    distro = args.distro
+    if not distro:
+        distro = platform.dist()[0].lower()
+    if distro in ('debian', 'ubuntu'):
+        files_to_write = write_debian_interfaces(interfaces)
+    elif distro in ('redhat', 'centos', 'fedora', 'suse', 'opensuse'):
+        files_to_write = write_redhat_interfaces(interfaces)
+    files_to_write.update(write_dns_info(dns_servers))
+    for k, v in files_to_write.items():
+        if args.noop:
+            print "### Write {0}".format(k)
+            print v
+        else:
+            with open(k, 'w') as outfile:
+                outfile.write(v)
+
+
+if __name__ == '__main__':
+    sys.exit(main())
diff --git a/nodepool/scripts/static-network-config b/nodepool/scripts/static-network-config
new file mode 100755 (executable)
index 0000000..59f4f73
--- /dev/null
@@ -0,0 +1,69 @@
+# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
+# chkconfig: 2345 05 95
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file 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.
+
+if [ ! -z $1 -a $1 != start ] ; then
+    exit 0
+fi
+
+# Start by putting down base scripts
+if [ -d /etc/sysconfig/network-scripts ]; then
+    # Bail and don't do anything if we have one - handles reboot
+    if [ -f /etc/sysconfig/network-scripts/ifcfg-eth0 ] ; then
+        exit 0
+    fi
+    for interface in eth0 eth1 ; do
+        cat >/etc/sysconfig/network-scripts/ifcfg-$interface <<EOF
+DEVICE=$interface
+BOOTPROTO=dhcp
+ONBOOT=on
+EOF
+    done
+elif [ -d /etc/network ]; then
+    # Bail and don't do anything if we have one - handles reboot
+    if grep eth0 /etc/network/interfaces >/dev/null 2>&1 ; then
+        exit 0
+    fi
+    for interface in eth0 eth1 ; do
+        cat >>/etc/network/interfaces <<EOF
+auto $interface
+iface $interface inet dhcp
+EOF
+    done
+fi
+
+# Test to see if config-drive exists. If not, skip and assume DHCP networking
+# will work becasue sanity
+if ! blkid -t LABEL="config-2" ; then
+    exit 0
+fi
+
+# Mount config drive- but check to make sure it's Rackspace and not config
+# drive from somewhere else
+mkdir -p /mnt/config
+mount /dev/disk/by-label/config-2 /mnt/config
+grep -i rackspace /mnt/config/openstack/latest/vendor_data.json >/dev/null 2>&1 || exit 0
+
+python /usr/local/bin/read-vendor-json.py
+
+if [ -f /etc/network/interfaces ] ; then
+    ifdown -a ; ifup -a
+else
+    for interface in /etc/sysconfig/network-scripts/ifcfg-eth* ; do
+        name=$(echo $interface | cut -f3 -d-)
+        ifdown $name ; ifup $name
+    done
+fi
diff --git a/nodepool/scripts/xen-hypervisor-4.4-amd64_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb b/nodepool/scripts/xen-hypervisor-4.4-amd64_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb
new file mode 100644 (file)
index 0000000..3a2ccc1
Binary files /dev/null and b/nodepool/scripts/xen-hypervisor-4.4-amd64_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb differ
diff --git a/nodepool/scripts/xen-utils-4.4_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb b/nodepool/scripts/xen-utils-4.4_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb
new file mode 100644 (file)
index 0000000..df793bd
Binary files /dev/null and b/nodepool/scripts/xen-utils-4.4_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb differ
diff --git a/nodepool/scripts/xen-utils-common_4.4.2-0ubuntu0.14.04.2.anthony_all.deb b/nodepool/scripts/xen-utils-common_4.4.2-0ubuntu0.14.04.2.anthony_all.deb
new file mode 100644 (file)
index 0000000..72dc855
Binary files /dev/null and b/nodepool/scripts/xen-utils-common_4.4.2-0ubuntu0.14.04.2.anthony_all.deb differ
diff --git a/nodepool/scripts/xenstore-utils_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb b/nodepool/scripts/xenstore-utils_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb
new file mode 100644 (file)
index 0000000..7645809
Binary files /dev/null and b/nodepool/scripts/xenstore-utils_4.4.2-0ubuntu0.14.04.2.anthony_amd64.deb differ
index fba83a20a7f7d9f519916a5b83bae44ac20810b2..3a879908118c2ace604b4b86ff1e8be8e6947e9d 100644 (file)
@@ -5,7 +5,7 @@ includes:
 pipelines:
   - name: check
     description: Newly uploaded patchsets enter this pipeline to receive an initial +/-1 Verified vote from Jenkins.
-    failure-message: "Build failed. For 3rd party CI contact info: https://wiki.openstack.org/wiki/ThirdPartySystems"
+    failure-message: "Build failed.  To recheck use 'xen: recheck'.  For 3rd party ci contact info: https://wiki.openstack.org/wiki/ThirdPartySystems"
     manager: IndependentPipelineManager
     trigger:
       gerrit:
@@ -20,23 +20,20 @@ pipelines:
       gerrit:
         verified: 1
       smtp:
-        #TODO: Update these to real e-mail addresses
-        to: third_party_ci@example.com
-        from: zuul@example.com
+        to: openstack-ci@xenproject.org
+        from: zuul@zuul.openstack.xenproject.org
         subject: 'Silent check of {change.project} {change.number},{change.patchset} passed'
     failure:
       gerrit:
         verified: -1
       smtp:
-        #TODO: Update these to real e-mail addresses
-        to: third_party_ci@example.com
-        from: zuul@example.com
+        to: openstack-ci@xenproject.org
+        from: zuul@zuul.openstack.xenproject.org
         subject: 'Silent check of {change.project} {change.number},{change.patchset} failed'
     merge-failure:
       smtp:
-        #TODO: Update these to real e-mail addresses
-        to: third_party_ci@example.com
-        from: zuul@example.com
+        to: openstack-ci@xenproject.org
+        from: zuul@zuul.openstack.xenproject.org
         subject: Upstream change {change} has a merge failure
 
 
@@ -51,29 +48,43 @@ pipelines:
           comment: (?i)^(Patch Set [0-9]+:)?( [\w\\+-]*)*(\n\n)?\s*recheck myvendor\s*$
     success:
       smtp:
-        #TODO: Update these to real e-mail addresses
-        to: third_party_ci@example.com
-        from: zuul@example.com
+        to: openstack-ci@xenproject.org
+        from: zuul@zuul.openstack.xenproject.org
         subject: 'Silent check of {change.project} {change.number},{change.patchset} passed'
     failure:
       smtp:
-        #TODO: Update these to real e-mail addresses
-        to: third_party_ci@example.com
-        from: zuul@example.com
+        to: openstack-ci@xenproject.org
+        from: zuul@zuul.openstack.xenproject.org
         subject: 'Silent check of {change.project} {change.number},{change.patchset} failed'
 
 
 jobs:
   - name: ^dsvm-tempest.*$
+    skip-if:
+    - project: ^openstack/nova$
+      branch: ^master$
+      all-files-match-any:
+        - ^.*\.rst$
+        - ^doc/.*$
+        - ^nova/tests/.*$
+        - ^nova/virt/baremetal/.*$
+        - ^nova/virt/hyperv/.*$
+        - ^nova/virt/ironic/.*$
+        - ^nova/virt/vmwareapi/.*$
+        - ^nova/virt/xenapi/.*$
+        - ^tools/.*$
+        - ^tox.ini$
     parameter-function: single_use_node
+    branch: ^master.*$
+    swift:
+      - name: logs
+
 
 projects:
   - name: openstack-dev/ci-sandbox
     check:
-      # Remove this after successfully verifying communication with upstream
-      # and seeing a posted successful review.
-      - noop-check-communication
-    silent:
-      # Uncomment this job when you have a jenkins slave running and want to
-      # test a full Tempest run within devstack.
-      - dsvm-tempest-full
+      - dsvm-tempest-xen
+
+  - name: openstack/nova
+#    check:
+#      - dsvm-tempest-xen