diff --git a/.gitreview b/.gitreview
index 424fb37ef7..620d0c26ab 100644
--- a/.gitreview
+++ b/.gitreview
@@ -1,4 +1,4 @@
 [gerrit]
-host=review.openstack.org
+host=review.opendev.org
 port=29418
 project=openstack/ironic.git
diff --git a/playbooks/legacy/grenade-dsvm-ironic-multinode-multitenant/run.yaml b/playbooks/legacy/grenade-dsvm-ironic-multinode-multitenant/run.yaml
index 47779d4e8b..6a5e6a0417 100644
--- a/playbooks/legacy/grenade-dsvm-ironic-multinode-multitenant/run.yaml
+++ b/playbooks/legacy/grenade-dsvm-ironic-multinode-multitenant/run.yaml
@@ -43,7 +43,7 @@
         cmd: |
           cat << 'EOF' >> ironic-vars-early
             # Set this early so that we do not have to be as careful with builder ordering in jobs.
-          export GRENADE_PLUGINRC="enable_grenade_plugin ironic https://git.openstack.org/openstack/ironic"
+          export GRENADE_PLUGINRC="enable_grenade_plugin ironic https://opendev.org/openstack/ironic"
 
           EOF
         chdir: '{{ ansible_user_dir }}/workspace'
@@ -59,7 +59,7 @@
           sudo ovs-vsctl -- --may-exist add-br brbm
 
           cat << 'EOF' >> ironic-extra-vars
-            export PROJECTS="openstack-dev/grenade $PROJECTS"
+            export PROJECTS="openstack/grenade $PROJECTS"
             export DEVSTACK_GATE_GRENADE=pullup
             export DEVSTACK_GATE_OS_TEST_TIMEOUT=2600
             export DEVSTACK_GATE_TEMPEST_BAREMETAL_BUILD_TIMEOUT=1200
@@ -67,14 +67,14 @@
             export DEVSTACK_GATE_TLSPROXY=0
             export BUILD_TIMEOUT
 
-            export GRENADE_PLUGINRC+=$'\n'"enable_grenade_plugin networking-generic-switch https://git.openstack.org/openstack/networking-generic-switch"
+            export GRENADE_PLUGINRC+=$'\n'"enable_grenade_plugin networking-generic-switch https://opendev.org/openstack/networking-generic-switch"
 
             export DEVSTACK_GATE_TOPOLOGY="multinode"
 
             # networking-generic-switch requires sudo to execute ovs-vsctl commands
             export DEVSTACK_GATE_REMOVE_STACK_SUDO=0
             export PROJECTS="openstack/networking-generic-switch $PROJECTS"
-            export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin networking-generic-switch https://git.openstack.org/openstack/networking-generic-switch"
+            export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin networking-generic-switch https://opendev.org/openstack/networking-generic-switch"
             export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_USE_LINK_LOCAL=True"
             export DEVSTACK_LOCAL_CONFIG+=$'\n'"OVS_BRIDGE_MAPPINGS=mynetwork:brbm,public:br_ironic_vxlan"
             export DEVSTACK_LOCAL_CONFIG+=$'\n'"OVS_PHYSICAL_BRIDGE=brbm"
@@ -118,7 +118,7 @@
           export PROJECTS="openstack/ironic-python-agent $PROJECTS"
           export PROJECTS="openstack/ironic-tempest-plugin $PROJECTS"
           export PROJECTS="openstack/python-ironicclient $PROJECTS"
-          export PROJECTS="openstack/pyghmi $PROJECTS"
+          export PROJECTS="x/pyghmi $PROJECTS"
           export PROJECTS="openstack/virtualbmc $PROJECTS"
           export PYTHONUNBUFFERED=true
           export DEVSTACK_GATE_TEMPEST=1
@@ -155,7 +155,7 @@
           # Pull in the EARLY variables injected by the optional builders
           source ironic-vars-early
 
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin ironic https://git.openstack.org/openstack/ironic"
+          export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin ironic https://opendev.org/openstack/ironic"
 
           # Ensure the ironic-EXTRA-vars file exists
           touch ironic-extra-vars
diff --git a/playbooks/legacy/grenade-dsvm-ironic/run.yaml b/playbooks/legacy/grenade-dsvm-ironic/run.yaml
index 6fdf5a100e..abc770891a 100644
--- a/playbooks/legacy/grenade-dsvm-ironic/run.yaml
+++ b/playbooks/legacy/grenade-dsvm-ironic/run.yaml
@@ -21,7 +21,7 @@
         cmd: |
           cat << 'EOF' >> ironic-vars-early
             # Set this early so that we do not have to be as careful with builder ordering in jobs.
-          export GRENADE_PLUGINRC="enable_grenade_plugin ironic https://git.openstack.org/openstack/ironic"
+          export GRENADE_PLUGINRC="enable_grenade_plugin ironic https://opendev.org/openstack/ironic"
 
           EOF
         chdir: '{{ ansible_user_dir }}/workspace'
@@ -30,7 +30,7 @@
     - shell:
         cmd: |
           cat << 'EOF' >> ironic-extra-vars
-            export PROJECTS="openstack-dev/grenade $PROJECTS"
+            export PROJECTS="openstack/grenade $PROJECTS"
             export DEVSTACK_GATE_GRENADE=pullup
             export DEVSTACK_GATE_OS_TEST_TIMEOUT=2600
             export DEVSTACK_GATE_TEMPEST_BAREMETAL_BUILD_TIMEOUT=1200
@@ -65,7 +65,7 @@
           export PROJECTS="openstack/ironic-python-agent $PROJECTS"
           export PROJECTS="openstack/ironic-tempest-plugin $PROJECTS"
           export PROJECTS="openstack/python-ironicclient $PROJECTS"
-          export PROJECTS="openstack/pyghmi $PROJECTS"
+          export PROJECTS="x/pyghmi $PROJECTS"
           export PROJECTS="openstack/virtualbmc $PROJECTS"
           export PYTHONUNBUFFERED=true
           export DEVSTACK_GATE_TEMPEST=1
@@ -102,7 +102,7 @@
           # Pull in the EARLY variables injected by the optional builders
           source ironic-vars-early
 
-          export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin ironic https://git.openstack.org/openstack/ironic"
+          export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin ironic https://opendev.org/openstack/ironic"
 
           # Ensure the ironic-EXTRA-vars file exists
           touch ironic-extra-vars
diff --git a/playbooks/legacy/ironic-dsvm-base-multinode/pre.yaml b/playbooks/legacy/ironic-dsvm-base-multinode/pre.yaml
index 50fc638ff4..c2530b2bfa 100644
--- a/playbooks/legacy/ironic-dsvm-base-multinode/pre.yaml
+++ b/playbooks/legacy/ironic-dsvm-base-multinode/pre.yaml
@@ -11,12 +11,12 @@
           set -x
           cat > clonemap.yaml << EOF
           clonemap:
-            - name: openstack-infra/devstack-gate
+            - name: openstack/devstack-gate
               dest: devstack-gate
           EOF
           /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
-              https://git.openstack.org \
-              openstack-infra/devstack-gate
+              https://opendev.org \
+              openstack/devstack-gate
         executable: /bin/bash
         chdir: '{{ ansible_user_dir }}/workspace'
       environment: '{{ zuul | zuul_legacy_vars }}'
diff --git a/playbooks/legacy/ironic-dsvm-base/pre.yaml b/playbooks/legacy/ironic-dsvm-base/pre.yaml
index 50fc638ff4..c2530b2bfa 100644
--- a/playbooks/legacy/ironic-dsvm-base/pre.yaml
+++ b/playbooks/legacy/ironic-dsvm-base/pre.yaml
@@ -11,12 +11,12 @@
           set -x
           cat > clonemap.yaml << EOF
           clonemap:
-            - name: openstack-infra/devstack-gate
+            - name: openstack/devstack-gate
               dest: devstack-gate
           EOF
           /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
-              https://git.openstack.org \
-              openstack-infra/devstack-gate
+              https://opendev.org \
+              openstack/devstack-gate
         executable: /bin/bash
         chdir: '{{ ansible_user_dir }}/workspace'
       environment: '{{ zuul | zuul_legacy_vars }}'
diff --git a/zuul.d/ironic-jobs.yaml b/zuul.d/ironic-jobs.yaml
index acfc69d5a7..92331fbd4d 100644
--- a/zuul.d/ironic-jobs.yaml
+++ b/zuul.d/ironic-jobs.yaml
@@ -8,7 +8,7 @@
       - openstack/ironic
       - openstack/ironic-python-agent
       - openstack/ironic-tempest-plugin
-      - openstack/pyghmi
+      - x/pyghmi
       - openstack/virtualbmc
     irrelevant-files:
       - ^.*\.rst$
@@ -31,7 +31,7 @@
         FORCE_CONFIG_DRIVE: True
         INSTALL_TEMPEST: False # Don't install a tempest package globaly
         OVERRIDE_PUBLIC_BRIDGE_MTU: 1400
-        TEMPEST_PLUGINS: "'{{ ansible_user_dir }}/src/git.openstack.org/openstack/ironic-tempest-plugin'"
+        TEMPEST_PLUGINS: "'{{ ansible_user_dir }}/src/opendev.org/openstack/ironic-tempest-plugin'"
         VIRT_DRIVER: ironic
         BUILD_TIMEOUT: 720
         IRONIC_BAREMETAL_BASIC_OPS: True
@@ -52,7 +52,7 @@
         Q_AGENT: openvswitch
         Q_ML2_TENANT_NETWORK_TYPE: vxlan
       devstack_plugins:
-        ironic: https://git.openstack.org/openstack/ironic
+        ironic: https://opendev.org/openstack/ironic
       zuul_copy_output:
         '{{ devstack_base_dir }}/ironic-bm-logs': 'logs'
       devstack_services:
@@ -227,7 +227,7 @@
         SWIFT_ENABLE_TEMPURLS: True
         SWIFT_TEMPURL_KEY: secretkey
       devstack_plugins:
-        ironic-inspector: https://git.openstack.org/openstack/ironic-inspector
+        ironic-inspector: https://opendev.org/openstack/ironic-inspector
       devstack_services:
         s-account: True
         s-container: True
@@ -311,7 +311,7 @@
       - openstack/ironic
       - openstack/ironic-python-agent
       - openstack/ironic-tempest-plugin
-      - openstack/pyghmi
+      - x/pyghmi
       - openstack/virtualbmc
       - openstack/networking-generic-switch
     irrelevant-files:
@@ -373,12 +373,12 @@
         Q_PLUGIN: ml2
         SWIFT_ENABLE_TEMPURLS: True
         SWIFT_TEMPURL_KEY: secretkey
-        TEMPEST_PLUGINS: "'{{ ansible_user_dir }}/src/git.openstack.org/openstack/ironic-tempest-plugin'"
+        TEMPEST_PLUGINS: "'{{ ansible_user_dir }}/src/opendev.org/openstack/ironic-tempest-plugin'"
         TENANT_VLAN_RANGE: 100:150
         VIRT_DRIVER: ironic
       devstack_plugins:
-        ironic: https://git.openstack.org/openstack/ironic
-        networking-generic-switch: https://git.openstack.org/openstack/networking-generic-switch
+        ironic: https://opendev.org/openstack/ironic
+        networking-generic-switch: https://opendev.org/openstack/networking-generic-switch
       zuul_copy_output:
         '{{ devstack_base_dir }}/ironic-bm-logs': 'logs'
       devstack_services:
diff --git a/zuul.d/legacy-ironic-jobs.yaml b/zuul.d/legacy-ironic-jobs.yaml
index 97051a504d..e7965641ad 100644
--- a/zuul.d/legacy-ironic-jobs.yaml
+++ b/zuul.d/legacy-ironic-jobs.yaml
@@ -20,7 +20,7 @@
       - openstack/ironic-lib
       - openstack/ironic-python-agent
       - openstack/ironic-tempest-plugin
-      - openstack/pyghmi
+      - x/pyghmi
       - openstack/python-ironicclient
       - openstack/virtualbmc
     pre-run: playbooks/legacy/ironic-dsvm-base/pre.yaml
@@ -52,7 +52,7 @@
       - openstack/ironic-python-agent
       - openstack/ironic-tempest-plugin
       - openstack/networking-generic-switch
-      - openstack/pyghmi
+      - x/pyghmi
       - openstack/python-ironicclient
       - openstack/virtualbmc
     pre-run: playbooks/legacy/ironic-dsvm-base-multinode/pre.yaml
@@ -67,12 +67,12 @@
     run: playbooks/legacy/grenade-dsvm-ironic/run.yaml
     timeout: 10800
     required-projects:
-      - openstack-dev/grenade
-      - openstack-infra/devstack-gate
+      - openstack/grenade
+      - openstack/devstack-gate
       - openstack/ironic
       - openstack/ironic-lib
       - openstack/ironic-python-agent
-      - openstack/pyghmi
+      - x/pyghmi
       - openstack/python-ironicclient
       - openstack/virtualbmc
 
@@ -82,13 +82,13 @@
     run: playbooks/legacy/grenade-dsvm-ironic-multinode-multitenant/run.yaml
     timeout: 10800
     required-projects:
-      - openstack-dev/grenade
-      - openstack-infra/devstack-gate
+      - openstack/grenade
+      - openstack/devstack-gate
       - openstack/ironic
       - openstack/ironic-lib
       - openstack/ironic-python-agent
       - openstack/networking-generic-switch
-      - openstack/pyghmi
+      - x/pyghmi
       - openstack/python-ironicclient
       - openstack/virtualbmc