mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
add ovirt attach host devic (#44714)
This commit is contained in:
parent
debc1e229e
commit
c65c841ef3
1 changed files with 49 additions and 2 deletions
|
@ -245,10 +245,14 @@ options:
|
||||||
custom_compatibility_version:
|
custom_compatibility_version:
|
||||||
description:
|
description:
|
||||||
- "Enables a virtual machine to be customized to its own compatibility version. If
|
- "Enables a virtual machine to be customized to its own compatibility version. If
|
||||||
`C(custom_compatibility_version)` is set, it overrides the cluster's compatibility version
|
'C(custom_compatibility_version)' is set, it overrides the cluster's compatibility version
|
||||||
for this particular virtual machine."
|
for this particular virtual machine."
|
||||||
version_added: "2.7"
|
version_added: "2.7"
|
||||||
|
host_devices:
|
||||||
|
description:
|
||||||
|
- Single Root I/O Virtualization - technology that allows single device to expose multiple endpoints that can be passed to VMs
|
||||||
|
- host_devices is an list which contain dictinary with name and state of device
|
||||||
|
version_added: "2.7"
|
||||||
delete_protected:
|
delete_protected:
|
||||||
description:
|
description:
|
||||||
- If I(yes) Virtual Machine will be set as delete protected.
|
- If I(yes) Virtual Machine will be set as delete protected.
|
||||||
|
@ -853,6 +857,7 @@ EXAMPLES = '''
|
||||||
protocol:
|
protocol:
|
||||||
- spice
|
- spice
|
||||||
- vnc
|
- vnc
|
||||||
|
|
||||||
# Execute remote viever to VM
|
# Execute remote viever to VM
|
||||||
- block:
|
- block:
|
||||||
- name: Create a ticket for console for a running VM
|
- name: Create a ticket for console for a running VM
|
||||||
|
@ -870,6 +875,19 @@ EXAMPLES = '''
|
||||||
- name: Run remote viewer with file
|
- name: Run remote viewer with file
|
||||||
command: remote-viewer ~/vvfile.vv
|
command: remote-viewer ~/vvfile.vv
|
||||||
|
|
||||||
|
# Default value of host_device state is present
|
||||||
|
- name: Attach host devices to virtual machine
|
||||||
|
ovirt_vm:
|
||||||
|
name: myvm
|
||||||
|
host: myhost
|
||||||
|
placement_policy: pinned
|
||||||
|
host_devices:
|
||||||
|
- name: pci_0000_00_06_0
|
||||||
|
- name: pci_0000_00_07_0
|
||||||
|
state: absent
|
||||||
|
- name: pci_0000_00_08_0
|
||||||
|
state: present
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
@ -1214,6 +1232,7 @@ class VmsModule(BaseModule):
|
||||||
self.changed = self.__attach_numa_nodes(entity)
|
self.changed = self.__attach_numa_nodes(entity)
|
||||||
self.changed = self.__attach_watchdog(entity)
|
self.changed = self.__attach_watchdog(entity)
|
||||||
self.changed = self.__attach_graphical_console(entity)
|
self.changed = self.__attach_graphical_console(entity)
|
||||||
|
self.changed = self.__attach_host_devices(entity)
|
||||||
|
|
||||||
def pre_remove(self, entity):
|
def pre_remove(self, entity):
|
||||||
# Forcibly stop the VM, if it's not in DOWN state:
|
# Forcibly stop the VM, if it's not in DOWN state:
|
||||||
|
@ -1608,6 +1627,33 @@ class VmsModule(BaseModule):
|
||||||
)
|
)
|
||||||
return self._initialization
|
return self._initialization
|
||||||
|
|
||||||
|
def __attach_host_devices(self, entity):
|
||||||
|
vm_service = self._service.service(entity.id)
|
||||||
|
host_devices_service = vm_service.host_devices_service()
|
||||||
|
host_devices = self.param('host_devices')
|
||||||
|
updated = False
|
||||||
|
if host_devices:
|
||||||
|
device_names = [dev.name for dev in host_devices_service.list()]
|
||||||
|
for device in host_devices:
|
||||||
|
device_name = device.get('name')
|
||||||
|
state = device.get('state', 'present')
|
||||||
|
if state == 'absent' and device_name in device_names:
|
||||||
|
updated = True
|
||||||
|
if not self._module.check_mode:
|
||||||
|
device_id = get_id_by_name(host_devices_service, device.get('name'))
|
||||||
|
host_devices_service.device_service(device_id).remove()
|
||||||
|
|
||||||
|
elif state == 'present' and device_name not in device_names:
|
||||||
|
updated = True
|
||||||
|
if not self._module.check_mode:
|
||||||
|
host_devices_service.add(
|
||||||
|
otypes.HostDevice(
|
||||||
|
name=device.get('name'),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return updated
|
||||||
|
|
||||||
|
|
||||||
def _get_role_mappings(module):
|
def _get_role_mappings(module):
|
||||||
roleMappings = list()
|
roleMappings = list()
|
||||||
|
@ -1925,6 +1971,7 @@ def main():
|
||||||
numa_nodes=dict(type='list', default=[]),
|
numa_nodes=dict(type='list', default=[]),
|
||||||
custom_properties=dict(type='list'),
|
custom_properties=dict(type='list'),
|
||||||
watchdog=dict(type='dict'),
|
watchdog=dict(type='dict'),
|
||||||
|
host_devices=dict(type='list'),
|
||||||
graphical_console=dict(type='dict'),
|
graphical_console=dict(type='dict'),
|
||||||
)
|
)
|
||||||
module = AnsibleModule(
|
module = AnsibleModule(
|
||||||
|
|
Loading…
Reference in a new issue