diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index ef60395b26..9e7b6ac861 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -601,7 +601,6 @@ enable_horizon_trove: "{{ enable_trove | bool }}"
enable_horizon_vitrage: "{{ enable_vitrage | bool }}"
enable_horizon_watcher: "{{ enable_watcher | bool }}"
enable_horizon_zun: "{{ enable_zun | bool }}"
-enable_hyperv: "no"
enable_influxdb: "{{ enable_monasca | bool or (enable_cloudkitty | bool and cloudkitty_storage_backend == 'influxdb') }}"
enable_ironic: "no"
enable_ironic_ipxe: "no"
diff --git a/ansible/inventory/all-in-one b/ansible/inventory/all-in-one
index 80bf8f783b..28dd2fda4e 100644
--- a/ansible/inventory/all-in-one
+++ b/ansible/inventory/all-in-one
@@ -75,16 +75,6 @@ control
[haproxy:children]
network
-[hyperv]
-#hyperv_host
-
-[hyperv:vars]
-#ansible_user=user
-#ansible_password=password
-#ansible_port=5986
-#ansible_connection=winrm
-#ansible_winrm_server_cert_validation=ignore
-
[mariadb:children]
control
diff --git a/ansible/inventory/multinode b/ansible/inventory/multinode
index 9a4ec07058..d2e11d9091 100644
--- a/ansible/inventory/multinode
+++ b/ansible/inventory/multinode
@@ -99,16 +99,6 @@ control
[haproxy:children]
network
-[hyperv]
-#hyperv_host
-
-[hyperv:vars]
-#ansible_user=user
-#ansible_password=password
-#ansible_port=5986
-#ansible_connection=winrm
-#ansible_winrm_server_cert_validation=ignore
-
[mariadb:children]
control
diff --git a/ansible/roles/neutron/defaults/main.yml b/ansible/roles/neutron/defaults/main.yml
index 18322779c8..8d5874c450 100644
--- a/ansible/roles/neutron/defaults/main.yml
+++ b/ansible/roles/neutron/defaults/main.yml
@@ -357,12 +357,10 @@ mechanism_drivers:
enabled: "{{ neutron_plugin_agent == 'linuxbridge' }}"
- name: "openvswitch"
enabled: "{{ neutron_plugin_agent == 'openvswitch' }}"
- - name: "hyperv"
- enabled: "{{ enable_hyperv | bool }}"
- name: "baremetal"
enabled: "{{ enable_ironic_neutron_agent | bool }}"
- name: "l2population"
- enabled: "{{ not enable_hyperv | bool and neutron_plugin_agent != 'ovn' }}"
+ enabled: "{{ neutron_plugin_agent != 'ovn' }}"
- name: "ovn"
enabled: "{{ neutron_plugin_agent == 'ovn' }}"
@@ -373,13 +371,13 @@ neutron_mechanism_drivers: "{{ mechanism_drivers | selectattr('enabled', 'equalt
####################
extension_drivers:
- name: "qos"
- enabled: "{{ enable_neutron_qos | bool and not enable_hyperv | bool }}"
+ enabled: "{{ enable_neutron_qos | bool }}"
- name: "port_security"
enabled: true
- name: "dns"
- enabled: "{{ enable_designate | bool and not enable_hyperv | bool }}"
+ enabled: "{{ enable_designate | bool }}"
- name: "sfc"
- enabled: "{{ enable_neutron_sfc | bool and not enable_hyperv | bool }}"
+ enabled: "{{ enable_neutron_sfc | bool }}"
neutron_extension_drivers: "{{ extension_drivers | selectattr('enabled', 'equalto', true) | list }}"
diff --git a/ansible/roles/nova-hyperv/defaults/main.yml b/ansible/roles/nova-hyperv/defaults/main.yml
deleted file mode 100644
index e927c5d555..0000000000
--- a/ansible/roles/nova-hyperv/defaults/main.yml
+++ /dev/null
@@ -1,21 +0,0 @@
----
-project_name: "nova-hyperv"
-
-msi_dir: "%SYSTEMDRIVE%\\OpenStack\\MSIs"
-log_dir: "%SYSTEMDRIVE%\\OpenStack\\Log"
-freerdp_msi_url: "https://cloudbase.it/downloads/FreeRDPWebConnect.msi"
-hyperv_compute_msi: "HyperVNovaCompute.msi"
-freerdp_webconnect_msi: "FreeRDPWebConnect.msi"
-
-####################
-# Notification
-####################
-nova_notification_topics:
- - name: notifications
- enabled: "{{ enable_ceilometer | bool or enable_searchlight | bool or enable_neutron_infoblox_ipam_agent | bool }}"
- - name: notifications_designate
- enabled: "{{ enable_designate | bool }}"
- - name: vitrage_notifications
- enabled: "{{ enable_vitrage | bool }}"
-
-nova_enabled_notification_topics: "{{ nova_notification_topics | selectattr('enabled', 'equalto', true) | list }}"
diff --git a/ansible/roles/nova-hyperv/handlers/main.yml b/ansible/roles/nova-hyperv/handlers/main.yml
deleted file mode 100644
index f6cd425d46..0000000000
--- a/ansible/roles/nova-hyperv/handlers/main.yml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-- name: Restart nova-compute
- win_service:
- name: nova-compute
- state: restarted
-
-- name: Restart neutron-hyperv-agent
- win_service:
- name: neutron-hyperv-agent
- state: restarted
-
-- name: Restart FreeRDP-WebConnect
- win_service:
- name: wsgate
- state: restarted
diff --git a/ansible/roles/nova-hyperv/tasks/check.yml b/ansible/roles/nova-hyperv/tasks/check.yml
deleted file mode 100644
index ed97d539c0..0000000000
--- a/ansible/roles/nova-hyperv/tasks/check.yml
+++ /dev/null
@@ -1 +0,0 @@
----
diff --git a/ansible/roles/nova-hyperv/tasks/config.yml b/ansible/roles/nova-hyperv/tasks/config.yml
deleted file mode 100644
index cfe3b73ed1..0000000000
--- a/ansible/roles/nova-hyperv/tasks/config.yml
+++ /dev/null
@@ -1,39 +0,0 @@
----
-- name: Create log directory
- win_command: "cmd /c mkdir {{ log_dir }}"
- args:
- creates: "{{ log_dir }}"
-
-- name: Configure nova-compute
- win_template:
- src: "{{ item }}"
- dest: "%PROGRAMFILES%\\Cloudbase Solutions\\OpenStack\\Nova\\etc\\nova.conf"
- with_first_found:
- - "{{ node_custom_config }}/nova-hyperv/{{ inventory_hostname }}/nova_hyperv.conf"
- - "{{ node_custom_config }}/nova-hyperv/nova_hyperv.conf"
- - "nova_hyperv.conf.j2"
- notify: Restart nova-compute
-
-- name: Configure neutron-hyperv-agent
- win_template:
- src: "{{ item }}"
- dest: "%PROGRAMFILES%\\Cloudbase Solutions\\OpenStack\\Nova\\etc\\neutron_hyperv_agent.conf"
- with_first_found:
- - "{{ node_custom_config }}/nova-hyperv/{{ inventory_hostname }}/neutron_hyperv_agent.conf"
- - "{{ node_custom_config }}/nova-hyperv/neutron_hyperv_agent.conf"
- - "neutron_hyperv_agent.conf.j2"
- notify: Restart neutron-hyperv-agent
-
-- name: Configure FreeRDP-WebConnect
- win_template:
- src: "{{ item }}"
- dest: "%PROGRAMFILES%\\Cloudbase Solutions\\FreeRDP-WebConnect\\etc\\wsgate.ini"
- with_first_found:
- - "{{ node_custom_config }}/nova-hyperv/{{ inventory_hostname }}/wsgate.ini"
- - "{{ node_custom_config }}/nova-hyperv/wsgate.ini"
- - "wsgate.ini.j2"
- notify: Restart FreeRDP-WebConnect
-
-- include_tasks: copy-certs.yml
- when:
- - kolla_copy_ca_into_containers | bool
diff --git a/ansible/roles/nova-hyperv/tasks/copy-certs.yml b/ansible/roles/nova-hyperv/tasks/copy-certs.yml
deleted file mode 100644
index ee01137018..0000000000
--- a/ansible/roles/nova-hyperv/tasks/copy-certs.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-- name: "Copy certificates and keys for {{ project_name }}"
- import_role:
- role: service-cert-copy
- vars:
- project_services: "{{ nova_hyperv_services }}"
diff --git a/ansible/roles/nova-hyperv/tasks/deploy.yml b/ansible/roles/nova-hyperv/tasks/deploy.yml
deleted file mode 100644
index 9e64c36929..0000000000
--- a/ansible/roles/nova-hyperv/tasks/deploy.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-- include_tasks: install.yml
- when: inventory_hostname in groups['hyperv']
-
-- include_tasks: config.yml
- when: inventory_hostname in groups['hyperv']
diff --git a/ansible/roles/nova-hyperv/tasks/install.yml b/ansible/roles/nova-hyperv/tasks/install.yml
deleted file mode 100644
index c875c94015..0000000000
--- a/ansible/roles/nova-hyperv/tasks/install.yml
+++ /dev/null
@@ -1,26 +0,0 @@
----
-- name: Create MSIs download directory
- win_command: "cmd /c mkdir {{ msi_dir }}"
- args:
- creates: "{{ msi_dir }}"
-
-- name: Download Nova and FreeRDP-WebConnect MSIs
- win_get_url:
- url: "{{ item.name }}"
- dest: "{{ item.destination }}"
- force: no
- with_items:
- - { name: "{{ nova_msi_url }}", destination: "{{ msi_dir }}\\{{ hyperv_compute_msi }}" }
- - { name: "{{ freerdp_msi_url }}", destination: "{{ msi_dir }}\\{{ freerdp_webconnect_msi }}" }
-
-- name: Install the Compute MSI
- win_command: "msiexec /i {{ hyperv_compute_msi }} SKIPNOVACONF=0"
- args:
- chdir: "{{ msi_dir }}"
- creates: "%PROGRAMFILES%\\Cloudbase Solutions\\OpenStack\\Nova\\bin"
-
-- name: Install the FreeRDP-WebConnect MSI
- win_command: "msiexec.exe /i {{ freerdp_webconnect_msi }}"
- args:
- chdir: "{{ msi_dir }}"
- creates: "%PROGRAMFILES%\\Cloudbase Solutions\\FreeRDP-WebConnect\\Binaries"
diff --git a/ansible/roles/nova-hyperv/tasks/main.yml b/ansible/roles/nova-hyperv/tasks/main.yml
deleted file mode 100644
index 1fb862db52..0000000000
--- a/ansible/roles/nova-hyperv/tasks/main.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-- name: Warn about deprecation
- debug:
- msg: >
- Nova Hyper-V deployment role is deprecated in Ussuri and will be removed
- in Victoria. Please read release notes for more background.
-
-- include_tasks: "{{ kolla_action }}.yml"
diff --git a/ansible/roles/nova-hyperv/tasks/precheck.yml b/ansible/roles/nova-hyperv/tasks/precheck.yml
deleted file mode 100644
index ed97d539c0..0000000000
--- a/ansible/roles/nova-hyperv/tasks/precheck.yml
+++ /dev/null
@@ -1 +0,0 @@
----
diff --git a/ansible/roles/nova-hyperv/tasks/pull.yml b/ansible/roles/nova-hyperv/tasks/pull.yml
deleted file mode 100644
index ed97d539c0..0000000000
--- a/ansible/roles/nova-hyperv/tasks/pull.yml
+++ /dev/null
@@ -1 +0,0 @@
----
diff --git a/ansible/roles/nova-hyperv/tasks/reconfigure.yml b/ansible/roles/nova-hyperv/tasks/reconfigure.yml
deleted file mode 100644
index f670a5b78d..0000000000
--- a/ansible/roles/nova-hyperv/tasks/reconfigure.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- include_tasks: deploy.yml
diff --git a/ansible/roles/nova-hyperv/tasks/stop.yml b/ansible/roles/nova-hyperv/tasks/stop.yml
deleted file mode 100644
index ed97d539c0..0000000000
--- a/ansible/roles/nova-hyperv/tasks/stop.yml
+++ /dev/null
@@ -1 +0,0 @@
----
diff --git a/ansible/roles/nova-hyperv/templates/neutron_hyperv_agent.conf.j2 b/ansible/roles/nova-hyperv/templates/neutron_hyperv_agent.conf.j2
deleted file mode 100644
index a15e0edd4b..0000000000
--- a/ansible/roles/nova-hyperv/templates/neutron_hyperv_agent.conf.j2
+++ /dev/null
@@ -1,26 +0,0 @@
-[DEFAULT]
-debug = {{ openstack_logging_debug }}
-control_exchange = neutron
-rpc_backend = rabbit
-log_dir = C:\OpenStack\Log
-log_file = neutron-hyperv-agent.log
-transport_url = {{ rpc_transport_url }}
-
-[AGENT]
-polling_interval = 2
-physical_network_vswitch_mappings = *:{{ vswitch_name }}
-enable_metrics_collection = false
-enable_qos_extension = false
-
-[SECURITYGROUP]
-firewall_driver = hyperv
-enable_security_group = true
-
-[oslo_messaging_notifications]
-transport_url = {{ notify_transport_url }}
-{% if nova_enabled_notification_topics %}
-driver = messagingv2
-topics = {{ nova_enabled_notification_topics | map(attribute='name') | join(',') }}
-{% else %}
-driver = noop
-{% endif %}
diff --git a/ansible/roles/nova-hyperv/templates/nova_hyperv.conf.j2 b/ansible/roles/nova-hyperv/templates/nova_hyperv.conf.j2
deleted file mode 100644
index 260b0774c6..0000000000
--- a/ansible/roles/nova-hyperv/templates/nova_hyperv.conf.j2
+++ /dev/null
@@ -1,78 +0,0 @@
-[DEFAULT]
-compute_driver = compute_hyperv.driver.HyperVDriver
-instances_path = C:\OpenStack\Instances
-use_cow_images = true
-flat_injected = true
-mkisofs_cmd = C:\Program Files\Cloudbase Solutions\OpenStack\Nova\bin\mkisofs.exe
-debug = {{ openstack_logging_debug }}
-allow_resize_to_same_host = true
-running_deleted_instance_action = reap
-running_deleted_instance_poll_interval = 120
-resize_confirm_window = 5
-resume_guests_state_on_host_boot = true
-rpc_response_timeout = 1800
-lock_path = C:\OpenStack\Log
-vif_plugging_is_fatal = false
-vif_plugging_timeout = 60
-rpc_backend = rabbit
-log_dir = C:\OpenStack\Log
-log_file = nova-compute.log
-force_config_drive = True
-transport_url = {{ rpc_transport_url }}
-
-[placement]
-auth_type = password
-auth_url = {{ keystone_admin_url }}/v3
-project_name = service
-username = {{ placement_keystone_user }}
-password = {{ placement_keystone_password }}
-project_domain_name = {{ default_project_domain_name }}
-user_domain_name = {{ default_user_domain_name }}
-os_region_name = {{ openstack_region_name }}
-cafile = {{ openstack_cacert }}
-
-[glance]
-api_servers = {{ internal_protocol }}://{{ glance_internal_fqdn | put_address_in_context('url') }}:{{ glance_api_port }}
-cafile = {{ openstack_cacert }}
-
-
-[hyperv]
-vswitch_name = {{ vswitch_name }}
-limit_cpu_features = false
-config_drive_inject_password = true
-qemu_img_cmd = C:\Program Files\Cloudbase Solutions\OpenStack\Nova\bin\qemu-img.exe
-config_drive_cdrom = true
-dynamic_memory_ratio = 1
-enable_instance_metrics_collection = false
-
-[rdp]
-enabled = true
-html5_proxy_base_url = {{ public_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ rdp_port }}
-
-[neutron]
-url = {{ internal_protocol }}://{{ neutron_internal_fqdn | put_address_in_context('url') }}:{{ neutron_server_port }}
-auth_strategy = keystone
-project_domain_name = default
-project_name = service
-user_domain_name = default
-username = {{ neutron_keystone_user }}
-password = {{ neutron_keystone_password }}
-auth_url = {{ keystone_admin_url }}/v3
-auth_type = v3password
-cafile = {{ openstack_cacert }}
-
-[oslo_messaging_notifications]
-transport_url = {{ notify_transport_url }}
-{% if nova_enabled_notification_topics %}
-driver = messagingv2
-topics = {{ nova_enabled_notification_topics | map(attribute='name') | join(',') }}
-{% else %}
-driver = noop
-{% endif %}
-
-[notifications]
-{% if not enable_searchlight | bool %}
-notification_format = unversioned
-{% else %}
-notification_format = both
-{% endif %}
diff --git a/ansible/roles/nova-hyperv/templates/wsgate.ini.j2 b/ansible/roles/nova-hyperv/templates/wsgate.ini.j2
deleted file mode 100644
index 1079667967..0000000000
--- a/ansible/roles/nova-hyperv/templates/wsgate.ini.j2
+++ /dev/null
@@ -1,28 +0,0 @@
-[global]
-debug = {{ openstack_logging_debug }}
-redirect = false
-port = {{ rdp_port }}
-bindaddr = {% for host in groups['hyperv'] %}{% for ip in hostvars[inventory_hostname]['ansible_ip_addresses'] %}{% if host == ip %}{{ ip }}{% endif %}{% endfor %}{% endfor %}
-
-
-[http]
-documentroot = C:\Program Files\Cloudbase Solutions\FreeRDP-WebConnect\WebRoot\
-
-[ssl]
-port=4430
-bindaddr = {% for host in groups['hyperv'] %}{% for ip in hostvars[inventory_hostname]['ansible_ip_addresses'] %}{% if host == ip %}{{ ip }}{% endif %}{% endfor %}{% endfor %}
-
-certfile = C:\Program Files\Cloudbase Solutions\FreeRDP-WebConnect\etc\server.cer
-
-[rdpoverride]
-nofullwindowdrag = true
-
-[openstack]
-authurl = {{ keystone_admin_url }}/v2.0
-tenantname = service
-username = {{ nova_keystone_user }}
-password = {{ nova_keystone_password }}
-
-[hyperv]
-hostusername = {{ hyperv_username }}
-hostpassword = {{ hyperv_password }}
diff --git a/ansible/roles/nova/defaults/main.yml b/ansible/roles/nova/defaults/main.yml
index 533c595b7d..850ab8fc49 100644
--- a/ansible/roles/nova/defaults/main.yml
+++ b/ansible/roles/nova/defaults/main.yml
@@ -35,12 +35,6 @@ nova_services:
external: true
port: "{{ nova_metadata_port }}"
listen_port: "{{ nova_metadata_listen_port }}"
- nova_rdp:
- enabled: "{{ enable_nova|bool and nova_console == 'rdp' }}"
- mode: "http"
- external: false
- port: "{{ rdp_port }}"
- host_group: "hyperv"
nova-scheduler:
container_name: "nova_scheduler"
group: "nova-scheduler"
diff --git a/ansible/site.yml b/ansible/site.yml
index 4c21276a9c..7c76da9c17 100644
--- a/ansible/site.yml
+++ b/ansible/site.yml
@@ -35,7 +35,6 @@
- enable_haproxy_{{ enable_haproxy | bool }}
- enable_heat_{{ enable_heat | bool }}
- enable_horizon_{{ enable_horizon | bool }}
- - enable_hyperv_{{ enable_hyperv | bool }}
- enable_influxdb_{{ enable_influxdb | bool }}
- enable_ironic_{{ enable_ironic | bool }}
- enable_iscsid_{{ enable_iscsid | bool }}
@@ -728,17 +727,6 @@
tags: ovn,
when: enable_ovn | bool }
-- name: Apply role nova-hyperv
- gather_facts: false
- hosts:
- - hyperv
- - '&enable_hyperv_True'
- serial: '{{ kolla_serial|default("0") }}'
- roles:
- - { role: nova-hyperv,
- tags: nova-hyperv,
- when: enable_hyperv | bool }
-
# NOTE(gmmaha): Please do not change the order listed here. The current order is a
# workaround to fix the bug https://bugs.launchpad.net/kolla/+bug/1546789
- name: Apply role neutron
diff --git a/doc/source/reference/compute/hyperv-guide.rst b/doc/source/reference/compute/hyperv-guide.rst
deleted file mode 100644
index ec62667327..0000000000
--- a/doc/source/reference/compute/hyperv-guide.rst
+++ /dev/null
@@ -1,173 +0,0 @@
-.. _hyperv-guide:
-
-===========
-Nova HyperV
-===========
-
-.. note::
-
- Hyper-V support has been deprecated and will be removed in the Victoria cycle.
-
-Overview
-~~~~~~~~
-Currently, Kolla can deploy the following OpenStack services for Hyper-V:
-
-* nova-compute
-* neutron-hyperv-agent
-* wsgate
-
-It is possible to use Hyper-V as a compute node within an OpenStack Deployment.
-The nova-compute service runs as openstack-compute, a 64-bit service directly
-upon the Windows platform with the Hyper-V role enabled. The necessary Python
-components as well as the nova-compute service are installed directly onto
-the Windows platform. Windows Clustering Services are not needed for
-functionality within the OpenStack infrastructure.
-
-The wsgate is the FreeRDP-WebConnect service that is used for accessing
-virtual machines from Horizon web interface.
-
-.. note::
-
- HyperV services are not currently deployed as containers. This functionality
- is in development. The current implementation installs OpenStack services
- via MSIs.
-
-
-.. note::
-
- HyperV services do not currently support outside the box upgrades. Manual
- upgrades are required for this process. MSI release versions can be found
- `here `__.
- To upgrade an existing MSI to a newer version, simply uninstall the current
- MSI and install the newer one. This will not delete the configuration files.
- To preserve the configuration files, check the Skip configuration checkbox
- during installation.
-
-
-Preparation for Hyper-V node
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Ansible communicates with Hyper-V host via WinRM protocol. An HTTPS WinRM
-listener needs to be configured on the Hyper-V host, which can be easily
-created with `this PowerShell script
-`__.
-
-
-A virtual switch has to be created with which Hyper-V virtual machines
-communicate with OpenStack. To quickly enable an interface to be used as a
-Virtual Interface the following PowerShell may be used:
-
-.. code-block:: console
-
- PS C:\> $if = Get-NetIPAddress -IPAddress 192* | Get-NetIPInterface
- PS C:\> New-VMSwitch -NetAdapterName $if.ifAlias -Name YOUR_BRIDGE_NAME -AllowManagementOS $false
-
-.. note::
-
- It is very important to make sure that when you are using a Hyper-V node
- with only 1 NIC the ``-AllowManagementOS`` option is set on ``True``,
- otherwise you will lose connectivity to the Hyper-V node.
-
-
-To prepare the Hyper-V node to be able to attach to volumes provided by
-cinder you must first make sure the Windows iSCSI initiator service is
-running and started automatically.
-
-.. code-block:: console
-
- PS C:\> Set-Service -Name MSiSCSI -StartupType Automatic
- PS C:\> Start-Service MSiSCSI
-
-Preparation for Kolla deployer node
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Hyper-V role is required, enable it in ``/etc/kolla/globals.yml``:
-
-.. code-block:: yaml
-
- enable_hyperv: "yes"
-
-Hyper-V options are also required in ``/etc/kolla/globals.yml``:
-
-.. code-block:: yaml
-
- hyperv_username:
- hyperv_password:
- vswitch_name:
- nova_msi_url: "https://www.cloudbase.it/downloads/HyperVNovaCompute_Beta.msi"
-
-If tenant networks are to be built using VLAN add corresponding type in
-``/etc/kolla/globals.yml``:
-
-.. code-block:: yaml
-
- neutron_tenant_network_types: 'flat,vlan'
-
-The virtual switch is the same one created on the HyperV setup part.
-For nova_msi_url, different Nova MSI (Mitaka/Newton/Ocata) versions can
-be found on `Cloudbase website
-`__.
-
-Add the Hyper-V node in ``ansible/inventory`` file:
-
-.. code-block:: ini
-
- [hyperv]
-
-
- [hyperv:vars]
- ansible_user=
- ansible_password=
- ansible_port=5986
- ansible_connection=winrm
- ansible_winrm_server_cert_validation=ignore
-
-``pywinrm`` package needs to be installed in order for Ansible to work
-on the HyperV node:
-
-.. code-block:: console
-
- pip install "pywinrm>=0.2.2"
-
-.. note::
-
- In case of a test deployment with controller and compute nodes as
- virtual machines on Hyper-V, if VLAN tenant networking is used,
- trunk mode has to be enabled on the VMs:
-
-.. code-block:: console
-
- Set-VMNetworkAdapterVlan -Trunk -AllowedVlanIdList -NativeVlanId 0
-
-networking-hyperv mechanism driver is needed for neutron-server to
-communicate with HyperV nova-compute. This can be built with source
-images by default. Manually it can be intalled in neutron-server
-container with pip:
-
-.. code-block:: console
-
- pip install "networking-hyperv>=4.0.0"
-
-For neutron_extension_drivers, ``port_security`` and ``qos`` are
-currently supported by the networking-hyperv mechanism driver.
-By default only ``port_security`` is set.
-
-
-Verify Operations
-~~~~~~~~~~~~~~~~~
-
-OpenStack HyperV services can be inspected and managed from PowerShell:
-
-.. code-block:: console
-
- PS C:\> Get-Service nova-compute
- PS C:\> Get-Service neutron-hyperv-agent
-
-.. code-block:: console
-
- PS C:\> Restart-Service nova-compute
- PS C:\> Restart-Service neutron-hyperv-agent
-
-For more information on OpenStack HyperV, see
-:nova-doc:`Hyper-V virtualization platform
-`.
diff --git a/doc/source/reference/compute/index.rst b/doc/source/reference/compute/index.rst
index 5dd9b175d9..f38377a85c 100644
--- a/doc/source/reference/compute/index.rst
+++ b/doc/source/reference/compute/index.rst
@@ -3,17 +3,16 @@ Compute
=======
This section describes configuring nova hypervisors and
-compute services like HyperV and so on.
+compute services.
.. note::
- Hyper-V and VMware support have been deprecated and will
+ VMware support has been deprecated and will
be removed in the Victoria cycle.
.. toctree::
:maxdepth: 1
- hyperv-guide
libvirt-guide
masakari-guide
nova-cells-guide
diff --git a/doc/source/reference/compute/nova-guide.rst b/doc/source/reference/compute/nova-guide.rst
index b53635cc58..06096ab260 100644
--- a/doc/source/reference/compute/nova-guide.rst
+++ b/doc/source/reference/compute/nova-guide.rst
@@ -16,15 +16,6 @@ The virtualisation driver may be selected via ``nova_compute_virt_type`` in
``globals.yml``. Supported options are ``qemu``, ``kvm``, and ``vmware``.
The default is ``kvm``.
-HyperV
-------
-
-.. note::
-
- Hyper-V support has been deprecated and will be removed in the Victoria cycle.
-
-Information on using Nova with HyperV can be found in :doc:`hyperv-guide`.
-
Libvirt
-------
diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml
index ef9b245092..ca7e2074bb 100644
--- a/etc/kolla/globals.yml
+++ b/etc/kolla/globals.yml
@@ -289,7 +289,6 @@
#enable_horizon_vitrage: "{{ enable_vitrage | bool }}"
#enable_horizon_watcher: "{{ enable_watcher | bool }}"
#enable_horizon_zun: "{{ enable_zun | bool }}"
-#enable_hyperv: "no"
#enable_influxdb: "{{ enable_monasca | bool or (enable_cloudkitty | bool and cloudkitty_storage_backend == 'influxdb') }}"
#enable_ironic: "no"
#enable_ironic_ipxe: "no"
@@ -523,19 +522,6 @@
# Enable distributed floating ip for OVN deployments
#neutron_ovn_distributed_fip: "no"
-#################
-# Hyper-V options
-#################
-
-# NOTE: Hyper-V support has been deprecated and will be removed in the Victoria cycle.
-
-# Hyper-V can be used as hypervisor
-#hyperv_username: "user"
-#hyperv_password: "password"
-#vswitch_name: "vswitch"
-# URL from which Nova Hyper-V MSI is downloaded
-#nova_msi_url: "https://www.cloudbase.it/downloads/HyperVNovaCompute_Beta.msi"
-
#############################
# Horizon - Dashboard Options
#############################
diff --git a/releasenotes/notes/remove-hyperv-fbffba997e1abb61.yaml b/releasenotes/notes/remove-hyperv-fbffba997e1abb61.yaml
new file mode 100644
index 0000000000..0f52a94af5
--- /dev/null
+++ b/releasenotes/notes/remove-hyperv-fbffba997e1abb61.yaml
@@ -0,0 +1,4 @@
+---
+upgrade:
+ - |
+ Support for deploying with Hyper-V integrations has been removed.
diff --git a/tests/templates/inventory.j2 b/tests/templates/inventory.j2
index 1c3c755559..86b3213b54 100644
--- a/tests/templates/inventory.j2
+++ b/tests/templates/inventory.j2
@@ -113,16 +113,6 @@ control
[haproxy:children]
network
-[hyperv]
-#hyperv_host
-
-[hyperv:vars]
-#ansible_user=user
-#ansible_password=password
-#ansible_port=5986
-#ansible_connection=winrm
-#ansible_winrm_server_cert_validation=ignore
-
[mariadb:children]
control