Try to get a bit closer to running Cinder jobs regularly

Add a lot of OpenStack projects to the Zuul config.

Reshuffle some diagnostic output in the sp-init playbook.
Run the (still experimental) jobs on the openstack/cinder project,
not the config one.
Run our git-if-needed tool to apply patches to Cinder, os-brick, etc.

Change-Id: I89820ba02da71a8753dca76be976f6e2014cf115
diff --git a/playbooks/sp-init.yaml b/playbooks/sp-init.yaml
index 274c22b..42ceee7 100644
--- a/playbooks/sp-init.yaml
+++ b/playbooks/sp-init.yaml
@@ -1,21 +1,3 @@
-- hosts: all
-  tasks:
-    - name: sp-whoami-hostname
-      shell:
-        cmd: hostname
-
-    - name: sp-whoami-id
-      shell:
-        cmd: id
-
-    - name: sp-whereami-pwd
-      shell:
-        cmd: pwd
-
-    - name: sp-dump-ansible-facts
-      ansible.builtin.debug:
-        var: hostvars
-
 - hosts: localhost
   connection: local
   vars:
@@ -38,6 +20,33 @@
       shell:
         cmd: rm -- '{{ storprep_filename }}'
 
+    - name: ctrl-sp-processes
+      shell:
+        cmd: ps awwfux
+
+    - name: ctrl-sp-processes-pstree
+      shell:
+        cmd: pstree -l
+
+- hosts: tempest
+  tasks:
+    - name: Apply the StorPool patches
+      shell:
+        cmd: /home/zuul/src/spfactory.storpool.com/sp-osci/tools/bin/git-if-needed -s /home/zuul/src/spfactory.storpool.com/sp-osci/patches/series.experimental -S am
+        chdir: /opt/stack
+      become: true
+      become_user: stack
+
+    - name: Apply the StorPool patches to the other place
+      shell:
+        cmd: /home/zuul/src/spfactory.storpool.com/sp-osci/tools/bin/git-if-needed -s /home/zuul/src/spfactory.storpool.com/sp-osci/patches/series.experimental am
+        chdir: /home/zuul/src/opendev.org
+
+#     - name: Set up the random StorPool volume prefix
+#       shell:
+#         cmd: /home/zuul/src/spfactory.storpool.com/sp-osci/tools/bin/sp_rand_init
+#       become: true
+
 - hosts: all
   tasks:
     - name: sp-processes
diff --git a/playbooks/sp-shadowed-job.yaml b/playbooks/sp-shadowed-job.yaml
new file mode 100644
index 0000000..d8e8bf4
--- /dev/null
+++ b/playbooks/sp-shadowed-job.yaml
@@ -0,0 +1,5 @@
+- hosts: localhost
+  tasks:
+    - name: Shadow a job
+      set_fact:
+        sp_some_kind_of_job: shadowed
diff --git a/resources/resources.yaml b/resources/resources.yaml
index bd5fd10..325e6f7 100644
--- a/resources/resources.yaml
+++ b/resources/resources.yaml
@@ -5,6 +5,320 @@
 # Adds trusted operator email to the config-core or config-ptl list.
 #
 resources:
+  projects:
+    openstack/cinder:
+      tenant: local
+      description: Something or something else, who knows, really
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/cinder:
+            connection: opendev.org
+            zuul/include: []
+    openstack/cinder-tempest-plugin:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/cinder-tempest-plugin:
+            connection: opendev.org
+            zuul/include: []
+    openstack/cinderlib:
+      tenant: local
+      description: Something or something else, who knows, really
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/cinderlib:
+            connection: opendev.org
+            zuul/include: []
+    openstack/devstack:
+      tenant: local
+      description: Imported DevStack job definitions
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/devstack:
+            connection: opendev.org
+            zuul/include: [job]
+#             zuul/include: []
+            zuul/shadow: [config]
+    openstack/devstack-gate:
+      tenant: local
+      description: Imported DevStack Gate job definitions
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/devstack-gate:
+            connection: opendev.org
+            zuul/include: [job]
+#             zuul/include: []
+            zuul/shadow: [config]
+    openstack/glance:
+      tenant: local
+      description: Imported Glance job definitions
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/glance:
+            connection: opendev.org
+            zuul/include: []
+    openstack/horizon:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/horizon:
+            connection: opendev.org
+            zuul/include: []
+    openstack/keystone:
+      tenant: local
+      description: Imported Keystone job definitions
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/keystone:
+            connection: opendev.org
+            zuul/include: []
+    openstack/neutron:
+      tenant: local
+      description: Imported Neutron job definitions
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/neutron:
+            connection: opendev.org
+            zuul/include: []
+    openstack/nova:
+      tenant: local
+      description: Imported Nova job definitions
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/nova:
+            connection: opendev.org
+            zuul/include: []
+    openstack/openstack-zuul-jobs:
+      tenant: local
+      description: Imported OpenStack generic Zuul job definitions
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/openstack-zuul-jobs:
+            connection: opendev.org
+            zuul/include: [job]
+            zuul/shadow: [config]
+    openstack/os-brick:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/os-brick:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.cache:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.cache:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.concurrency:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.concurrency:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.config:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.config:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.context:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.context:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.db:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.db:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.i18n:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.i18n:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.log:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.log:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.messaging:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.messaging:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.middleware:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.middleware:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.policy:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.policy:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.privsep:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.privsep:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.reports:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.reports:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.rootwrap:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.rootwrap:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.serialization:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.serialization:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.service:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.service:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.utils:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.utils:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.versionedobjects:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.versionedobjects:
+            connection: opendev.org
+            zuul/include: []
+    openstack/oslo.vmware:
+      tenant: local
+      description: Imported OpenStack project
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/oslo.vmware:
+            connection: opendev.org
+            zuul/include: []
+    openstack/placement:
+      tenant: local
+      description: Imported Placement job definitions
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/placement:
+            connection: opendev.org
+            zuul/include: []
+    openstack/requirements:
+      tenant: local
+      description: Imported OpenStack requirements job definitions
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/requirements:
+            connection: opendev.org
+            zuul/include: []
+    openstack/swift:
+      tenant: local
+      description: Imported Swift job definitions
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/swift:
+            connection: opendev.org
+            zuul/include: []
+    openstack/tempest:
+      tenant: local
+      description: Imported Swift job definitions
+      contacts:
+        - openstack-dev@storpool.com
+      source-repositories:
+        - openstack/tempest:
+            connection: opendev.org
+            zuul/include: [job]
+#             zuul/include: []
+            zuul/shadow: [config]
   repos:
     sp-osci:
       description: Tools and patches specific to the StorPool CI runs
diff --git a/zuul.d/sp-aaa-shadow.yaml b/zuul.d/sp-aaa-shadow.yaml
new file mode 100644
index 0000000..4b3e360
--- /dev/null
+++ b/zuul.d/sp-aaa-shadow.yaml
@@ -0,0 +1,214 @@
+# The shadow job itself
+
+- job:
+    name: sp-shadowed
+    run: playbooks/sp-shadowed-job.yaml
+    timeout: 300
+
+# For openstack/devstack
+
+- job:
+    name: devstack-gate-hooks
+    parent: sp-shadowed
+
+- job:
+    name: devstack-multinode
+    parent: sp-shadowed
+
+- job:
+    name: devstack-multinode-xenial
+    parent: sp-shadowed
+
+- job:
+    name: devstack-platform-bionic
+    parent: sp-shadowed
+
+- job:
+    name: devstack-platform-centos-7
+    parent: sp-shadowed
+
+- job:
+    name: devstack-platform-centos-8
+    parent: sp-shadowed
+
+- job:
+    name: devstack-platform-centos-8-stream
+    parent: sp-shadowed
+
+- job:
+    name: devstack-platform-centos-9-stream
+    parent: sp-shadowed
+
+- job:
+    name: devstack-platform-debian-bullseye
+    parent: sp-shadowed
+
+- job:
+    name: devstack-platform-fedora-latest
+    parent: sp-shadowed
+
+- job:
+    name: devstack-platform-fedora-latest-virt-preview
+    parent: sp-shadowed
+
+- job:
+    name: devstack-platform-openEuler-20.03-SP2
+    parent: sp-shadowed
+
+- job:
+    name: devstack-platform-opensuse-15
+    parent: sp-shadowed
+
+- job:
+    name: devstack-platform-opensuse-tumbleweed
+    parent: sp-shadowed
+
+- job:
+    name: devstack-platform-xenial
+    parent: sp-shadowed
+
+- job:
+    name: devstack-unit-tests
+    parent: sp-shadowed
+
+- job:
+    name: devstack-xenial
+    parent: sp-shadowed
+
+# For openstack/openstack-zuul-jobs
+
+- job:
+    name: announce-release
+    parent: sp-shadowed
+
+- job:
+    name: legacy-dsvm-base
+    parent: sp-shadowed
+
+- job:
+    name: legacy-dsvm-base-multinode
+    parent: sp-shadowed
+
+- job:
+    name: legacy-tempest-dsvm-multinode-full
+    parent: sp-shadowed
+
+- job:
+    name: openstack-tox-py39-with-neutron-lib-master
+    parent: sp-shadowed
+
+- job:
+    name: openstack-tox-py39-with-ovsdbapp-master
+    parent: sp-shadowed
+
+- job:
+    name: openstack-tox-with-oslo-master-base
+    parent: sp-shadowed
+
+- job:
+    name: openstack-zuul-jobs-linters
+    parent: sp-shadowed
+
+- job:
+    name: project-config-grafana
+    parent: sp-shadowed
+
+- job:
+    name: project-config-nodepool
+    parent: sp-shadowed
+
+- job:
+    name: tox-py35-on-zuul
+    parent: sp-shadowed
+
+# For openstack/tempest
+
+- job:
+    name: legacy-tempest-neutron-full-stable
+    parent: sp-shadowed
+
+- job:
+    name: tempest-full-centos-9-stream
+    parent: sp-shadowed
+
+- job:
+    name: tempest-full-oslo-master
+    parent: sp-shadowed
+
+- job:
+    name: tempest-full-py3
+    parent: sp-shadowed
+
+- job:
+    name: tempest-full-py3-ipv6
+    parent: sp-shadowed
+
+- job:
+    name: tempest-full-py3-opensuse15
+    parent: sp-shadowed
+
+- job:
+    name: tempest-multinode-full
+    parent: sp-shadowed
+
+# Nodesets
+
+# - nodeset:
+#     name: ubuntu-focal
+#     nodes:
+#       name: controller
+#       label: ubuntu-focal
+#     groups:
+#       - name: tempest
+#         nodes:
+#           - controller
+
+- nodeset:
+    name: centos-base
+    nodes:
+      name: controller
+      label: centos-base
+    groups:
+      - name: tempest
+        nodes:
+          - controller
+
+- nodeset:
+    name: openstack-single-node
+    nodes:
+      name: controller
+      label: centos-base
+    groups:
+      - name: tempest
+        nodes:
+          - controller
+
+- nodeset:
+    name: openstack-single-node-bionic
+    nodes:
+      name: controller
+      label: centos-base
+    groups:
+      - name: tempest
+        nodes:
+          - controller
+
+- nodeset:
+    name: openstack-single-node-focal
+    nodes:
+      name: controller
+      label: centos-base
+    groups:
+      - name: tempest
+        nodes:
+          - controller
+
+- nodeset:
+    name: devstack-single-node-centos-8-stream
+    nodes:
+      name: controller
+      label: centos-base
+    groups:
+      - name: tempest
+        nodes:
+          - controller
diff --git a/zuul.d/sp-cinder.yaml b/zuul.d/sp-cinder.yaml
index 5cc1b3c..c31ed0d 100644
--- a/zuul.d/sp-cinder.yaml
+++ b/zuul.d/sp-cinder.yaml
@@ -1,10 +1,15 @@
 - job:
-    name: sp-trivial-storprep
+    name: cinder-storpool-tempest
     pre-run: playbooks/sp-init.yaml
     run: playbooks/tempest-and-cinderlib-run.yaml
     post-run: playbooks/sp-cleanup.yaml
     required-projects:
+      # - opendev.org/openstack/cinderlib
+      # - opendev.org/openstack/os-brick
+      # - opendev.org/openstack/tempest
+      # - opendev.org/openstack/cinder-tempest-plugin
       - config
+      - sp-osci
     timeout: 3600
     nodeset:
       nodes:
@@ -12,8 +17,9 @@
           label: centos-base
 
 - project:
+    # name: openstack/cinder
     name: config
     experimental:
       jobs:
-        - sp-trivial-storprep:
+        - cinder-storpool-tempest:
             branches: master