diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index 317759a2889ccad56c9a1a24080f89900fc3bef1..09b0109224aab81e1af10de0fcbd1e8992927767 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -925,7 +925,7 @@ neutron_ovn_distributed_fip: "no"
 #######################
 nova_backend_ceph: "no"
 nova_backend: "{{ 'rbd' if nova_backend_ceph | bool else 'default' }}"
-# Valid options are [ kvm, qemu, vmware, xenapi ]
+# Valid options are [ kvm, qemu, vmware ]
 nova_compute_virt_type: "kvm"
 nova_instance_datadir_volume: "nova_compute"
 nova_safety_upgrade: "no"
@@ -1009,18 +1009,6 @@ vmware_vcenter_host_username: "username"
 vmware_vcenter_cluster_name: "cluster-1"
 vmware_vcenter_insecure: "True"
 
-#######################################
-# XenAPI - Support XenAPI for XenServer
-#######################################
-# XenAPI driver use HIMN(Host Internal Management Network)
-# to communicate with XenServer host.
-xenserver_himn_ip: "169.254.0.1"
-xenserver_username: "root"
-xenserver_connect_protocol: "https"
-# File used to save XenAPI's facts variables formatted as json.
-xenapi_facts_root: "/etc/kolla/xenapi/"
-xenapi_facts_file: "facts.json"
-
 #############################################
 # MariaDB component-specific database details
 #############################################
diff --git a/ansible/roles/ceilometer/templates/ceilometer.conf.j2 b/ansible/roles/ceilometer/templates/ceilometer.conf.j2
index 9bb25ffdc2f92fccfc8dde9ea896b9f4564bceae..1f15481fa8ba8b4c4a3d42253b4c09a25997bc15 100644
--- a/ansible/roles/ceilometer/templates/ceilometer.conf.j2
+++ b/ansible/roles/ceilometer/templates/ceilometer.conf.j2
@@ -7,8 +7,6 @@ transport_url = {{ rpc_transport_url }}
 
 {% if nova_compute_virt_type == 'vmware' %}
 hypervisor_inspector = vsphere
-{% elif nova_compute_virt_type == 'xenapi' %}
-hypervisor_inspector = xenapi
 {% endif %}
 
 [service_credentials]
@@ -42,13 +40,6 @@ transport_url = {{ notify_transport_url }}
 policy_file = {{ ceilometer_policy_file }}
 {% endif %}
 
-{% if nova_compute_virt_type == 'xenapi' %}
-[xenapi]
-connection_url = {{ xenserver_connect_protocol }}://{{ xenserver_himn_ip }}
-connection_username = {{ xenserver_username }}
-connection_password = {{ xenserver_password }}
-{% endif %}
-
 [cache]
 backend = oslo_cache.memcache_pool
 enabled = True
diff --git a/ansible/roles/neutron/defaults/main.yml b/ansible/roles/neutron/defaults/main.yml
index 24a778e10f54a2bfd0db49d3b2fc15590a7d801f..70c2268e38ebac8a7a0c21032703f05bf44a7446 100644
--- a/ansible/roles/neutron/defaults/main.yml
+++ b/ansible/roles/neutron/defaults/main.yml
@@ -34,7 +34,7 @@ neutron_services:
       KOLLA_LEGACY_IPTABLES: "{{ neutron_legacy_iptables | bool | lower }}"
     host_in_groups: >-
       {{
-      ( (inventory_hostname in groups['compute'] and nova_compute_virt_type != 'xenapi')
+      ( inventory_hostname in groups['compute']
       or (enable_manila | bool and inventory_hostname in groups['manila-share'])
       or inventory_hostname in groups['neutron-dhcp-agent']
       or inventory_hostname in groups['neutron-l3-agent']
@@ -49,17 +49,6 @@ neutron_services:
       }}
     volumes: "{{ neutron_openvswitch_agent_default_volumes + neutron_openvswitch_agent_extra_volumes }}"
     dimensions: "{{ neutron_openvswitch_agent_dimensions }}"
-  neutron-openvswitch-agent-xenapi:
-    container_name: "neutron_openvswitch_agent_xenapi"
-    image: "{{ neutron_openvswitch_agent_image_full }}"
-    enabled: "{{ neutron_plugin_agent == 'openvswitch' and nova_compute_virt_type == 'xenapi' }}"
-    privileged: True
-    host_in_groups: >-
-      {{
-       inventory_hostname in groups['compute']
-      }}
-    volumes: "{{ neutron_openvswitch_agent_xenapi_default_volumes + neutron_openvswitch_agent_xenapi_extra_volumes }}"
-    dimensions: "{{ neutron_openvswitch_agent_xenapi_dimensions }}"
   neutron-linuxbridge-agent:
     container_name: "neutron_linuxbridge_agent"
     image: "{{  neutron_linuxbridge_agent_image_full }}"
@@ -239,7 +228,6 @@ neutron_openvswitch_agent_dimensions: "{{ neutron_agent_dimensions }}"
 neutron_server_dimensions: "{{ default_container_dimensions }}"
 neutron_bgp_dragent_dimensions: "{{ default_container_dimensions }}"
 neutron_infoblox_ipam_agent_dimensions: "{{ default_container_dimensions }}"
-neutron_openvswitch_agent_xenapi_dimensions: "{{ neutron_agent_dimensions }}"
 neutron_metering_agent_dimensions: "{{ neutron_agent_dimensions }}"
 ironic_neutron_agent_dimensions: "{{ default_container_dimensions }}"
 
@@ -313,14 +301,6 @@ neutron_infoblox_ipam_agent_default_volumes:
   - "/etc/localtime:/etc/localtime:ro"
   - "{{ '/etc/timezone:/etc/timezone:ro' if kolla_base_distro in ['debian', 'ubuntu'] else '' }}"
   - "kolla_logs:/var/log/kolla/"
-neutron_openvswitch_agent_xenapi_default_volumes:
-  - "{{ node_config_directory }}/neutron-openvswitch-agent-xenapi/:{{ container_config_directory }}/:ro"
-  - "/etc/localtime:/etc/localtime:ro"
-  - "{{ '/etc/timezone:/etc/timezone:ro' if kolla_base_distro in ['debian', 'ubuntu'] else '' }}"
-  - "/lib/modules:/lib/modules:ro"
-  - "/run/openvswitch:/run/openvswitch:shared"
-  - "kolla_logs:/var/log/kolla/"
-  - "{{ kolla_dev_repos_directory ~ '/neutron/neutron:/var/lib/kolla/venv/lib/python' ~ distro_python_version ~ '/site-packages/neutron' if neutron_dev_mode | bool else '' }}"
 neutron_metering_agent_default_volumes:
   - "{{ node_config_directory }}/neutron-metering-agent/:{{ container_config_directory }}/:ro"
   - "/etc/localtime:/etc/localtime:ro"
@@ -344,7 +324,6 @@ neutron_openvswitch_agent_extra_volumes: "{{ neutron_extra_volumes }}"
 neutron_server_extra_volumes: "{{ neutron_extra_volumes }}"
 neutron_bgp_dragent_extra_volumes: "{{ neutron_extra_volumes }}"
 neutron_infoblox_ipam_agent_extra_volumes: "{{ neutron_extra_volumes }}"
-neutron_openvswitch_agent_xenapi_extra_volumes: "{{ neutron_extra_volumes }}"
 neutron_metering_agent_extra_volumes: "{{ neutron_extra_volumes }}"
 ironic_neutron_agent_extra_volumes: "{{ neutron_extra_volumes }}"
 
diff --git a/ansible/roles/neutron/handlers/main.yml b/ansible/roles/neutron/handlers/main.yml
index af364f994092d91afc0b31702e48067d55c1296b..e4360481424f3e5da7c87022d069193ba4f62556 100644
--- a/ansible/roles/neutron/handlers/main.yml
+++ b/ansible/roles/neutron/handlers/main.yml
@@ -32,22 +32,6 @@
   when:
     - kolla_action != "config"
 
-- name: Restart neutron-openvswitch-agent-xenapi container
-  vars:
-    service_name: "neutron-openvswitch-agent-xenapi"
-    service: "{{ neutron_services[service_name] }}"
-  become: true
-  kolla_docker:
-    action: "recreate_or_restart_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ service.container_name }}"
-    image: "{{ service.image }}"
-    volumes: "{{ service.volumes|reject('equalto', '')|list }}"
-    dimensions: "{{ service.dimensions }}"
-    privileged: "{{ service.privileged | default(False) }}"
-  when:
-    - kolla_action != "config"
-
 - name: Restart fake neutron-openvswitch-agent container
   vars:
     service_name: "neutron-openvswitch-agent"
diff --git a/ansible/roles/neutron/tasks/config.yml b/ansible/roles/neutron/tasks/config.yml
index 9a8c12c6223792989e3a1c670dab0e0e5be0c30b..ddb35d63fbe68e443fda784bef95d65306e8a4c4 100644
--- a/ansible/roles/neutron/tasks/config.yml
+++ b/ansible/roles/neutron/tasks/config.yml
@@ -83,7 +83,6 @@
       - "neutron-ovn-metadata-agent"
       - "neutron-metering-agent"
       - "neutron-openvswitch-agent"
-      - "neutron-openvswitch-agent-xenapi"
       - "neutron-server"
       - "neutron-bgp-dragent"
       - "neutron-infoblox-ipam-agent"
@@ -189,28 +188,6 @@
   notify:
     - "Restart {{ service_name }} container"
 
-- name: Copying over openvswitch_agent.ini for XenAPI
-  become: true
-  vars:
-    service_name: "neutron-openvswitch-agent-xenapi"
-    os_xenapi_variables: "{{ lookup('file', xenapi_facts_root + '/' + inventory_hostname + '/' + xenapi_facts_file) | from_json }}"
-  merge_configs:
-    sources:
-      - "{{ role_path }}/templates/openvswitch_agent_xenapi.ini.j2"
-      - "{{ node_custom_config }}/neutron/openvswitch_agent_xenapi.ini"
-      - "{{ node_custom_config }}/neutron/{{ inventory_hostname }}/openvswitch_agent_xenapi.ini"
-      - "{{ node_custom_config }}/neutron/{{ service_name }}/openvswitch_agent_xenapi.ini"
-      # TODO(mnasiadka): Remove in V - left to not break existing deployments
-      - "{{ node_custom_config }}/neutron/ml2_conf.ini"
-      - "{{ node_custom_config }}/neutron/{{ inventory_hostname }}/ml2_conf.ini"
-    dest: "{{ node_config_directory }}/{{ service_name }}/openvswitch_agent.ini"
-    mode: "0660"
-  when:
-    - neutron_services[service_name].enabled | bool
-    - neutron_services[service_name].host_in_groups | bool
-  notify:
-    - "Restart {{ service_name }} container"
-
 - name: Copying over sriov_agent.ini
   vars:
     service_name: "neutron-sriov-agent"
diff --git a/ansible/roles/neutron/templates/openvswitch_agent_xenapi.ini.j2 b/ansible/roles/neutron/templates/openvswitch_agent_xenapi.ini.j2
deleted file mode 100644
index 4e32acefc994de0bfe5ab780c62379f4501cdbd3..0000000000000000000000000000000000000000
--- a/ansible/roles/neutron/templates/openvswitch_agent_xenapi.ini.j2
+++ /dev/null
@@ -1,25 +0,0 @@
-[DEFAULT]
-# Use service_name as the log file name for neutron-openvswitch-agent-xenapi,
-# so that it will use a different log file from neutron-openvswitch-agent.
-log_file = {{ service_name }}.log
-host = {{ os_xenapi_variables.dom0_hostname }}
-
-[agent]
-root_helper_daemon = xenapi_root_helper
-root_helper =
-
-[ovs]
-of_listen_address = {{ os_xenapi_variables.domu_himn_ip }}
-ovsdb_connection = tcp:{{ xenserver_himn_ip }}:{{ ovsdb_port }}
-{% if computes_need_external_bridge | bool %}
-bridge_mappings = {% for interface in neutron_external_interface.split(',') %}physnet{{ loop.index0 + 1 }}:{{ os_xenapi_variables.domu_vifs[interface]["bridge"] }}{% if not loop.last %},{% endif %}{% endfor %}
-{% else %}
-bridge_mappings =
-{% endif %}
-
-local_ip = {% for ip in os_xenapi_variables.dom0_ipv4s %}{% if ip.bridge == os_xenapi_variables.domu_vifs[tunnel_interface]['bridge'] %}{{ ip.address }}{% endif %} {% endfor %}
-
-[xenapi]
-connection_password = {{ xenserver_password }}
-connection_username = {{ xenserver_username }}
-connection_url = {{ xenserver_connect_protocol }}://{{ xenserver_himn_ip }}
diff --git a/ansible/roles/nova-cell/tasks/bootstrap_xenapi.yml b/ansible/roles/nova-cell/tasks/bootstrap_xenapi.yml
deleted file mode 100644
index f3a5e2febe4db92b28f7fadd141c2b5049c1c9a7..0000000000000000000000000000000000000000
--- a/ansible/roles/nova-cell/tasks/bootstrap_xenapi.yml
+++ /dev/null
@@ -1,26 +0,0 @@
----
-- name: Install package python-os-xenapi
-  package:
-    name: python-os-xenapi
-    state: present
-  become: True
-
-- name: Ensure XenAPI root path
-  file:
-    path: "{{ xenapi_facts_root }}"
-    state: directory
-    mode: "0770"
-  become: True
-
-- name: Bootstrap XenAPI compute node
-  vars:
-    xenapi_facts_path: "{{ xenapi_facts_root + '/' + xenapi_facts_file }}"
-  command: xenapi_bootstrap -i {{ xenserver_himn_ip }} -u {{ xenserver_username }} -p {{ xenserver_password }} -f {{ xenapi_facts_path }}
-  become: True
-
-- name: Fetching XenAPI facts file
-  fetch:
-    src: "{{ xenapi_facts_root + '/' + xenapi_facts_file }}"
-    dest: "{{ xenapi_facts_root + '/' + inventory_hostname + '/' }}"
-    flat: yes
-  become: True
diff --git a/ansible/roles/nova-cell/tasks/config.yml b/ansible/roles/nova-cell/tasks/config.yml
index dd0988ba0af548e3fa7407af10c929cdef960946..c67afde709566b0a5eddf59a9fc14bd0f767f75e 100644
--- a/ansible/roles/nova-cell/tasks/config.yml
+++ b/ansible/roles/nova-cell/tasks/config.yml
@@ -53,13 +53,6 @@
   notify:
     - "Restart {{ item.key }} container"
 
-- name: Set XenAPI facts
-  set_fact:
-    xenapi_facts: "{{ lookup('file', xenapi_facts_root + '/' + inventory_hostname + '/' + xenapi_facts_file) | from_json }}"
-  when:
-    - nova_compute_virt_type == 'xenapi'
-    - inventory_hostname in groups[nova_cell_compute_group]
-
 - name: Copying over nova.conf
   become: true
   vars:
diff --git a/ansible/roles/nova-cell/tasks/deploy.yml b/ansible/roles/nova-cell/tasks/deploy.yml
index f5853e13f2b5c2d2c96ef015618343959a8516fe..cb7f1495d5b17a4451cb0e8fc395371c9ad32327 100644
--- a/ansible/roles/nova-cell/tasks/deploy.yml
+++ b/ansible/roles/nova-cell/tasks/deploy.yml
@@ -1,9 +1,4 @@
 ---
-- include_tasks: bootstrap_xenapi.yml
-  when:
-    - inventory_hostname in groups[nova_cell_compute_group]
-    - nova_compute_virt_type == "xenapi"
-
 - include_tasks: clone.yml
   when: nova_dev_mode | bool
 
diff --git a/ansible/roles/nova-cell/templates/nova.conf.j2 b/ansible/roles/nova-cell/templates/nova.conf.j2
index 025ee75a6073da0c2b671f3fd6b87b89d01724d0..b9ae2fac86aaf4d6addd7283823cb5f6d054ebaa 100644
--- a/ansible/roles/nova-cell/templates/nova.conf.j2
+++ b/ansible/roles/nova-cell/templates/nova.conf.j2
@@ -19,11 +19,6 @@ host = {{ ansible_hostname }}_{{ service_name }}
 compute_driver = fake.FakeDriver
 {% elif nova_compute_virt_type == 'vmware' %}
 compute_driver = vmwareapi.VMwareVCDriver
-{% elif nova_compute_virt_type == 'xenapi' %}
-compute_driver = xenapi.XenAPIDriver
-{% if service_name == 'nova-compute' %}
-host = xenapi_facts['dom0_hostname']
-{% endif %}
 {% else %}
 compute_driver = libvirt.LibvirtDriver
 {% endif %}
@@ -230,14 +225,6 @@ auth_endpoint = {{ keystone_internal_url }}
 cafile = {{ openstack_cacert }}
 {% endif %}
 
-{% if nova_compute_virt_type == "xenapi" %}
-[xenserver]
-ovs_integration_bridge = br-int
-connection_password = {{ xenserver_password }}
-connection_username = {{ xenserver_username }}
-connection_url = {{ xenserver_connect_protocol }}://{{ xenserver_himn_ip }}
-{% endif %}
-
 # Cell specific settings from DevStack:
 # https://opendev.org/openstack/devstack/src/branch/master/lib/nova#L874
 {% if service_name.startswith("nova-compute") and enable_cells | bool %}
diff --git a/doc/source/reference/compute/index.rst b/doc/source/reference/compute/index.rst
index 05e2de1ada29bb564ed7634efbc9acfcf36554a7..5dd9b175d9e804b384857ecee372ba18e588e882 100644
--- a/doc/source/reference/compute/index.rst
+++ b/doc/source/reference/compute/index.rst
@@ -3,11 +3,11 @@ Compute
 =======
 
 This section describes configuring nova hypervisors and
-compute services like HyperV, XenServer and so on.
+compute services like HyperV and so on.
 
 .. note::
 
-   Hyper-V, VMware, and XenAPI support have been deprecated and will
+   Hyper-V and VMware support have been deprecated and will
    be removed in the Victoria cycle.
 
 .. toctree::
@@ -21,5 +21,4 @@ compute services like HyperV, XenServer and so on.
    nova-guide
    qinling-guide
    vmware-guide
-   xenserver-guide
    zun-guide
diff --git a/doc/source/reference/compute/masakari-guide.rst b/doc/source/reference/compute/masakari-guide.rst
index bd85b6500bd2200bb310379092dd44f4b19e6c20..d24baf156daa4757c64802dac228603dcb58b54e 100644
--- a/doc/source/reference/compute/masakari-guide.rst
+++ b/doc/source/reference/compute/masakari-guide.rst
@@ -16,19 +16,3 @@ provides an API service to manage and control the automated rescue mechanism.
 Kolla deploys Masakari API, Masakari Engine and Masakari Instance Monitor
 containers which are the main Masakari components only if ``enable_masakari``
 is set in ``/etc/kolla/globals.yml``.
-
-
-Connection URI to libvirtd
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-By default ``masakari-instancemonitor`` will connect to ``libvirt`` daemon
-using ``qemu+tcp://`` connection URI to get events of KVM-based virtual
-machines.
-
-The setting is overridable using custom config, put the content in
-``/etc/kolla/config/masakari/masakari-monitors.conf``.
-
-.. code-block:: ini
-
-   [libvirt]
-   connection_uri = "xen://{{ migration_interface_address | put_address_in_context('url') }}/system"
diff --git a/doc/source/reference/compute/nova-guide.rst b/doc/source/reference/compute/nova-guide.rst
index 58558a6bb90c0b9648f020b234c3c6d4b72af31c..b53635cc58ad17f6636076b6cd8f3a7580ddb1cb 100644
--- a/doc/source/reference/compute/nova-guide.rst
+++ b/doc/source/reference/compute/nova-guide.rst
@@ -13,8 +13,8 @@ Virtualisation Drivers
 ======================
 
 The virtualisation driver may be selected via ``nova_compute_virt_type`` in
-``globals.yml``. Supported options are ``qemu``, ``kvm``, ``vmware``, and
-``xenapi``. The default is ``kvm``.
+``globals.yml``. Supported options are ``qemu``, ``kvm``, and ``vmware``.
+The default is ``kvm``.
 
 HyperV
 ------
@@ -41,16 +41,6 @@ VMware
 Information on the VMware-based driver ``vmware`` can be found in
 :doc:`vmware-guide`.
 
-XenServer
----------
-
-.. note::
-
-   XenAPI support has been deprecated and will be removed in the Victoria cycle.
-
-Information on the XenServer-based driver ``xenapi`` can be found in
-:doc:`xenserver-guide`.
-
 Bare Metal
 ----------
 
diff --git a/doc/source/reference/compute/xenserver-guide.rst b/doc/source/reference/compute/xenserver-guide.rst
deleted file mode 100644
index 2d5f26cd3147df407e320ba66627c61c4f2117e0..0000000000000000000000000000000000000000
--- a/doc/source/reference/compute/xenserver-guide.rst
+++ /dev/null
@@ -1,103 +0,0 @@
-.. _XenServer-guide:
-
-======================================
-XenServer - Nova Virtualisation Driver
-======================================
-
-.. note::
-
-   XenAPI support has been deprecated and will be removed in the Victoria cycle.
-
-Overview
-========
-
-Kolla can deploy the OpenStack services on XenServer hosts by choosing
-``xenapi`` as the compute virt driver.
-
-In XenServer, there is a privileged domain which is known as dom0;
-and it can run a number of un-privileged domains which are known as
-domUs or VMs.
-
-Most OpenStack services (e.g. Keystone, Glance, Horizon) can run either
-in the XenServer VMs or in separate baremetal hosts, but some services
-(which make direct use of the hypervisor) must run in the XenServer VMs.
-These services will interact with the XenServer host via XenAPI to perform
-privileged operations. See the following list for such kind of services:
-
-* ``nova-compute``
-
-* ``neutron-openvswitch-agent-xenapi``
-
-* ``ceilometer-compute``
-
-
-.. note::
-
-   At the moment, only CentOS 7.x has been tested.
-
-Preparation for compute node on XenServer hosts
-===============================================
-
-We need some bootstrap tasks particularly for XenAPI compute nodes. The
-tasks are implemented in the package of ``python-os-xenapi`` and exposed
-to kolla-ansible via a single command - ``xenapi_bootstrap``. This package
-is contained in the ``RDO CloudSIG repository`` [`RDO repos`_] and will be
-installed on compute nodes at nova deployment. So we need ensure this
-repository is reachable from the compute nodes or cache the repository
-locally.
-
-Create a compute VM on each XenServer host which will be used to boot
-instances on. The VM must meet the common requirements declared by
-kolla-ansible for KVM/QEMU deployment.
-
-Additionally you should install PV driver in the VM [`XenServer documents`_];
-and create the HIMN(Host Internal Management Network) for each compute VM
-by following these steps:
-
-1. In XenCenter, from the menu choose "View ->  Hidden Objects";
-
-2. You will see HIMN in the host's 'Networking' page;
-
-3. Create an interface on HIMN for the compute VM.
-
-The remaining instructions are just the same as the preparations for
-KVM/QEMU deployment.
-
-Deployment
-----------
-
-Enable the virt type ``xenapi`` and configure connection options in
-``/etc/kolla/globals.yml``:
-
-.. code-block:: yaml
-
-    nova_compute_virt_type: "xenapi"
-    xenserver_username: "root"
-    xenserver_connect_protocol: "https"
-
-.. note::
-
-    When using ``https`` as the connection protocol, please refer XenServer
-    user document to setup the signed SSL certificates to allow the secure
-    communications between dom0 and domU. Otherwise, please use ``http`` for
-    self-signed certificates.
-
-You also need set the password for xenserver_username in
-``/etc/kolla/passwords.yml``:
-
-.. code-block:: yaml
-
-    xenserver_password: "root_password"
-
-Then you can start kolla-ansible deployment just following the
-:doc:`/user/quickstart`.
-
-References
-==========
-
-For more information on XenAPI OpenStack, see
-:nova-doc:`XenAPI OpenStack <admin/configuration/hypervisor-xen-api.html>`
-
-.. _RDO repos: https://www.rdoproject.org/what/repos/
-
-.. _XenServer documents: https://docs.citrix.com/en-us/xenserver/current-release.html
diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml
index bc74b82efab564b3cd68b90f3bee8cf7fecc1da8..f67fa2a8ea4244fe393c0c6b24ac3bdb397f6fea 100644
--- a/etc/kolla/globals.yml
+++ b/etc/kolla/globals.yml
@@ -510,7 +510,7 @@
 ########################
 #nova_backend_ceph: "no"
 
-# Valid options are [ qemu, kvm, vmware, xenapi ]
+# Valid options are [ qemu, kvm, vmware ]
 #nova_compute_virt_type: "kvm"
 
 # The number of fake driver per compute node
@@ -635,18 +635,6 @@
 #vmware_vcenter_name:
 #vmware_vcenter_cluster_name:
 
-#######################################
-# XenAPI - Support XenAPI for XenServer
-#######################################
-
-# NOTE: XenAPI support has been deprecated and will be removed in the Victoria cycle.
-
-# XenAPI driver use HIMN(Host Internal Management Network)
-# to communicate with XenServer host.
-#xenserver_himn_ip:
-#xenserver_username:
-#xenserver_connect_protocol:
-
 ############
 # Prometheus
 ############
diff --git a/etc/kolla/passwords.yml b/etc/kolla/passwords.yml
index f4d4928c17988b32fe1713a50ad1aa261ebad392..6c911ffeaaf0f82793689dfb9e9d2c1ad6a7c150 100644
--- a/etc/kolla/passwords.yml
+++ b/etc/kolla/passwords.yml
@@ -254,11 +254,6 @@ etcd_cluster_token:
 ####################
 redis_master_password:
 
-################
-# XenAPI options
-################
-xenserver_password:
-
 ####################
 # Prometheus options
 ####################
diff --git a/releasenotes/notes/remove-xenapi-94ea90ffd61bae20.yaml b/releasenotes/notes/remove-xenapi-94ea90ffd61bae20.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..9034985e6a8dadac98b025f1a01b73c18bf7ca24
--- /dev/null
+++ b/releasenotes/notes/remove-xenapi-94ea90ffd61bae20.yaml
@@ -0,0 +1,4 @@
+---
+upgrade:
+  - |
+    Support for deploying with XenAPI integrations has been removed.