mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-26 14:41:23 -07:00
ovirt: PEP8 compliancy fixes (#32316)
* ovirt: PEP8 compliancy fixes This PR includes: - PEP8 compliancy fixes Signed-off-by: Satyajit Bulage <sbulage@redhat.com> * Improve documentation * Update documentation * Update documentation * Update documentation * Fix legacy-files.txt * Update documentation * Fix PEP8 issue * Fix PEP8 issue * Fix another PEP8 issue * More typo fixes * Yet another PEP8 typo
This commit is contained in:
parent
a2d34e914e
commit
1857d11034
6 changed files with 669 additions and 772 deletions
|
@ -1,21 +1,20 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
|
||||||
# (c) 2013, Vincent Van der Kussen <vincent at vanderkussen.org>
|
# Copyright: (c) 2013, Vincent Van der Kussen <vincent at vanderkussen.org>
|
||||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||||
|
|
||||||
from __future__ import absolute_import, division, print_function
|
from __future__ import absolute_import, division, print_function
|
||||||
__metaclass__ = type
|
__metaclass__ = type
|
||||||
|
|
||||||
|
|
||||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||||
'status': ['preview'],
|
'status': ['preview'],
|
||||||
'supported_by': 'community'}
|
'supported_by': 'community'}
|
||||||
|
|
||||||
|
|
||||||
DOCUMENTATION = '''
|
DOCUMENTATION = '''
|
||||||
---
|
---
|
||||||
module: ovirt
|
module: ovirt
|
||||||
author: "Vincent Van der Kussen (@vincentvdk)"
|
author:
|
||||||
|
- Vincent Van der Kussen (@vincentvdk)
|
||||||
short_description: oVirt/RHEV platform management
|
short_description: oVirt/RHEV platform management
|
||||||
description:
|
description:
|
||||||
- This module only supports oVirt/RHEV version 3. A newer module M(ovirt_vms) supports oVirt/RHV version 4.
|
- This module only supports oVirt/RHEV version 3. A newer module M(ovirt_vms) supports oVirt/RHV version 4.
|
||||||
|
@ -24,190 +23,141 @@ version_added: "1.4"
|
||||||
options:
|
options:
|
||||||
user:
|
user:
|
||||||
description:
|
description:
|
||||||
- the user to authenticate with
|
- The user to authenticate with.
|
||||||
default: null
|
|
||||||
required: true
|
required: true
|
||||||
aliases: []
|
|
||||||
url:
|
url:
|
||||||
description:
|
description:
|
||||||
- the url of the oVirt instance
|
- The url of the oVirt instance.
|
||||||
default: null
|
|
||||||
required: true
|
required: true
|
||||||
aliases: []
|
|
||||||
instance_name:
|
instance_name:
|
||||||
description:
|
description:
|
||||||
- the name of the instance to use
|
- The name of the instance to use.
|
||||||
default: null
|
|
||||||
required: true
|
required: true
|
||||||
aliases: [ vmname ]
|
aliases: [ vmname ]
|
||||||
password:
|
password:
|
||||||
description:
|
description:
|
||||||
- password of the user to authenticate with
|
- Password of the user to authenticate with.
|
||||||
default: null
|
|
||||||
required: true
|
required: true
|
||||||
aliases: []
|
|
||||||
image:
|
image:
|
||||||
description:
|
description:
|
||||||
- template to use for the instance
|
- The template to use for the instance.
|
||||||
default: null
|
|
||||||
required: false
|
|
||||||
aliases: []
|
|
||||||
resource_type:
|
resource_type:
|
||||||
description:
|
description:
|
||||||
- whether you want to deploy an image or create an instance from scratch.
|
- Whether you want to deploy an image or create an instance from scratch.
|
||||||
default: null
|
choices: [ new, template ]
|
||||||
required: false
|
|
||||||
aliases: []
|
|
||||||
choices: [ 'new', 'template' ]
|
|
||||||
zone:
|
zone:
|
||||||
description:
|
description:
|
||||||
- deploy the image to this oVirt cluster
|
- Deploy the image to this oVirt cluster.
|
||||||
default: null
|
|
||||||
required: false
|
|
||||||
aliases: []
|
|
||||||
instance_disksize:
|
instance_disksize:
|
||||||
description:
|
description:
|
||||||
- size of the instance's disk in GB
|
- Size of the instance's disk in GB.
|
||||||
default: null
|
|
||||||
required: false
|
|
||||||
aliases: [ vm_disksize]
|
aliases: [ vm_disksize]
|
||||||
instance_cpus:
|
instance_cpus:
|
||||||
description:
|
description:
|
||||||
- the instance's number of cpu's
|
- The instance's number of CPUs.
|
||||||
default: 1
|
default: 1
|
||||||
required: false
|
|
||||||
aliases: [ vmcpus ]
|
aliases: [ vmcpus ]
|
||||||
instance_nic:
|
instance_nic:
|
||||||
description:
|
description:
|
||||||
- name of the network interface in oVirt/RHEV
|
- The name of the network interface in oVirt/RHEV.
|
||||||
default: null
|
|
||||||
required: false
|
|
||||||
aliases: [ vmnic ]
|
aliases: [ vmnic ]
|
||||||
instance_network:
|
instance_network:
|
||||||
description:
|
description:
|
||||||
- the logical network the machine should belong to
|
- The logical network the machine should belong to.
|
||||||
default: rhevm
|
default: rhevm
|
||||||
required: false
|
|
||||||
aliases: [ vmnetwork ]
|
aliases: [ vmnetwork ]
|
||||||
instance_mem:
|
instance_mem:
|
||||||
description:
|
description:
|
||||||
- the instance's amount of memory in MB
|
- The instance's amount of memory in MB.
|
||||||
default: null
|
|
||||||
required: false
|
|
||||||
aliases: [ vmmem ]
|
aliases: [ vmmem ]
|
||||||
instance_type:
|
instance_type:
|
||||||
description:
|
description:
|
||||||
- define if the instance is a server or desktop
|
- Define whether the instance is a server or desktop.
|
||||||
|
choices: [ desktop, server ]
|
||||||
default: server
|
default: server
|
||||||
required: false
|
|
||||||
aliases: [ vmtype ]
|
aliases: [ vmtype ]
|
||||||
choices: [ 'server', 'desktop' ]
|
|
||||||
disk_alloc:
|
disk_alloc:
|
||||||
description:
|
description:
|
||||||
- define if disk is thin or preallocated
|
- Define whether disk is thin or preallocated.
|
||||||
|
choices: [ preallocated, thin ]
|
||||||
default: thin
|
default: thin
|
||||||
required: false
|
|
||||||
aliases: []
|
|
||||||
choices: [ 'thin', 'preallocated' ]
|
|
||||||
disk_int:
|
disk_int:
|
||||||
description:
|
description:
|
||||||
- interface type of the disk
|
- Interface type of the disk.
|
||||||
|
choices: [ ide, virtio ]
|
||||||
default: virtio
|
default: virtio
|
||||||
required: false
|
|
||||||
aliases: []
|
|
||||||
choices: [ 'virtio', 'ide' ]
|
|
||||||
instance_os:
|
instance_os:
|
||||||
description:
|
description:
|
||||||
- type of Operating System
|
- Type of Operating System.
|
||||||
default: null
|
|
||||||
required: false
|
|
||||||
aliases: [ vmos ]
|
aliases: [ vmos ]
|
||||||
instance_cores:
|
instance_cores:
|
||||||
description:
|
description:
|
||||||
- define the instance's number of cores
|
- Define the instance's number of cores.
|
||||||
default: 1
|
default: 1
|
||||||
required: false
|
|
||||||
aliases: [ vmcores ]
|
aliases: [ vmcores ]
|
||||||
sdomain:
|
sdomain:
|
||||||
description:
|
description:
|
||||||
- the Storage Domain where you want to create the instance's disk on.
|
- The Storage Domain where you want to create the instance's disk on.
|
||||||
default: null
|
|
||||||
required: false
|
|
||||||
aliases: []
|
|
||||||
region:
|
region:
|
||||||
description:
|
description:
|
||||||
- the oVirt/RHEV datacenter where you want to deploy to
|
- The oVirt/RHEV datacenter where you want to deploy to.
|
||||||
default: null
|
|
||||||
required: false
|
|
||||||
aliases: []
|
|
||||||
instance_dns:
|
instance_dns:
|
||||||
description:
|
description:
|
||||||
- define the instance's Primary DNS server
|
- Define the instance's Primary DNS server.
|
||||||
required: false
|
|
||||||
aliases: [ dns ]
|
aliases: [ dns ]
|
||||||
version_added: "2.1"
|
version_added: "2.1"
|
||||||
instance_domain:
|
instance_domain:
|
||||||
description:
|
description:
|
||||||
- define the instance's Domain
|
- Define the instance's Domain.
|
||||||
required: false
|
|
||||||
aliases: [ domain ]
|
aliases: [ domain ]
|
||||||
version_added: "2.1"
|
version_added: "2.1"
|
||||||
instance_hostname:
|
instance_hostname:
|
||||||
description:
|
description:
|
||||||
- define the instance's Hostname
|
- Define the instance's Hostname.
|
||||||
required: false
|
|
||||||
aliases: [ hostname ]
|
aliases: [ hostname ]
|
||||||
version_added: "2.1"
|
version_added: "2.1"
|
||||||
instance_ip:
|
instance_ip:
|
||||||
description:
|
description:
|
||||||
- define the instance's IP
|
- Define the instance's IP.
|
||||||
required: false
|
|
||||||
aliases: [ ip ]
|
aliases: [ ip ]
|
||||||
version_added: "2.1"
|
version_added: "2.1"
|
||||||
instance_netmask:
|
instance_netmask:
|
||||||
description:
|
description:
|
||||||
- define the instance's Netmask
|
- Define the instance's Netmask.
|
||||||
required: false
|
|
||||||
aliases: [ netmask ]
|
aliases: [ netmask ]
|
||||||
version_added: "2.1"
|
version_added: "2.1"
|
||||||
instance_rootpw:
|
instance_rootpw:
|
||||||
description:
|
description:
|
||||||
- define the instance's Root password
|
- Define the instance's Root password.
|
||||||
required: false
|
|
||||||
aliases: [ rootpw ]
|
aliases: [ rootpw ]
|
||||||
version_added: "2.1"
|
version_added: "2.1"
|
||||||
instance_key:
|
instance_key:
|
||||||
description:
|
description:
|
||||||
- define the instance's Authorized key
|
- Define the instance's Authorized key.
|
||||||
required: false
|
|
||||||
aliases: [ key ]
|
aliases: [ key ]
|
||||||
version_added: "2.1"
|
version_added: "2.1"
|
||||||
state:
|
state:
|
||||||
description:
|
description:
|
||||||
- create, terminate or remove instances
|
- Create, terminate or remove instances.
|
||||||
default: 'present'
|
choices: [ absent, present, restarted, shutdown, started ]
|
||||||
required: false
|
default: present
|
||||||
aliases: []
|
|
||||||
choices: ['present', 'absent', 'shutdown', 'started', 'restarted']
|
|
||||||
|
|
||||||
requirements:
|
requirements:
|
||||||
- "python >= 2.6"
|
- ovirt-engine-sdk-python
|
||||||
- "ovirt-engine-sdk-python"
|
|
||||||
'''
|
'''
|
||||||
EXAMPLES = '''
|
|
||||||
# Basic example provisioning from image.
|
|
||||||
|
|
||||||
ovirt:
|
EXAMPLES = '''
|
||||||
|
- name: Basic example to provision from image
|
||||||
|
ovirt:
|
||||||
user: admin@internal
|
user: admin@internal
|
||||||
url: https://ovirt.example.com
|
url: https://ovirt.example.com
|
||||||
instance_name: ansiblevm04
|
instance_name: ansiblevm04
|
||||||
password: secret
|
password: secret
|
||||||
image: centos_64
|
image: centos_64
|
||||||
zone: cluster01
|
zone: cluster01
|
||||||
resource_type: template"
|
resource_type: template
|
||||||
|
|
||||||
# Full example to create new instance from scratch
|
- name: Full example to create new instance from scratch
|
||||||
ovirt:
|
ovirt:
|
||||||
instance_name: testansible
|
instance_name: testansible
|
||||||
resource_type: new
|
resource_type: new
|
||||||
instance_type: server
|
instance_type: server
|
||||||
|
@ -225,26 +175,26 @@ ovirt:
|
||||||
sdomain: FIBER01
|
sdomain: FIBER01
|
||||||
instance_cores: 1
|
instance_cores: 1
|
||||||
instance_os: rhel_6x64
|
instance_os: rhel_6x64
|
||||||
disk_int: virtio"
|
disk_int: virtio
|
||||||
|
|
||||||
# stopping an instance
|
- name: Stopping an existing instance
|
||||||
ovirt:
|
ovirt:
|
||||||
instance_name: testansible
|
instance_name: testansible
|
||||||
state: stopped
|
state: stopped
|
||||||
user: admin@internal
|
user: admin@internal
|
||||||
password: secret
|
password: secret
|
||||||
url: https://ovirt.example.com
|
url: https://ovirt.example.com
|
||||||
|
|
||||||
# starting an instance
|
- name: Start an existing instance
|
||||||
ovirt:
|
ovirt:
|
||||||
instance_name: testansible
|
instance_name: testansible
|
||||||
state: started
|
state: started
|
||||||
user: admin@internal
|
user: admin@internal
|
||||||
password: secret
|
password: secret
|
||||||
url: https://ovirt.example.com
|
url: https://ovirt.example.com
|
||||||
|
|
||||||
# starting an instance with cloud init information
|
- name: Start an instance with cloud init information
|
||||||
ovirt:
|
ovirt:
|
||||||
instance_name: testansible
|
instance_name: testansible
|
||||||
state: started
|
state: started
|
||||||
user: admin@internal
|
user: admin@internal
|
||||||
|
@ -256,8 +206,8 @@ ovirt:
|
||||||
netmask: 255.255.255.0
|
netmask: 255.255.255.0
|
||||||
gateway: 192.0.2.1
|
gateway: 192.0.2.1
|
||||||
rootpw: bigsecret
|
rootpw: bigsecret
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -281,6 +231,7 @@ def conn(url, user, password):
|
||||||
raise Exception("error connecting to the oVirt API")
|
raise Exception("error connecting to the oVirt API")
|
||||||
return api
|
return api
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------- #
|
# ------------------------------------------------------------------- #
|
||||||
# Create VM from scratch
|
# Create VM from scratch
|
||||||
def create_vm(conn, vmtype, vmname, zone, vmdisk_size, vmcpus, vmnic, vmnetwork, vmmem, vmdisk_alloc, sdomain, vmcores, vmos, vmdisk_int):
|
def create_vm(conn, vmtype, vmname, zone, vmdisk_size, vmcpus, vmnic, vmnetwork, vmmem, vmdisk_alloc, sdomain, vmcores, vmos, vmdisk_int):
|
||||||
|
@ -290,7 +241,8 @@ def create_vm(conn, vmtype, vmname, zone, vmdisk_size, vmcpus, vmnic, vmnetwork,
|
||||||
template=conn.templates.get(name="Blank"), memory=1024 * 1024 * int(vmmem),
|
template=conn.templates.get(name="Blank"), memory=1024 * 1024 * int(vmmem),
|
||||||
cpu=params.CPU(topology=params.CpuTopology(cores=int(vmcores))), type_=vmtype)
|
cpu=params.CPU(topology=params.CpuTopology(cores=int(vmcores))), type_=vmtype)
|
||||||
# define disk params
|
# define disk params
|
||||||
vmdisk= params.Disk(size=1024 * 1024 * 1024 * int(vmdisk_size), wipe_after_delete=True, sparse=True, interface=vmdisk_int, type_="System", format='cow',
|
vmdisk = params.Disk(size=1024 * 1024 * 1024 * int(vmdisk_size), wipe_after_delete=True, sparse=True, interface=vmdisk_int, type_="System",
|
||||||
|
format='cow',
|
||||||
storage_domains=params.StorageDomains(storage_domain=[conn.storagedomains.get(name=sdomain)]))
|
storage_domains=params.StorageDomains(storage_domain=[conn.storagedomains.get(name=sdomain)]))
|
||||||
# define network parameters
|
# define network parameters
|
||||||
network_net = params.Network(name=vmnetwork)
|
network_net = params.Network(name=vmnetwork)
|
||||||
|
@ -299,9 +251,9 @@ def create_vm(conn, vmtype, vmname, zone, vmdisk_size, vmcpus, vmnic, vmnetwork,
|
||||||
# define VM params
|
# define VM params
|
||||||
vmparams = params.VM(name=vmname, cluster=conn.clusters.get(name=zone), os=params.OperatingSystem(type_=vmos),
|
vmparams = params.VM(name=vmname, cluster=conn.clusters.get(name=zone), os=params.OperatingSystem(type_=vmos),
|
||||||
template=conn.templates.get(name="Blank"), memory=1024 * 1024 * int(vmmem),
|
template=conn.templates.get(name="Blank"), memory=1024 * 1024 * int(vmmem),
|
||||||
cpu=params.CPU(topology=params.CpuTopology(cores=int(vmcores))) ,type_=vmtype)
|
cpu=params.CPU(topology=params.CpuTopology(cores=int(vmcores))), type_=vmtype)
|
||||||
# define disk params
|
# define disk params
|
||||||
vmdisk= params.Disk(size=1024 * 1024 * 1024 * int(vmdisk_size), wipe_after_delete=True, sparse=False, interface=vmdisk_int, type_="System",
|
vmdisk = params.Disk(size=1024 * 1024 * 1024 * int(vmdisk_size), wipe_after_delete=True, sparse=False, interface=vmdisk_int, type_="System",
|
||||||
format='raw', storage_domains=params.StorageDomains(storage_domain=[conn.storagedomains.get(name=sdomain)]))
|
format='raw', storage_domains=params.StorageDomains(storage_domain=[conn.storagedomains.get(name=sdomain)]))
|
||||||
# define network parameters
|
# define network parameters
|
||||||
network_net = params.Network(name=vmnetwork)
|
network_net = params.Network(name=vmnetwork)
|
||||||
|
@ -324,7 +276,7 @@ def create_vm(conn, vmtype, vmname, zone, vmdisk_size, vmcpus, vmnic, vmnetwork,
|
||||||
|
|
||||||
# create an instance from a template
|
# create an instance from a template
|
||||||
def create_vm_template(conn, vmname, image, zone):
|
def create_vm_template(conn, vmname, image, zone):
|
||||||
vmparams = params.VM(name=vmname, cluster=conn.clusters.get(name=zone), template=conn.templates.get(name=image),disks=params.Disks(clone=True))
|
vmparams = params.VM(name=vmname, cluster=conn.clusters.get(name=zone), template=conn.templates.get(name=image), disks=params.Disks(clone=True))
|
||||||
try:
|
try:
|
||||||
conn.vms.add(vmparams)
|
conn.vms.add(vmparams)
|
||||||
except:
|
except:
|
||||||
|
@ -345,17 +297,19 @@ def vm_start(conn, vmname, hostname=None, ip=None, netmask=None, gateway=None,
|
||||||
nic = params.GuestNicConfiguration(name='eth0', boot_protocol='STATIC', ip=ipinfo, on_boot=True)
|
nic = params.GuestNicConfiguration(name='eth0', boot_protocol='STATIC', ip=ipinfo, on_boot=True)
|
||||||
nics = params.Nics()
|
nics = params.Nics()
|
||||||
nics = params.GuestNicsConfiguration(nic_configuration=[nic])
|
nics = params.GuestNicsConfiguration(nic_configuration=[nic])
|
||||||
initialization=params.Initialization(regenerate_ssh_keys=True, host_name=hostname, domain=domain, user_name='root',
|
initialization = params.Initialization(regenerate_ssh_keys=True, host_name=hostname, domain=domain, user_name='root',
|
||||||
root_password=rootpw, nic_configurations=nics, dns_servers=dns,
|
root_password=rootpw, nic_configurations=nics, dns_servers=dns,
|
||||||
authorized_ssh_keys=key)
|
authorized_ssh_keys=key)
|
||||||
action = params.Action(use_cloud_init=use_cloud_init, vm=params.VM(initialization=initialization))
|
action = params.Action(use_cloud_init=use_cloud_init, vm=params.VM(initialization=initialization))
|
||||||
vm.start(action=action)
|
vm.start(action=action)
|
||||||
|
|
||||||
|
|
||||||
# Stop instance
|
# Stop instance
|
||||||
def vm_stop(conn, vmname):
|
def vm_stop(conn, vmname):
|
||||||
vm = conn.vms.get(name=vmname)
|
vm = conn.vms.get(name=vmname)
|
||||||
vm.stop()
|
vm.stop()
|
||||||
|
|
||||||
|
|
||||||
# restart instance
|
# restart instance
|
||||||
def vm_restart(conn, vmname):
|
def vm_restart(conn, vmname):
|
||||||
state = vm_status(conn, vmname)
|
state = vm_status(conn, vmname)
|
||||||
|
@ -365,11 +319,13 @@ def vm_restart(conn, vmname):
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
vm.start()
|
vm.start()
|
||||||
|
|
||||||
|
|
||||||
# remove an instance
|
# remove an instance
|
||||||
def vm_remove(conn, vmname):
|
def vm_remove(conn, vmname):
|
||||||
vm = conn.vms.get(name=vmname)
|
vm = conn.vms.get(name=vmname)
|
||||||
vm.delete()
|
vm.delete()
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------- #
|
# ------------------------------------------------------------------- #
|
||||||
# VM statuses
|
# VM statuses
|
||||||
#
|
#
|
||||||
|
@ -395,40 +351,39 @@ def get_vm(conn, vmname):
|
||||||
# ------------------------------------------------------------------- #
|
# ------------------------------------------------------------------- #
|
||||||
# Main
|
# Main
|
||||||
|
|
||||||
def main():
|
|
||||||
|
|
||||||
|
def main():
|
||||||
module = AnsibleModule(
|
module = AnsibleModule(
|
||||||
argument_spec = dict(
|
argument_spec=dict(
|
||||||
state = dict(default='present', choices=['present', 'absent', 'shutdown', 'started', 'restart']),
|
state=dict(type='str', default='present', choices=['absent', 'present', 'restart', 'shutdown', 'started']),
|
||||||
#name = dict(required=True),
|
user=dict(type='str', required=True),
|
||||||
user = dict(required=True),
|
url=dict(type='str', required=True),
|
||||||
url = dict(required=True),
|
instance_name=dict(type='str', required=True, aliases=['vmname']),
|
||||||
instance_name = dict(required=True, aliases=['vmname']),
|
password=dict(type='str', required=True, no_log=True),
|
||||||
password = dict(required=True, no_log=True),
|
image=dict(type='str'),
|
||||||
image = dict(),
|
resource_type=dict(type='str', choices=['new', 'template']),
|
||||||
resource_type = dict(choices=['new', 'template']),
|
zone=dict(type='str'),
|
||||||
zone = dict(),
|
instance_disksize=dict(type='str', aliases=['vm_disksize']),
|
||||||
instance_disksize = dict(aliases=['vm_disksize']),
|
instance_cpus=dict(type='str', default=1, aliases=['vmcpus']),
|
||||||
instance_cpus = dict(default=1, aliases=['vmcpus']),
|
instance_nic=dict(type='str', aliases=['vmnic']),
|
||||||
instance_nic = dict(aliases=['vmnic']),
|
instance_network=dict(type='str', default='rhevm', aliases=['vmnetwork']),
|
||||||
instance_network = dict(default='rhevm', aliases=['vmnetwork']),
|
instance_mem=dict(type='str', aliases=['vmmem']),
|
||||||
instance_mem = dict(aliases=['vmmem']),
|
instance_type=dict(type='str', default='server', aliases=['vmtype'], choices=['desktop', 'server']),
|
||||||
instance_type = dict(default='server', aliases=['vmtype'], choices=['server', 'desktop']),
|
disk_alloc=dict(type='str', default='thin', choices=['preallocated', 'thin']),
|
||||||
disk_alloc = dict(default='thin', choices=['thin', 'preallocated']),
|
disk_int=dict(type='str', default='virtio', choices=['ide', 'virtio']),
|
||||||
disk_int = dict(default='virtio', choices=['virtio', 'ide']),
|
instance_os=dict(type='str', aliases=['vmos']),
|
||||||
instance_os = dict(aliases=['vmos']),
|
instance_cores=dict(type='str', default=1, aliases=['vmcores']),
|
||||||
instance_cores = dict(default=1, aliases=['vmcores']),
|
instance_hostname=dict(type='str', aliases=['hostname']),
|
||||||
instance_hostname = dict(aliases=['hostname']),
|
instance_ip=dict(type='str', aliases=['ip']),
|
||||||
instance_ip = dict(aliases=['ip']),
|
instance_netmask=dict(type='str', aliases=['netmask']),
|
||||||
instance_netmask = dict(aliases=['netmask']),
|
instance_gateway=dict(type='str', aliases=['gateway']),
|
||||||
instance_gateway = dict(aliases=['gateway']),
|
instance_domain=dict(type='str', aliases=['domain']),
|
||||||
instance_domain = dict(aliases=['domain']),
|
instance_dns=dict(type='str', aliases=['dns']),
|
||||||
instance_dns = dict(aliases=['dns']),
|
instance_rootpw=dict(type='str', aliases=['rootpw']),
|
||||||
instance_rootpw = dict(aliases=['rootpw']),
|
instance_key=dict(type='str', aliases=['key']),
|
||||||
instance_key = dict(aliases=['key']),
|
sdomain=dict(type='str'),
|
||||||
sdomain = dict(),
|
region=dict(type='str'),
|
||||||
region = dict(),
|
),
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if not HAS_OVIRTSDK:
|
if not HAS_OVIRTSDK:
|
||||||
|
@ -462,9 +417,9 @@ def main():
|
||||||
dns = module.params['instance_dns']
|
dns = module.params['instance_dns']
|
||||||
rootpw = module.params['instance_rootpw']
|
rootpw = module.params['instance_rootpw']
|
||||||
key = module.params['instance_key']
|
key = module.params['instance_key']
|
||||||
#initialize connection
|
# initialize connection
|
||||||
try:
|
try:
|
||||||
c = conn(url+"/api", user, password)
|
c = conn(url + "/api", user, password)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
module.fail_json(msg='%s' % e)
|
module.fail_json(msg='%s' % e)
|
||||||
|
|
||||||
|
@ -475,7 +430,7 @@ def main():
|
||||||
create_vm_template(c, vmname, image, zone)
|
create_vm_template(c, vmname, image, zone)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
module.fail_json(msg='%s' % e)
|
module.fail_json(msg='%s' % e)
|
||||||
module.exit_json(changed=True, msg="deployed VM %s from template %s" % (vmname,image))
|
module.exit_json(changed=True, msg="deployed VM %s from template %s" % (vmname, image))
|
||||||
elif resource_type == 'new':
|
elif resource_type == 'new':
|
||||||
# FIXME: refactor, use keyword args.
|
# FIXME: refactor, use keyword args.
|
||||||
try:
|
try:
|
||||||
|
@ -492,7 +447,7 @@ def main():
|
||||||
if vm_status(c, vmname) == 'up':
|
if vm_status(c, vmname) == 'up':
|
||||||
module.exit_json(changed=False, msg="VM %s is already running" % vmname)
|
module.exit_json(changed=False, msg="VM %s is already running" % vmname)
|
||||||
else:
|
else:
|
||||||
#vm_start(c, vmname)
|
# vm_start(c, vmname)
|
||||||
vm_start(c, vmname, hostname, ip, netmask, gateway, domain, dns, rootpw, key)
|
vm_start(c, vmname, hostname, ip, netmask, gateway, domain, dns, rootpw, key)
|
||||||
module.exit_json(changed=True, msg="VM %s started" % vmname)
|
module.exit_json(changed=True, msg="VM %s started" % vmname)
|
||||||
|
|
||||||
|
|
|
@ -1,85 +1,67 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
|
||||||
# Copyright (c) 2016 Red Hat, Inc.
|
# Copyright: (c) 2017, Ansible Project
|
||||||
#
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||||
# This file is part of Ansible
|
|
||||||
#
|
|
||||||
# Ansible is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# Ansible is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||||
'status': ['preview'],
|
'status': ['preview'],
|
||||||
'supported_by': 'community'}
|
'supported_by': 'community'}
|
||||||
|
|
||||||
|
|
||||||
DOCUMENTATION = '''
|
DOCUMENTATION = '''
|
||||||
---
|
---
|
||||||
module: ovirt_affinity_group
|
module: ovirt_affinity_group
|
||||||
short_description: Module to manage affinity groups in oVirt/RHV
|
short_description: Module to manage affinity groups in oVirt/RHV
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
author: "Ondra Machacek (@machacekondra)"
|
author:
|
||||||
|
- Ondra Machacek (@machacekondra)
|
||||||
description:
|
description:
|
||||||
- "This module manage affinity groups in oVirt/RHV. It can also manage assignments
|
- "This module manage affinity groups in oVirt/RHV. It can also manage assignments
|
||||||
of those groups to VMs."
|
of those groups to VMs."
|
||||||
options:
|
options:
|
||||||
name:
|
name:
|
||||||
description:
|
description:
|
||||||
- "Name of the affinity group to manage."
|
- Name of the affinity group to manage.
|
||||||
required: true
|
required: true
|
||||||
state:
|
state:
|
||||||
description:
|
description:
|
||||||
- "Should the affinity group be present or absent."
|
- Should the affinity group be present or absent.
|
||||||
choices: ['present', 'absent']
|
choices: [ absent, present ]
|
||||||
default: present
|
default: present
|
||||||
cluster:
|
cluster:
|
||||||
description:
|
description:
|
||||||
- "Name of the cluster of the affinity group."
|
- Name of the cluster of the affinity group.
|
||||||
description:
|
description:
|
||||||
description:
|
description:
|
||||||
- "Description of the affinity group."
|
- Description of the affinity group.
|
||||||
host_enforcing:
|
host_enforcing:
|
||||||
description:
|
description:
|
||||||
- "If I(true) VM cannot start on host if it does not satisfy the C(host_rule)."
|
- If I(yes) VM cannot start on host if it does not satisfy the C(host_rule).
|
||||||
- "C(This parameter is support since oVirt/RHV 4.1 version.)"
|
- This parameter is support since oVirt/RHV 4.1 version.
|
||||||
|
type: bool
|
||||||
host_rule:
|
host_rule:
|
||||||
description:
|
description:
|
||||||
- "If I(positive) I(all) VMs in this group should run on the this host."
|
- If I(positive) I(all) VMs in this group should run on the this host.
|
||||||
- "If I(negative) I(no) VMs in this group should run on the this host."
|
- If I(negative) I(no) VMs in this group should run on the this host.
|
||||||
- "C(This parameter is support since oVirt/RHV 4.1 version.)"
|
- This parameter is support since oVirt/RHV 4.1 version.
|
||||||
choices:
|
choices: [ negative, positive ]
|
||||||
- positive
|
|
||||||
- negative
|
|
||||||
vm_enforcing:
|
vm_enforcing:
|
||||||
description:
|
description:
|
||||||
- "If I(true) VM cannot start if it does not satisfy the C(vm_rule)."
|
- If I(yes) VM cannot start if it does not satisfy the C(vm_rule).
|
||||||
|
type: bool
|
||||||
vm_rule:
|
vm_rule:
|
||||||
description:
|
description:
|
||||||
- "If I(positive) I(all) VMs in this group should run on the host defined by C(host_rule)."
|
- If I(positive) I(all) VMs in this group should run on the host defined by C(host_rule).
|
||||||
- "If I(negative) I(no) VMs in this group should run on the host defined by C(host_rule)."
|
- If I(negative) I(no) VMs in this group should run on the host defined by C(host_rule).
|
||||||
- "If I(disabled) this affinity group doesn't take effect."
|
- If I(disabled) this affinity group doesn't take effect.
|
||||||
choices:
|
choices: [ disabled, negative, positive ]
|
||||||
- positive
|
|
||||||
- negative
|
|
||||||
- disabled
|
|
||||||
vms:
|
vms:
|
||||||
description:
|
description:
|
||||||
- "List of the VMs names, which should have assigned this affinity group."
|
- List of the VMs names, which should have assigned this affinity group.
|
||||||
hosts:
|
hosts:
|
||||||
description:
|
description:
|
||||||
- "List of the hosts names, which should have assigned this affinity group."
|
- List of the hosts names, which should have assigned this affinity group.
|
||||||
- "C(This parameter is support since oVirt/RHV 4.1 version.)"
|
- This parameter is support since oVirt/RHV 4.1 version.
|
||||||
extends_documentation_fragment: ovirt
|
extends_documentation_fragment: ovirt
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
@ -87,8 +69,8 @@ EXAMPLES = '''
|
||||||
# Examples don't contain auth parameter for simplicity,
|
# Examples don't contain auth parameter for simplicity,
|
||||||
# look at ovirt_auth module to see how to reuse authentication:
|
# look at ovirt_auth module to see how to reuse authentication:
|
||||||
|
|
||||||
# Create(if not exists) and assign affinity group to VMs vm1 and vm2 and host host1
|
- name: Create(if not exists) and assign affinity group to VMs vm1 and vm2 and host host1
|
||||||
- ovirt_affinity_group:
|
ovirt_affinity_group:
|
||||||
name: mygroup
|
name: mygroup
|
||||||
cluster: mycluster
|
cluster: mycluster
|
||||||
vm_enforcing: true
|
vm_enforcing: true
|
||||||
|
@ -101,8 +83,8 @@ EXAMPLES = '''
|
||||||
hosts:
|
hosts:
|
||||||
- host1
|
- host1
|
||||||
|
|
||||||
# Detach VMs from affinity group and disable VM rule:
|
- name: Detach VMs from affinity group and disable VM rule
|
||||||
- ovirt_affinity_group:
|
ovirt_affinity_group:
|
||||||
name: mygroup
|
name: mygroup
|
||||||
cluster: mycluster
|
cluster: mycluster
|
||||||
vm_enforcing: false
|
vm_enforcing: false
|
||||||
|
@ -114,8 +96,8 @@ EXAMPLES = '''
|
||||||
- host1
|
- host1
|
||||||
- host2
|
- host2
|
||||||
|
|
||||||
# Remove affinity group
|
- name: Remove affinity group
|
||||||
- ovirt_affinity_group:
|
ovirt_affinity_group:
|
||||||
state: absent
|
state: absent
|
||||||
cluster: mycluster
|
cluster: mycluster
|
||||||
name: mygroup
|
name: mygroup
|
||||||
|
@ -245,13 +227,10 @@ class AffinityGroupsModule(BaseModule):
|
||||||
def update_check(self, entity):
|
def update_check(self, entity):
|
||||||
assigned_vms = self.assigned_vms(entity)
|
assigned_vms = self.assigned_vms(entity)
|
||||||
do_update = (
|
do_update = (
|
||||||
equal(self.param('description'), entity.description)
|
equal(self.param('description'), entity.description) and equal(self.param('vm_enforcing'), entity.enforcing) and equal(
|
||||||
and equal(self.param('vm_enforcing'), entity.enforcing)
|
|
||||||
and equal(
|
|
||||||
self.param('vm_rule') == 'positive' if self.param('vm_rule') else None,
|
self.param('vm_rule') == 'positive' if self.param('vm_rule') else None,
|
||||||
entity.positive
|
entity.positive
|
||||||
)
|
) and equal(self._vm_ids, assigned_vms)
|
||||||
and equal(self._vm_ids, assigned_vms)
|
|
||||||
)
|
)
|
||||||
# Following attributes is supported since 4.1,
|
# Following attributes is supported since 4.1,
|
||||||
# so return if it doesn't exist:
|
# so return if it doesn't exist:
|
||||||
|
@ -262,32 +241,24 @@ class AffinityGroupsModule(BaseModule):
|
||||||
return do_update and (
|
return do_update and (
|
||||||
equal(
|
equal(
|
||||||
self.param('host_rule') == 'positive' if self.param('host_rule') else None,
|
self.param('host_rule') == 'positive' if self.param('host_rule') else None,
|
||||||
entity.hosts_rule.positive
|
entity.hosts_rule.positive) and equal(self.param('host_enforcing'), entity.hosts_rule.enforcing) and equal(
|
||||||
)
|
|
||||||
and equal(self.param('host_enforcing'), entity.hosts_rule.enforcing)
|
|
||||||
and equal(
|
|
||||||
self.param('vm_rule') in ['negative', 'positive'] if self.param('vm_rule') else None,
|
self.param('vm_rule') in ['negative', 'positive'] if self.param('vm_rule') else None,
|
||||||
entity.vms_rule.enabled
|
entity.vms_rule.enabled) and equal(self._host_ids, sorted([host.id for host in entity.hosts]))
|
||||||
)
|
|
||||||
and equal(self._host_ids, sorted([host.id for host in entity.hosts]))
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
argument_spec = ovirt_full_argument_spec(
|
argument_spec = ovirt_full_argument_spec(
|
||||||
state=dict(
|
state=dict(type='str', default='present', choices=['absent', 'present']),
|
||||||
choices=['present', 'absent'],
|
cluster=dict(type='str', required=True),
|
||||||
default='present',
|
name=dict(type='str', required=True),
|
||||||
),
|
description=dict(type='str'),
|
||||||
cluster=dict(default=None, required=True),
|
vm_enforcing=dict(type='bool'),
|
||||||
name=dict(default=None, required=True),
|
vm_rule=dict(type='str', choices=['disabled', 'negative', 'positive']),
|
||||||
description=dict(default=None),
|
host_enforcing=dict(type='bool'),
|
||||||
vm_enforcing=dict(default=None, type='bool'),
|
host_rule=dict(type='str', choices=['negative', 'positive']),
|
||||||
vm_rule=dict(default=None, choices=['positive', 'negative', 'disabled']),
|
vms=dict(type='list'),
|
||||||
host_enforcing=dict(default=None, type='bool'),
|
hosts=dict(type='list'),
|
||||||
host_rule=dict(default=None, choices=['positive', 'negative']),
|
|
||||||
vms=dict(default=None, type='list'),
|
|
||||||
hosts=dict(default=None, type='list'),
|
|
||||||
)
|
)
|
||||||
module = AnsibleModule(
|
module = AnsibleModule(
|
||||||
argument_spec=argument_spec,
|
argument_spec=argument_spec,
|
||||||
|
|
|
@ -1,71 +1,56 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
|
||||||
# Copyright (c) 2016 Red Hat, Inc.
|
# Copyright: (c) 2017, Ansible Project
|
||||||
#
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||||
# This file is part of Ansible
|
|
||||||
#
|
|
||||||
# Ansible is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# Ansible is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||||
'status': ['preview'],
|
'status': ['preview'],
|
||||||
'supported_by': 'community'}
|
'supported_by': 'community'}
|
||||||
|
|
||||||
|
|
||||||
DOCUMENTATION = '''
|
DOCUMENTATION = '''
|
||||||
---
|
---
|
||||||
module: ovirt_nics
|
module: ovirt_nics
|
||||||
short_description: Module to manage network interfaces of Virtual Machines in oVirt/RHV
|
short_description: Module to manage network interfaces of Virtual Machines in oVirt/RHV
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
author: "Ondra Machacek (@machacekondra)"
|
author:
|
||||||
|
- Ondra Machacek (@machacekondra)
|
||||||
description:
|
description:
|
||||||
- "Module to manage network interfaces of Virtual Machines in oVirt/RHV."
|
- Module to manage network interfaces of Virtual Machines in oVirt/RHV.
|
||||||
options:
|
options:
|
||||||
name:
|
name:
|
||||||
description:
|
description:
|
||||||
- "Name of the network interface to manage."
|
- Name of the network interface to manage.
|
||||||
required: true
|
required: true
|
||||||
vm:
|
vm:
|
||||||
description:
|
description:
|
||||||
- "Name of the Virtual Machine to manage."
|
- Name of the Virtual Machine to manage.
|
||||||
- "You must provide either C(vm) parameter or C(template) parameter."
|
- You must provide either C(vm) parameter or C(template) parameter.
|
||||||
template:
|
template:
|
||||||
description:
|
description:
|
||||||
- "Name of the template to manage."
|
- Name of the template to manage.
|
||||||
- "You must provide either C(vm) parameter or C(template) parameter."
|
- You must provide either C(vm) parameter or C(template) parameter.
|
||||||
version_added: "2.4"
|
version_added: "2.4"
|
||||||
state:
|
state:
|
||||||
description:
|
description:
|
||||||
- "Should the Virtual Machine NIC be present/absent/plugged/unplugged."
|
- Should the Virtual Machine NIC be present/absent/plugged/unplugged.
|
||||||
choices: ['present', 'absent', 'plugged', 'unplugged']
|
choices: [ absent, plugged, present, unplugged ]
|
||||||
default: present
|
default: present
|
||||||
network:
|
network:
|
||||||
description:
|
description:
|
||||||
- "Logical network to which the VM network interface should use,
|
- Logical network to which the VM network interface should use,
|
||||||
by default Empty network is used if network is not specified."
|
by default Empty network is used if network is not specified.
|
||||||
profile:
|
profile:
|
||||||
description:
|
description:
|
||||||
- "Virtual network interface profile to be attached to VM network interface."
|
- Virtual network interface profile to be attached to VM network interface.
|
||||||
interface:
|
interface:
|
||||||
description:
|
description:
|
||||||
- "Type of the network interface."
|
- Type of the network interface.
|
||||||
choices: ['virtio', 'e1000', 'rtl8139', 'pci_passthrough', 'rtl8139_virtio', 'spapr_vlan']
|
choices: [ e1000, pci_passthrough, rtl8139, rtl8139_virtio, spapr_vlan, virtio ]
|
||||||
default: 'virtio'
|
default: virtio
|
||||||
mac_address:
|
mac_address:
|
||||||
description:
|
description:
|
||||||
- "Custom MAC address of the network interface, by default it's obtained from MAC pool."
|
- Custom MAC address of the network interface, by default it's obtained from MAC pool.
|
||||||
extends_documentation_fragment: ovirt
|
extends_documentation_fragment: ovirt
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
@ -73,8 +58,8 @@ EXAMPLES = '''
|
||||||
# Examples don't contain auth parameter for simplicity,
|
# Examples don't contain auth parameter for simplicity,
|
||||||
# look at ovirt_auth module to see how to reuse authentication:
|
# look at ovirt_auth module to see how to reuse authentication:
|
||||||
|
|
||||||
# Add NIC to VM
|
- name: Add NIC to VM
|
||||||
- ovirt_nics:
|
ovirt_nics:
|
||||||
state: present
|
state: present
|
||||||
vm: myvm
|
vm: myvm
|
||||||
name: mynic
|
name: mynic
|
||||||
|
@ -83,21 +68,20 @@ EXAMPLES = '''
|
||||||
profile: ovirtmgmt
|
profile: ovirtmgmt
|
||||||
network: ovirtmgmt
|
network: ovirtmgmt
|
||||||
|
|
||||||
# Plug NIC to VM
|
- name: Plug NIC to VM
|
||||||
- ovirt_nics:
|
ovirt_nics:
|
||||||
state: plugged
|
state: plugged
|
||||||
vm: myvm
|
vm: myvm
|
||||||
name: mynic
|
name: mynic
|
||||||
|
|
||||||
# Unplug NIC from VM
|
- name: Unplug NIC from VM
|
||||||
- ovirt_nics:
|
ovirt_nics:
|
||||||
state: unplugged
|
state: unplugged
|
||||||
vm: myvm
|
vm: myvm
|
||||||
name: mynic
|
name: mynic
|
||||||
|
|
||||||
|
- name: Add NIC to template
|
||||||
# add NIC to template
|
ovirt_nics:
|
||||||
- ovirt_nics:
|
|
||||||
auth: "{{ ovirt_auth }}"
|
auth: "{{ ovirt_auth }}"
|
||||||
state: present
|
state: present
|
||||||
template: my_template
|
template: my_template
|
||||||
|
@ -106,13 +90,11 @@ EXAMPLES = '''
|
||||||
profile: ovirtmgmt
|
profile: ovirtmgmt
|
||||||
network: ovirtmgmt
|
network: ovirtmgmt
|
||||||
|
|
||||||
|
- name: Remove NIC from VM
|
||||||
# Remove NIC from VM
|
ovirt_nics:
|
||||||
- ovirt_nics:
|
|
||||||
state: absent
|
state: absent
|
||||||
vm: myvm
|
vm: myvm
|
||||||
name: mynic
|
name: mynic
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
RETURN = '''
|
RETURN = '''
|
||||||
|
@ -191,22 +173,19 @@ class EntityNicsModule(BaseModule):
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
argument_spec = ovirt_full_argument_spec(
|
argument_spec = ovirt_full_argument_spec(
|
||||||
state=dict(
|
state=dict(type='str', default='present', choices=['absent', 'plugged', 'present', 'unplugged']),
|
||||||
choices=['present', 'absent', 'plugged', 'unplugged'],
|
vm=dict(type='str'),
|
||||||
default='present'
|
template=dict(type='str'),
|
||||||
),
|
name=dict(type='str', required=True),
|
||||||
vm=dict(required=False),
|
interface=dict(type='str'),
|
||||||
template=dict(required=False),
|
profile=dict(type='str'),
|
||||||
name=dict(required=True),
|
network=dict(type='str'),
|
||||||
interface=dict(default=None),
|
mac_address=dict(type='str'),
|
||||||
profile=dict(default=None),
|
|
||||||
network=dict(default=None),
|
|
||||||
mac_address=dict(default=None),
|
|
||||||
)
|
)
|
||||||
module = AnsibleModule(
|
module = AnsibleModule(
|
||||||
argument_spec=argument_spec,
|
argument_spec=argument_spec,
|
||||||
supports_check_mode=True,
|
supports_check_mode=True,
|
||||||
required_one_of=[['vm', 'template']]
|
required_one_of=[['vm', 'template']],
|
||||||
)
|
)
|
||||||
check_sdk(module)
|
check_sdk(module)
|
||||||
|
|
||||||
|
|
|
@ -1,92 +1,75 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
|
||||||
# Copyright (c) 2016 Red Hat, Inc.
|
# Copyright: (c) 2017, Ansible Project
|
||||||
#
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||||
# This file is part of Ansible
|
|
||||||
#
|
|
||||||
# Ansible is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# Ansible is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||||
'status': ['preview'],
|
'status': ['preview'],
|
||||||
'supported_by': 'community'}
|
'supported_by': 'community'}
|
||||||
|
|
||||||
|
|
||||||
DOCUMENTATION = '''
|
DOCUMENTATION = '''
|
||||||
---
|
---
|
||||||
module: ovirt_permissions
|
module: ovirt_permissions
|
||||||
short_description: "Module to manage permissions of users/groups in oVirt/RHV"
|
short_description: Module to manage permissions of users/groups in oVirt/RHV
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
author: "Ondra Machacek (@machacekondra)"
|
author:
|
||||||
|
- Ondra Machacek (@machacekondra)
|
||||||
description:
|
description:
|
||||||
- "Module to manage permissions of users/groups in oVirt/RHV"
|
- Module to manage permissions of users/groups in oVirt/RHV.
|
||||||
options:
|
options:
|
||||||
role:
|
role:
|
||||||
description:
|
description:
|
||||||
- "Name of the role to be assigned to user/group on specific object."
|
- Name of the role to be assigned to user/group on specific object.
|
||||||
default: UserRole
|
default: UserRole
|
||||||
state:
|
state:
|
||||||
description:
|
description:
|
||||||
- "Should the permission be present/absent."
|
- Should the permission be present/absent.
|
||||||
choices: ['present', 'absent']
|
choices: [ absent, present ]
|
||||||
default: present
|
default: present
|
||||||
object_id:
|
object_id:
|
||||||
description:
|
description:
|
||||||
- "ID of the object where the permissions should be managed."
|
- ID of the object where the permissions should be managed.
|
||||||
object_name:
|
object_name:
|
||||||
description:
|
description:
|
||||||
- "Name of the object where the permissions should be managed."
|
- Name of the object where the permissions should be managed.
|
||||||
object_type:
|
object_type:
|
||||||
description:
|
description:
|
||||||
- "The object where the permissions should be managed."
|
- The object where the permissions should be managed.
|
||||||
default: 'vm'
|
choices:
|
||||||
choices: [
|
- cluster
|
||||||
'data_center',
|
- cpu_profile
|
||||||
'cluster',
|
- data_center
|
||||||
'host',
|
- disk
|
||||||
'storage_domain',
|
- disk_profile
|
||||||
'network',
|
- host
|
||||||
'disk',
|
- network
|
||||||
'vm',
|
- storage_domain
|
||||||
'vm_pool',
|
- system
|
||||||
'template',
|
- template
|
||||||
'cpu_profile',
|
- vm
|
||||||
'disk_profile',
|
- vm_pool
|
||||||
'vnic_profile',
|
- vnic_profile
|
||||||
'system',
|
default: vm
|
||||||
]
|
|
||||||
user_name:
|
user_name:
|
||||||
description:
|
description:
|
||||||
- "Username of the user to manage. In most LDAPs it's I(uid) of the user,
|
- Username of the user to manage. In most LDAPs it's I(uid) of the user,
|
||||||
but in Active Directory you must specify I(UPN) of the user."
|
but in Active Directory you must specify I(UPN) of the user.
|
||||||
- "Note that if user don't exist in the system this module will fail,
|
- Note that if user does not exist in the system this module will fail,
|
||||||
you should ensure the user exists by using M(ovirt_users) module."
|
you should ensure the user exists by using M(ovirt_users) module.
|
||||||
group_name:
|
group_name:
|
||||||
description:
|
description:
|
||||||
- "Name of the group to manage."
|
- Name of the group to manage.
|
||||||
- "Note that if group don't exist in the system this module will fail,
|
- Note that if group does not exist in the system this module will fail,
|
||||||
you should ensure the group exists by using M(ovirt_groups) module."
|
you should ensure the group exists by using M(ovirt_groups) module.
|
||||||
authz_name:
|
authz_name:
|
||||||
description:
|
description:
|
||||||
- "Authorization provider of the user/group. In previous versions of oVirt/RHV known as domain."
|
- Authorization provider of the user/group.
|
||||||
required: true
|
required: true
|
||||||
aliases: ['domain']
|
aliases: [ domain ]
|
||||||
namespace:
|
namespace:
|
||||||
description:
|
description:
|
||||||
- "Namespace of the authorization provider, where user/group resides."
|
- Namespace of the authorization provider, where user/group resides.
|
||||||
required: false
|
|
||||||
extends_documentation_fragment: ovirt
|
extends_documentation_fragment: ovirt
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
@ -94,16 +77,16 @@ EXAMPLES = '''
|
||||||
# Examples don't contain auth parameter for simplicity,
|
# Examples don't contain auth parameter for simplicity,
|
||||||
# look at ovirt_auth module to see how to reuse authentication:
|
# look at ovirt_auth module to see how to reuse authentication:
|
||||||
|
|
||||||
# Add user user1 from authorization provider example.com-authz
|
- name: Add user user1 from authorization provider example.com-authz
|
||||||
- ovirt_permissions:
|
ovirt_permissions:
|
||||||
user_name: user1
|
user_name: user1
|
||||||
authz_name: example.com-authz
|
authz_name: example.com-authz
|
||||||
object_type: vm
|
object_type: vm
|
||||||
object_name: myvm
|
object_name: myvm
|
||||||
role: UserVmManager
|
role: UserVmManager
|
||||||
|
|
||||||
# Remove permission from user
|
- name: Remove permission from user
|
||||||
- ovirt_permissions:
|
ovirt_permissions:
|
||||||
state: absent
|
state: absent
|
||||||
user_name: user1
|
user_name: user1
|
||||||
authz_name: example.com-authz
|
authz_name: example.com-authz
|
||||||
|
@ -241,35 +224,30 @@ class PermissionsModule(BaseModule):
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
argument_spec = ovirt_full_argument_spec(
|
argument_spec = ovirt_full_argument_spec(
|
||||||
state=dict(
|
state=dict(type='str', default='present', choices=['absent', 'present']),
|
||||||
choices=['present', 'absent'],
|
role=dict(type='str', default='UserRole'),
|
||||||
default='present',
|
object_type=dict(type='str', default='vm',
|
||||||
),
|
|
||||||
role=dict(default='UserRole'),
|
|
||||||
object_type=dict(
|
|
||||||
default='vm',
|
|
||||||
choices=[
|
choices=[
|
||||||
'data_center',
|
|
||||||
'cluster',
|
'cluster',
|
||||||
'host',
|
'cpu_profile',
|
||||||
'storage_domain',
|
'data_center',
|
||||||
'network',
|
|
||||||
'disk',
|
'disk',
|
||||||
|
'disk_profile',
|
||||||
|
'host',
|
||||||
|
'network',
|
||||||
|
'storage_domain',
|
||||||
|
'system',
|
||||||
|
'template',
|
||||||
'vm',
|
'vm',
|
||||||
'vm_pool',
|
'vm_pool',
|
||||||
'template',
|
|
||||||
'cpu_profile',
|
|
||||||
'disk_profile',
|
|
||||||
'vnic_profile',
|
'vnic_profile',
|
||||||
'system',
|
]),
|
||||||
]
|
authz_name=dict(type='str', required=True, aliases=['domain']),
|
||||||
),
|
object_id=dict(type='str'),
|
||||||
authz_name=dict(required=True, aliases=['domain']),
|
object_name=dict(type='str'),
|
||||||
object_id=dict(default=None),
|
user_name=dict(type='str'),
|
||||||
object_name=dict(default=None),
|
group_name=dict(type='str'),
|
||||||
user_name=dict(rdefault=None),
|
namespace=dict(type='str'),
|
||||||
group_name=dict(default=None),
|
|
||||||
namespace=dict(default=None),
|
|
||||||
)
|
)
|
||||||
module = AnsibleModule(
|
module = AnsibleModule(
|
||||||
argument_spec=argument_spec,
|
argument_spec=argument_spec,
|
||||||
|
@ -277,10 +255,7 @@ def main():
|
||||||
)
|
)
|
||||||
check_sdk(module)
|
check_sdk(module)
|
||||||
|
|
||||||
if (
|
if (module.params['object_name'] is None and module.params['object_id'] is None) and module.params['object_type'] != 'system':
|
||||||
(module.params['object_name'] is None and module.params['object_id'] is None)
|
|
||||||
and module.params['object_type'] != 'system'
|
|
||||||
):
|
|
||||||
module.fail_json(msg='"object_name" or "object_id" is required')
|
module.fail_json(msg='"object_name" or "object_id" is required')
|
||||||
|
|
||||||
if module.params['user_name'] is None and module.params['group_name'] is None:
|
if module.params['user_name'] is None and module.params['group_name'] is None:
|
||||||
|
|
|
@ -1,345 +1,374 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
|
||||||
# Copyright (c) 2016 Red Hat, Inc.
|
# Copyright: (c) 2017, Ansible Project
|
||||||
#
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||||
# This file is part of Ansible
|
|
||||||
#
|
|
||||||
# Ansible is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# Ansible is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
ANSIBLE_METADATA = {'metadata_version': '1.1',
|
||||||
'status': ['preview'],
|
'status': ['preview'],
|
||||||
'supported_by': 'community'}
|
'supported_by': 'community'}
|
||||||
|
|
||||||
|
|
||||||
DOCUMENTATION = '''
|
DOCUMENTATION = '''
|
||||||
---
|
---
|
||||||
module: ovirt_vms
|
module: ovirt_vms
|
||||||
short_description: "Module to manage Virtual Machines in oVirt/RHV"
|
short_description: Module to manage Virtual Machines in oVirt/RHV
|
||||||
version_added: "2.2"
|
version_added: "2.2"
|
||||||
author: "Ondra Machacek (@machacekondra)"
|
author:
|
||||||
|
- Ondra Machacek (@machacekondra)
|
||||||
description:
|
description:
|
||||||
- "This module manages whole lifecycle of the Virtual Machine(VM) in oVirt/RHV. Since VM can hold many states in oVirt/RHV,
|
- This module manages whole lifecycle of the Virtual Machine(VM) in oVirt/RHV.
|
||||||
this see notes to see how the states of the VM are handled."
|
- Since VM can hold many states in oVirt/RHV, this see notes to see how the states of the VM are handled.
|
||||||
options:
|
options:
|
||||||
name:
|
name:
|
||||||
description:
|
description:
|
||||||
- "Name of the Virtual Machine to manage. If VM don't exists C(name) is required.
|
- Name of the Virtual Machine to manage.
|
||||||
Otherwise C(id) or C(name) can be used."
|
- If VM don't exists C(name) is required. Otherwise C(id) or C(name) can be used.
|
||||||
id:
|
id:
|
||||||
description:
|
description:
|
||||||
- "ID of the Virtual Machine to manage."
|
- ID of the Virtual Machine to manage.
|
||||||
state:
|
state:
|
||||||
description:
|
description:
|
||||||
- "Should the Virtual Machine be running/stopped/present/absent/suspended/next_run/registered.
|
- Should the Virtual Machine be running/stopped/present/absent/suspended/next_run/registered.
|
||||||
When C(state) is I(registered) and the unregistered VM's name
|
When C(state) is I(registered) and the unregistered VM's name
|
||||||
belongs to an already registered in engine VM in the same DC
|
belongs to an already registered in engine VM in the same DC
|
||||||
then we fail to register the unregistered template."
|
then we fail to register the unregistered template.
|
||||||
- "I(present) state will create/update VM and don't change its state if it already exists."
|
- I(present) state will create/update VM and don't change its state if it already exists.
|
||||||
- "I(running) state will create/update VM and start it."
|
- I(running) state will create/update VM and start it.
|
||||||
- "I(next_run) state updates the VM and if the VM has next run configuration it will be rebooted."
|
- I(next_run) state updates the VM and if the VM has next run configuration it will be rebooted.
|
||||||
- "Please check I(notes) to more detailed description of states."
|
- Please check I(notes) to more detailed description of states.
|
||||||
- "I(registered) is supported since 2.4"
|
- I(registered) is supported since 2.4.
|
||||||
choices: ['running', 'stopped', 'present', 'absent', 'suspended', 'next_run', 'registered']
|
choices: [ absent, next_run, present, registered, running, stopped, suspended ]
|
||||||
default: present
|
default: present
|
||||||
cluster:
|
cluster:
|
||||||
description:
|
description:
|
||||||
- "Name of the cluster, where Virtual Machine should be created. Required if creating VM."
|
- Name of the cluster, where Virtual Machine should be created.
|
||||||
|
- Required if creating VM.
|
||||||
allow_partial_import:
|
allow_partial_import:
|
||||||
description:
|
description:
|
||||||
- "Boolean indication whether to allow partial registration of Virtual Machine when C(state) is registered."
|
- Boolean indication whether to allow partial registration of Virtual Machine when C(state) is registered.
|
||||||
version_added: "2.4"
|
version_added: "2.4"
|
||||||
template:
|
template:
|
||||||
description:
|
description:
|
||||||
- "Name of the template, which should be used to create Virtual Machine. Required if creating VM."
|
- Name of the template, which should be used to create Virtual Machine.
|
||||||
- "If template is not specified and VM doesn't exist, VM will be created from I(Blank) template."
|
- Required if creating VM.
|
||||||
|
- If template is not specified and VM doesn't exist, VM will be created from I(Blank) template.
|
||||||
template_version:
|
template_version:
|
||||||
description:
|
description:
|
||||||
- "Version number of the template to be used for VM."
|
- Version number of the template to be used for VM.
|
||||||
- "By default the latest available version of the template is used."
|
- By default the latest available version of the template is used.
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
use_latest_template_version:
|
use_latest_template_version:
|
||||||
description:
|
description:
|
||||||
- "Specify if latest template version should be used, when running a stateless VM."
|
- Specify if latest template version should be used, when running a stateless VM.
|
||||||
- "If this parameter is set to I(true) stateless VM is created."
|
- If this parameter is set to I(yes) stateless VM is created.
|
||||||
|
type: bool
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
storage_domain:
|
storage_domain:
|
||||||
description:
|
description:
|
||||||
- "Name of the storage domain where all template disks should be created."
|
- Name of the storage domain where all template disks should be created.
|
||||||
- "This parameter is considered only when C(template) is provided."
|
- This parameter is considered only when C(template) is provided.
|
||||||
- "C(**IMPORTANT**)"
|
- IMPORTANT - This parameter is not idempotent, if the VM exists and you specfiy different storage domain,
|
||||||
- "This parameter is not idempotent, if the VM exists and you specfiy different storage domain,
|
disk won't move.
|
||||||
disk won't move."
|
|
||||||
version_added: "2.4"
|
version_added: "2.4"
|
||||||
disk_format:
|
disk_format:
|
||||||
description:
|
description:
|
||||||
- "Specify format of the disk."
|
- Specify format of the disk.
|
||||||
- "If (cow) format is used, disk will by created as sparse, so space will be allocated for the volume as needed, also known as I(thin provision)."
|
- If C(cow) format is used, disk will by created as sparse, so space will be allocated for the volume as needed, also known as I(thin provision).
|
||||||
- "If (raw) format is used, disk storage will be allocated right away, also known as I(preallocated)."
|
- If C(raw) format is used, disk storage will be allocated right away, also known as I(preallocated).
|
||||||
- "Note that this option isn't idempotent as it's not currently possible to change format of the disk via API."
|
- Note that this option isn't idempotent as it's not currently possible to change format of the disk via API.
|
||||||
- "This parameter is considered only when C(template) and C(storage domain) is provided."
|
- This parameter is considered only when C(template) and C(storage domain) is provided.
|
||||||
choices: ['cow', 'raw']
|
choices: [ cow, raw ]
|
||||||
default: cow
|
default: cow
|
||||||
version_added: "2.4"
|
version_added: "2.4"
|
||||||
memory:
|
memory:
|
||||||
description:
|
description:
|
||||||
- "Amount of memory of the Virtual Machine. Prefix uses IEC 60027-2 standard (for example 1GiB, 1024MiB)."
|
- Amount of memory of the Virtual Machine. Prefix uses IEC 60027-2 standard (for example 1GiB, 1024MiB).
|
||||||
- "Default value is set by engine."
|
- Default value is set by engine.
|
||||||
memory_guaranteed:
|
memory_guaranteed:
|
||||||
description:
|
description:
|
||||||
- "Amount of minimal guaranteed memory of the Virtual Machine.
|
- Amount of minimal guaranteed memory of the Virtual Machine.
|
||||||
Prefix uses IEC 60027-2 standard (for example 1GiB, 1024MiB)."
|
Prefix uses IEC 60027-2 standard (for example 1GiB, 1024MiB).
|
||||||
- "C(memory_guaranteed) parameter can't be lower than C(memory) parameter. Default value is set by engine."
|
- C(memory_guaranteed) parameter can't be lower than C(memory) parameter.
|
||||||
|
- Default value is set by engine.
|
||||||
cpu_shares:
|
cpu_shares:
|
||||||
description:
|
description:
|
||||||
- "Set a CPU shares for this Virtual Machine. Default value is set by oVirt/RHV engine."
|
- Set a CPU shares for this Virtual Machine.
|
||||||
|
- Default value is set by oVirt/RHV engine.
|
||||||
cpu_cores:
|
cpu_cores:
|
||||||
description:
|
description:
|
||||||
- "Number of virtual CPUs cores of the Virtual Machine. Default value is set by oVirt/RHV engine."
|
- Number of virtual CPUs cores of the Virtual Machine.
|
||||||
|
- Default value is set by oVirt/RHV engine.
|
||||||
cpu_sockets:
|
cpu_sockets:
|
||||||
description:
|
description:
|
||||||
- "Number of virtual CPUs sockets of the Virtual Machine. Default value is set by oVirt/RHV engine."
|
- Number of virtual CPUs sockets of the Virtual Machine.
|
||||||
|
- Default value is set by oVirt/RHV engine.
|
||||||
type:
|
type:
|
||||||
description:
|
description:
|
||||||
- "Type of the Virtual Machine. Default value is set by oVirt/RHV engine."
|
- Type of the Virtual Machine.
|
||||||
choices: [server, desktop]
|
- Default value is set by oVirt/RHV engine.
|
||||||
|
choices: [ desktop, server ]
|
||||||
operating_system:
|
operating_system:
|
||||||
description:
|
description:
|
||||||
- "Operating system of the Virtual Machine. Default value is set by oVirt/RHV engine."
|
- Operating system of the Virtual Machine.
|
||||||
choices: [
|
- Default value is set by oVirt/RHV engine.
|
||||||
rhel_6_ppc64, other, freebsd, windows_2003x64, windows_10, rhel_6x64, rhel_4x64, windows_2008x64,
|
choices:
|
||||||
windows_2008R2x64, debian_7, windows_2012x64, ubuntu_14_04, ubuntu_12_04, ubuntu_13_10, windows_8x64,
|
- debian_7
|
||||||
other_linux_ppc64, windows_2003, other_linux, windows_10x64, windows_2008, rhel_3, rhel_5, rhel_4,
|
- freebsd
|
||||||
other_ppc64, sles_11, rhel_6, windows_xp, rhel_7x64, freebsdx64, rhel_7_ppc64, windows_7, rhel_5x64,
|
- freebsdx64
|
||||||
ubuntu_14_04_ppc64, sles_11_ppc64, windows_8, windows_2012R2x64, windows_2008r2x64, ubuntu_13_04,
|
- other
|
||||||
ubuntu_12_10, windows_7x64
|
- other_linux
|
||||||
]
|
- other_linux_ppc64
|
||||||
|
- other_ppc64
|
||||||
|
- rhel_3
|
||||||
|
- rhel_4
|
||||||
|
- rhel_4x64
|
||||||
|
- rhel_5
|
||||||
|
- rhel_5x64
|
||||||
|
- rhel_6
|
||||||
|
- rhel_6x64
|
||||||
|
- rhel_6_ppc64
|
||||||
|
- rhel_7x64
|
||||||
|
- rhel_7_ppc64
|
||||||
|
- sles_11
|
||||||
|
- sles_11_ppc64
|
||||||
|
- ubuntu_12_04
|
||||||
|
- ubuntu_12_10
|
||||||
|
- ubuntu_13_04
|
||||||
|
- ubuntu_13_10
|
||||||
|
- ubuntu_14_04
|
||||||
|
- ubuntu_14_04_ppc64
|
||||||
|
- windows_10
|
||||||
|
- windows_10x64
|
||||||
|
- windows_2003
|
||||||
|
- windows_2003x64
|
||||||
|
- windows_2008
|
||||||
|
- windows_2008x64
|
||||||
|
- windows_2008r2x64
|
||||||
|
- windows_2008R2x64
|
||||||
|
- windows_2012x64
|
||||||
|
- windows_2012R2x64
|
||||||
|
- windows_7
|
||||||
|
- windows_7x64
|
||||||
|
- windows_8
|
||||||
|
- windows_8x64
|
||||||
|
- windows_xp
|
||||||
boot_devices:
|
boot_devices:
|
||||||
description:
|
description:
|
||||||
- "List of boot devices which should be used to boot. Choices I(network), I(hd) and I(cdrom)."
|
- List of boot devices which should be used to boot. For example C([ cdrom, hd ]).
|
||||||
- "For example: ['cdrom', 'hd']. Default value is set by oVirt/RHV engine."
|
- Default value is set by oVirt/RHV engine.
|
||||||
|
choices: [ cdrom, hd, network ]
|
||||||
host:
|
host:
|
||||||
description:
|
description:
|
||||||
- "Specify host where Virtual Machine should be running. By default the host is chosen by engine scheduler."
|
- Specify host where Virtual Machine should be running. By default the host is chosen by engine scheduler.
|
||||||
- "This parameter is used only when C(state) is I(running) or I(present)."
|
- This parameter is used only when C(state) is I(running) or I(present).
|
||||||
high_availability:
|
high_availability:
|
||||||
description:
|
description:
|
||||||
- "If I(True) Virtual Machine will be set as highly available."
|
- If I(yes) Virtual Machine will be set as highly available.
|
||||||
- "If I(False) Virtual Machine won't be set as highly available."
|
- If I(no) Virtual Machine won't be set as highly available.
|
||||||
- "If no value is passed, default value is set by oVirt/RHV engine."
|
- If no value is passed, default value is set by oVirt/RHV engine.
|
||||||
|
type: bool
|
||||||
lease:
|
lease:
|
||||||
description:
|
description:
|
||||||
- "Name of the storage domain this virtual machine lease reside on."
|
- Name of the storage domain this virtual machine lease reside on.
|
||||||
- "C(Note): Supported since oVirt 4.1."
|
- NOTE - Supported since oVirt 4.1.
|
||||||
version_added: "2.4"
|
version_added: "2.4"
|
||||||
delete_protected:
|
delete_protected:
|
||||||
description:
|
description:
|
||||||
- "If I(True) Virtual Machine will be set as delete protected."
|
- If I(yes) Virtual Machine will be set as delete protected.
|
||||||
- "If I(False) Virtual Machine won't be set as delete protected."
|
- If I(no) Virtual Machine won't be set as delete protected.
|
||||||
- "If no value is passed, default value is set by oVirt/RHV engine."
|
- If no value is passed, default value is set by oVirt/RHV engine.
|
||||||
stateless:
|
stateless:
|
||||||
description:
|
description:
|
||||||
- "If I(True) Virtual Machine will be set as stateless."
|
- If I(yes) Virtual Machine will be set as stateless.
|
||||||
- "If I(False) Virtual Machine will be unset as stateless."
|
- If I(no) Virtual Machine will be unset as stateless.
|
||||||
- "If no value is passed, default value is set by oVirt/RHV engine."
|
- If no value is passed, default value is set by oVirt/RHV engine.
|
||||||
clone:
|
clone:
|
||||||
description:
|
description:
|
||||||
- "If I(True) then the disks of the created virtual machine will be cloned and independent of the template."
|
- If I(yes) then the disks of the created virtual machine will be cloned and independent of the template.
|
||||||
- "This parameter is used only when C(state) is I(running) or I(present) and VM didn't exist before."
|
- This parameter is used only when C(state) is I(running) or I(present) and VM didn't exist before.
|
||||||
default: False
|
type: bool
|
||||||
|
default: 'no'
|
||||||
clone_permissions:
|
clone_permissions:
|
||||||
description:
|
description:
|
||||||
- "If I(True) then the permissions of the template (only the direct ones, not the inherited ones)
|
- If I(yes) then the permissions of the template (only the direct ones, not the inherited ones)
|
||||||
will be copied to the created virtual machine."
|
will be copied to the created virtual machine.
|
||||||
- "This parameter is used only when C(state) is I(running) or I(present) and VM didn't exist before."
|
- This parameter is used only when C(state) is I(running) or I(present) and VM didn't exist before.
|
||||||
default: False
|
type: bool
|
||||||
|
default: 'no'
|
||||||
cd_iso:
|
cd_iso:
|
||||||
description:
|
description:
|
||||||
- "ISO file from ISO storage domain which should be attached to Virtual Machine."
|
- ISO file from ISO storage domain which should be attached to Virtual Machine.
|
||||||
- "If you pass empty string the CD will be ejected from VM."
|
- If you pass empty string the CD will be ejected from VM.
|
||||||
- "If used with C(state) I(running) or I(present) and VM is running the CD will be attached to VM."
|
- If used with C(state) I(running) or I(present) and VM is running the CD will be attached to VM.
|
||||||
- "If used with C(state) I(running) or I(present) and VM is down the CD will be attached to VM persistently."
|
- If used with C(state) I(running) or I(present) and VM is down the CD will be attached to VM persistently.
|
||||||
force:
|
force:
|
||||||
description:
|
description:
|
||||||
- "Please check to I(Synopsis) to more detailed description of force parameter, it can behave differently
|
- Please check to I(Synopsis) to more detailed description of force parameter, it can behave differently
|
||||||
in different situations."
|
in different situations.
|
||||||
default: False
|
type: bool
|
||||||
|
default: 'no'
|
||||||
nics:
|
nics:
|
||||||
description:
|
description:
|
||||||
- "List of NICs, which should be attached to Virtual Machine. NIC is described by following dictionary:"
|
- List of NICs, which should be attached to Virtual Machine. NIC is described by following dictionary.
|
||||||
- "C(name) - Name of the NIC."
|
- C(name) - Name of the NIC.
|
||||||
- "C(profile_name) - Profile name where NIC should be attached."
|
- C(profile_name) - Profile name where NIC should be attached.
|
||||||
- "C(interface) - Type of the network interface. One of following: I(virtio), I(e1000), I(rtl8139), default is I(virtio)."
|
- C(interface) - Type of the network interface. One of following I(virtio), I(e1000), I(rtl8139), default is I(virtio).
|
||||||
- "C(mac_address) - Custom MAC address of the network interface, by default it's obtained from MAC pool."
|
- C(mac_address) - Custom MAC address of the network interface, by default it's obtained from MAC pool.
|
||||||
- "C(Note:)"
|
- NOTE - This parameter is used only when C(state) is I(running) or I(present) and is able to only create NICs.
|
||||||
- "This parameter is used only when C(state) is I(running) or I(present) and is able to only create NICs.
|
To manage NICs of the VM in more depth please use M(ovirt_nics) module instead.
|
||||||
To manage NICs of the VM in more depth please use M(ovirt_nics) module instead."
|
|
||||||
disks:
|
disks:
|
||||||
description:
|
description:
|
||||||
- "List of disks, which should be attached to Virtual Machine. Disk is described by following dictionary:"
|
- List of disks, which should be attached to Virtual Machine. Disk is described by following dictionary.
|
||||||
- "C(name) - Name of the disk. Either C(name) or C(id) is reuqired."
|
- C(name) - Name of the disk. Either C(name) or C(id) is reuqired.
|
||||||
- "C(id) - ID of the disk. Either C(name) or C(id) is reuqired."
|
- C(id) - ID of the disk. Either C(name) or C(id) is reuqired.
|
||||||
- "C(interface) - Interface of the disk, either I(virtio) or I(IDE), default is I(virtio)."
|
- C(interface) - Interface of the disk, either I(virtio) or I(IDE), default is I(virtio).
|
||||||
- "C(bootable) - I(True) if the disk should be bootable, default is non bootable."
|
- C(bootable) - I(True) if the disk should be bootable, default is non bootable.
|
||||||
- "C(activate) - I(True) if the disk should be activated, default is activated."
|
- C(activate) - I(True) if the disk should be activated, default is activated.
|
||||||
- "C(Note:)"
|
- NOTE - This parameter is used only when C(state) is I(running) or I(present) and is able to only attach disks.
|
||||||
- "This parameter is used only when C(state) is I(running) or I(present) and is able to only attach disks.
|
To manage disks of the VM in more depth please use M(ovirt_disks) module instead.
|
||||||
To manage disks of the VM in more depth please use M(ovirt_disks) module instead."
|
|
||||||
sysprep:
|
sysprep:
|
||||||
description:
|
description:
|
||||||
- "Dictionary with values for Windows Virtual Machine initialization using sysprep:"
|
- Dictionary with values for Windows Virtual Machine initialization using sysprep.
|
||||||
- "C(host_name) - Hostname to be set to Virtual Machine when deployed."
|
- C(host_name) - Hostname to be set to Virtual Machine when deployed.
|
||||||
- "C(active_directory_ou) - Active Directory Organizational Unit, to be used for login of user."
|
- C(active_directory_ou) - Active Directory Organizational Unit, to be used for login of user.
|
||||||
- "C(org_name) - Organization name to be set to Windows Virtual Machine."
|
- C(org_name) - Organization name to be set to Windows Virtual Machine.
|
||||||
- "C(domain) - Domain to be set to Windows Virtual Machine."
|
- C(domain) - Domain to be set to Windows Virtual Machine.
|
||||||
- "C(timezone) - Timezone to be set to Windows Virtual Machine."
|
- C(timezone) - Timezone to be set to Windows Virtual Machine.
|
||||||
- "C(ui_language) - UI language of the Windows Virtual Machine."
|
- C(ui_language) - UI language of the Windows Virtual Machine.
|
||||||
- "C(system_locale) - System localization of the Windows Virtual Machine."
|
- C(system_locale) - System localization of the Windows Virtual Machine.
|
||||||
- "C(input_locale) - Input localization of the Windows Virtual Machine."
|
- C(input_locale) - Input localization of the Windows Virtual Machine.
|
||||||
- "C(windows_license_key) - License key to be set to Windows Virtual Machine."
|
- C(windows_license_key) - License key to be set to Windows Virtual Machine.
|
||||||
- "C(user_name) - Username to be used for set password to Windows Virtual Machine."
|
- C(user_name) - Username to be used for set password to Windows Virtual Machine.
|
||||||
- "C(root_password) - Password to be set for username to Windows Virtual Machine."
|
- C(root_password) - Password to be set for username to Windows Virtual Machine.
|
||||||
cloud_init:
|
cloud_init:
|
||||||
description:
|
description:
|
||||||
- "Dictionary with values for Unix-like Virtual Machine initialization using cloud init:"
|
- Dictionary with values for Unix-like Virtual Machine initialization using cloud init.
|
||||||
- "C(host_name) - Hostname to be set to Virtual Machine when deployed."
|
- C(host_name) - Hostname to be set to Virtual Machine when deployed.
|
||||||
- "C(timezone) - Timezone to be set to Virtual Machine when deployed."
|
- C(timezone) - Timezone to be set to Virtual Machine when deployed.
|
||||||
- "C(user_name) - Username to be used to set password to Virtual Machine when deployed."
|
- C(user_name) - Username to be used to set password to Virtual Machine when deployed.
|
||||||
- "C(root_password) - Password to be set for user specified by C(user_name) parameter."
|
- C(root_password) - Password to be set for user specified by C(user_name) parameter.
|
||||||
- "C(authorized_ssh_keys) - Use this SSH keys to login to Virtual Machine."
|
- C(authorized_ssh_keys) - Use this SSH keys to login to Virtual Machine.
|
||||||
- "C(regenerate_ssh_keys) - If I(True) SSH keys will be regenerated on Virtual Machine."
|
- C(regenerate_ssh_keys) - If I(True) SSH keys will be regenerated on Virtual Machine.
|
||||||
- "C(custom_script) - Cloud-init script which will be executed on Virtual Machine when deployed."
|
- C(custom_script) - Cloud-init script which will be executed on Virtual Machine when deployed.
|
||||||
- "C(dns_servers) - DNS servers to be configured on Virtual Machine."
|
- C(dns_servers) - DNS servers to be configured on Virtual Machine.
|
||||||
- "C(dns_search) - DNS search domains to be configured on Virtual Machine."
|
- C(dns_search) - DNS search domains to be configured on Virtual Machine.
|
||||||
- "C(nic_boot_protocol) - Set boot protocol of the network interface of Virtual Machine. Can be one of none, dhcp or static."
|
- C(nic_boot_protocol) - Set boot protocol of the network interface of Virtual Machine. Can be one of C(none), C(dhcp) or C(static).
|
||||||
- "C(nic_ip_address) - If boot protocol is static, set this IP address to network interface of Virtual Machine."
|
- C(nic_ip_address) - If boot protocol is static, set this IP address to network interface of Virtual Machine.
|
||||||
- "C(nic_netmask) - If boot protocol is static, set this netmask to network interface of Virtual Machine."
|
- C(nic_netmask) - If boot protocol is static, set this netmask to network interface of Virtual Machine.
|
||||||
- "C(nic_gateway) - If boot protocol is static, set this gateway to network interface of Virtual Machine."
|
- C(nic_gateway) - If boot protocol is static, set this gateway to network interface of Virtual Machine.
|
||||||
- "C(nic_name) - Set name to network interface of Virtual Machine."
|
- C(nic_name) - Set name to network interface of Virtual Machine.
|
||||||
- "C(nic_on_boot) - If I(True) network interface will be set to start on boot."
|
- C(nic_on_boot) - If I(True) network interface will be set to start on boot.
|
||||||
cloud_init_nics:
|
cloud_init_nics:
|
||||||
description:
|
description:
|
||||||
- "List of dictionaries representing network interafaces to be setup by cloud init."
|
- List of dictionaries representing network interafaces to be setup by cloud init.
|
||||||
- "This option is used, when user needs to setup more network interfaces via cloud init."
|
- This option is used, when user needs to setup more network interfaces via cloud init.
|
||||||
- "If one network interface is enough, user should use C(cloud_init) I(nic_*) parameters. C(cloud_init) I(nic_*) parameters
|
- If one network interface is enough, user should use C(cloud_init) I(nic_*) parameters. C(cloud_init) I(nic_*) parameters
|
||||||
are merged with C(cloud_init_nics) parameters."
|
are merged with C(cloud_init_nics) parameters.
|
||||||
- "Dictionary can contain following values:"
|
- Dictionary can contain following values.
|
||||||
- "C(nic_boot_protocol) - Set boot protocol of the network interface of Virtual Machine. Can be one of none, dhcp or static."
|
- C(nic_boot_protocol) - Set boot protocol of the network interface of Virtual Machine. Can be one of C(none), C(dhcp) or C(static).
|
||||||
- "C(nic_ip_address) - If boot protocol is static, set this IP address to network interface of Virtual Machine."
|
- C(nic_ip_address) - If boot protocol is static, set this IP address to network interface of Virtual Machine.
|
||||||
- "C(nic_netmask) - If boot protocol is static, set this netmask to network interface of Virtual Machine."
|
- C(nic_netmask) - If boot protocol is static, set this netmask to network interface of Virtual Machine.
|
||||||
- "C(nic_gateway) - If boot protocol is static, set this gateway to network interface of Virtual Machine."
|
- C(nic_gateway) - If boot protocol is static, set this gateway to network interface of Virtual Machine.
|
||||||
- "C(nic_name) - Set name to network interface of Virtual Machine."
|
- C(nic_name) - Set name to network interface of Virtual Machine.
|
||||||
- "C(nic_on_boot) - If I(True) network interface will be set to start on boot."
|
- C(nic_on_boot) - If I(True) network interface will be set to start on boot.
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
kernel_path:
|
kernel_path:
|
||||||
description:
|
description:
|
||||||
- "Path to a kernel image used to boot the virtual machine."
|
- Path to a kernel image used to boot the virtual machine.
|
||||||
- "Kernel image must be stored on either the ISO domain or on the host's storage."
|
- Kernel image must be stored on either the ISO domain or on the host's storage.
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
initrd_path:
|
initrd_path:
|
||||||
description:
|
description:
|
||||||
- "Path to an initial ramdisk to be used with the kernel specified by C(kernel_path) option."
|
- Path to an initial ramdisk to be used with the kernel specified by C(kernel_path) option.
|
||||||
- "Ramdisk image must be stored on either the ISO domain or on the host's storage."
|
- Ramdisk image must be stored on either the ISO domain or on the host's storage.
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
kernel_params:
|
kernel_params:
|
||||||
description:
|
description:
|
||||||
- "Kernel command line parameters (formatted as string) to be used with the kernel specified by C(kernel_path) option."
|
- Kernel command line parameters (formatted as string) to be used with the kernel specified by C(kernel_path) option.
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
instance_type:
|
instance_type:
|
||||||
description:
|
description:
|
||||||
- "Name of virtual machine's hardware configuration."
|
- Name of virtual machine's hardware configuration.
|
||||||
- "By default no instance type is used."
|
- By default no instance type is used.
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
description:
|
description:
|
||||||
description:
|
description:
|
||||||
- "Description of the Virtual Machine."
|
- Description of the Virtual Machine.
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
comment:
|
comment:
|
||||||
description:
|
description:
|
||||||
- "Comment of the Virtual Machine."
|
- Comment of the Virtual Machine.
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
timezone:
|
timezone:
|
||||||
description:
|
description:
|
||||||
- "Sets time zone offset of the guest hardware clock."
|
- Sets time zone offset of the guest hardware clock.
|
||||||
- "For example: Etc/GMT"
|
- For example C(Etc/GMT)
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
serial_policy:
|
serial_policy:
|
||||||
description:
|
description:
|
||||||
- "Specify a serial number policy for the Virtual Machine."
|
- Specify a serial number policy for the Virtual Machine.
|
||||||
- "Following options are supported:"
|
- Following options are supported.
|
||||||
- "C(vm) - Sets the Virtual Machine's UUID as its serial number."
|
- C(vm) - Sets the Virtual Machine's UUID as its serial number.
|
||||||
- "C(host) - Sets the host's UUID as the Virtual Machine's serial number."
|
- C(host) - Sets the host's UUID as the Virtual Machine's serial number.
|
||||||
- "C(custom) - Allows you to specify a custom serial number in C(serial_policy_value)."
|
- C(custom) - Allows you to specify a custom serial number in C(serial_policy_value).
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
serial_policy_value:
|
serial_policy_value:
|
||||||
description:
|
description:
|
||||||
- "Allows you to specify a custom serial number."
|
- Allows you to specify a custom serial number.
|
||||||
- "This parameter is used only when C(serial_policy) is I(custom)."
|
- This parameter is used only when C(serial_policy) is I(custom).
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
vmware:
|
vmware:
|
||||||
description:
|
description:
|
||||||
- "Dictionary of values to be used to connect to VMware and import
|
- Dictionary of values to be used to connect to VMware and import
|
||||||
a virtual machine to oVirt."
|
a virtual machine to oVirt.
|
||||||
- "Dictionary can contain following values:"
|
- Dictionary can contain following values.
|
||||||
- "C(username) - The username to authenticate against the VMware."
|
- C(username) - The username to authenticate against the VMware.
|
||||||
- "C(password) - The password to authenticate against the VMware."
|
- C(password) - The password to authenticate against the VMware.
|
||||||
- "C(url) - The URL to be passed to the I(virt-v2v) tool for conversion.
|
- C(url) - The URL to be passed to the I(virt-v2v) tool for conversion.
|
||||||
For example: I(vpx://wmware_user@vcenter-host/DataCenter/Cluster/esxi-host?no_verify=1)"
|
For example I(vpx://wmware_user@vcenter-host/DataCenter/Cluster/esxi-host?no_verify=1)
|
||||||
- "C(drivers_iso) - The name of the ISO containing drivers that can
|
- C(drivers_iso) - The name of the ISO containing drivers that can
|
||||||
be used during the I(virt-v2v) conversion process."
|
be used during the I(virt-v2v) conversion process.
|
||||||
- "C(sparse) - Specifies the disk allocation policy of the resulting
|
- C(sparse) - Specifies the disk allocation policy of the resulting
|
||||||
virtual machine: I(true) for sparse, I(false) for preallocated.
|
virtual machine. I(true) for sparse, I(false) for preallocated.
|
||||||
Default value is I(true)."
|
Default value is I(true).
|
||||||
- "C(storage_domain) - Specifies the target storage domain for
|
- C(storage_domain) - Specifies the target storage domain for
|
||||||
converted disks. This is required parameter."
|
converted disks. This is required parameter.
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
xen:
|
xen:
|
||||||
description:
|
description:
|
||||||
- "Dictionary of values to be used to connect to XEN and import
|
- Dictionary of values to be used to connect to XEN and import
|
||||||
a virtual machine to oVirt."
|
a virtual machine to oVirt.
|
||||||
- "Dictionary can contain following values:"
|
- Dictionary can contain following values.
|
||||||
- "C(url) - The URL to be passed to the I(virt-v2v) tool for conversion.
|
- C(url) - The URL to be passed to the I(virt-v2v) tool for conversion.
|
||||||
For example: I(xen+ssh://root@zen.server). This is required paramater."
|
For example I(xen+ssh://root@zen.server). This is required parameter.
|
||||||
- "C(drivers_iso) - The name of the ISO containing drivers that can
|
- C(drivers_iso) - The name of the ISO containing drivers that can
|
||||||
be used during the I(virt-v2v) conversion process."
|
be used during the I(virt-v2v) conversion process.
|
||||||
- "C(sparse) - Specifies the disk allocation policy of the resulting
|
- C(sparse) - Specifies the disk allocation policy of the resulting
|
||||||
virtual machine: I(true) for sparse, I(false) for preallocated.
|
virtual machine. I(true) for sparse, I(false) for preallocated.
|
||||||
Default value is I(true)."
|
Default value is I(true).
|
||||||
- "C(storage_domain) - Specifies the target storage domain for
|
- C(storage_domain) - Specifies the target storage domain for
|
||||||
converted disks. This is required parameter."
|
converted disks. This is required parameter.
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
kvm:
|
kvm:
|
||||||
description:
|
description:
|
||||||
- "Dictionary of values to be used to connect to kvm and import
|
- Dictionary of values to be used to connect to kvm and import
|
||||||
a virtual machine to oVirt."
|
a virtual machine to oVirt.
|
||||||
- "Dictionary can contain following values:"
|
- Dictionary can contain following values.
|
||||||
- "C(name) - The name of the KVM virtual machine."
|
- C(name) - The name of the KVM virtual machine.
|
||||||
- "C(username) - The username to authenticate against the KVM."
|
- C(username) - The username to authenticate against the KVM.
|
||||||
- "C(password) - The password to authenticate against the KVM."
|
- C(password) - The password to authenticate against the KVM.
|
||||||
- "C(url) - The URL to be passed to the I(virt-v2v) tool for conversion.
|
- C(url) - The URL to be passed to the I(virt-v2v) tool for conversion.
|
||||||
For example: I(qemu:///system). This is required paramater."
|
For example I(qemu:///system). This is required parameter.
|
||||||
- "C(drivers_iso) - The name of the ISO containing drivers that can
|
- C(drivers_iso) - The name of the ISO containing drivers that can
|
||||||
be used during the I(virt-v2v) conversion process."
|
be used during the I(virt-v2v) conversion process.
|
||||||
- "C(sparse) - Specifies the disk allocation policy of the resulting
|
- C(sparse) - Specifies the disk allocation policy of the resulting
|
||||||
virtual machine: I(true) for sparse, I(false) for preallocated.
|
virtual machine. I(true) for sparse, I(false) for preallocated.
|
||||||
Default value is I(true)."
|
Default value is I(true).
|
||||||
- "C(storage_domain) - Specifies the target storage domain for
|
- C(storage_domain) - Specifies the target storage domain for
|
||||||
converted disks. This is required parameter."
|
converted disks. This is required parameter.
|
||||||
version_added: "2.3"
|
version_added: "2.3"
|
||||||
notes:
|
notes:
|
||||||
- "If VM is in I(UNASSIGNED) or I(UNKNOWN) state before any operation, the module will fail.
|
- If VM is in I(UNASSIGNED) or I(UNKNOWN) state before any operation, the module will fail.
|
||||||
If VM is in I(IMAGE_LOCKED) state before any operation, we try to wait for VM to be I(DOWN).
|
If VM is in I(IMAGE_LOCKED) state before any operation, we try to wait for VM to be I(DOWN).
|
||||||
If VM is in I(SAVING_STATE) state before any operation, we try to wait for VM to be I(SUSPENDED).
|
If VM is in I(SAVING_STATE) state before any operation, we try to wait for VM to be I(SUSPENDED).
|
||||||
If VM is in I(POWERING_DOWN) state before any operation, we try to wait for VM to be I(UP) or I(DOWN). VM can
|
If VM is in I(POWERING_DOWN) state before any operation, we try to wait for VM to be I(UP) or I(DOWN). VM can
|
||||||
|
@ -354,7 +383,7 @@ notes:
|
||||||
When user specify I(suspended) C(state), we always wait to VM to be in UP state in case VM is I(MIGRATING),
|
When user specify I(suspended) C(state), we always wait to VM to be in UP state in case VM is I(MIGRATING),
|
||||||
I(REBOOTING), I(POWERING_UP), I(RESTORING_STATE), I(WAIT_FOR_LAUNCH). If VM is in I(PAUSED) or I(DOWN) state,
|
I(REBOOTING), I(POWERING_UP), I(RESTORING_STATE), I(WAIT_FOR_LAUNCH). If VM is in I(PAUSED) or I(DOWN) state,
|
||||||
we start the VM. Then we suspend the VM.
|
we start the VM. Then we suspend the VM.
|
||||||
When user specify I(absent) C(state), we forcibly stop the VM in any state and remove it."
|
When user specify I(absent) C(state), we forcibly stop the VM in any state and remove it.
|
||||||
extends_documentation_fragment: ovirt
|
extends_documentation_fragment: ovirt
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
@ -362,36 +391,36 @@ EXAMPLES = '''
|
||||||
# Examples don't contain auth parameter for simplicity,
|
# Examples don't contain auth parameter for simplicity,
|
||||||
# look at ovirt_auth module to see how to reuse authentication:
|
# look at ovirt_auth module to see how to reuse authentication:
|
||||||
|
|
||||||
# Creates a new Virtual Machine from template named 'rhel7_template'
|
- name: Creates a new Virtual Machine from template named 'rhel7_template'
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
state: present
|
state: present
|
||||||
name: myvm
|
name: myvm
|
||||||
template: rhel7_template
|
template: rhel7_template
|
||||||
|
|
||||||
# Register VM
|
- name: Register VM
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
state: registered
|
state: registered
|
||||||
storage_domain: mystorage
|
storage_domain: mystorage
|
||||||
cluster: mycluster
|
cluster: mycluster
|
||||||
name: myvm
|
name: myvm
|
||||||
|
|
||||||
# Register VM using id
|
- name: Register VM using id
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
state: registered
|
state: registered
|
||||||
storage_domain: mystorage
|
storage_domain: mystorage
|
||||||
cluster: mycluster
|
cluster: mycluster
|
||||||
id: 1111-1111-1111-1111
|
id: 1111-1111-1111-1111
|
||||||
|
|
||||||
# Register VM, allowing partial import
|
- name: Register VM, allowing partial import
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
state: registered
|
state: registered
|
||||||
storage_domain: mystorage
|
storage_domain: mystorage
|
||||||
allow_partial_import: "True"
|
allow_partial_import: "True"
|
||||||
cluster: mycluster
|
cluster: mycluster
|
||||||
id: 1111-1111-1111-1111
|
id: 1111-1111-1111-1111
|
||||||
|
|
||||||
# Creates a stateless VM which will always use latest template version:
|
- name: Creates a stateless VM which will always use latest template version
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
name: myvm
|
name: myvm
|
||||||
template: rhel7
|
template: rhel7
|
||||||
cluster: mycluster
|
cluster: mycluster
|
||||||
|
@ -400,7 +429,7 @@ ovirt_vms:
|
||||||
# Creates a new server rhel7 Virtual Machine from Blank template
|
# Creates a new server rhel7 Virtual Machine from Blank template
|
||||||
# on brq01 cluster with 2GiB memory and 2 vcpu cores/sockets
|
# on brq01 cluster with 2GiB memory and 2 vcpu cores/sockets
|
||||||
# and attach bootable disk with name rhel7_disk and attach virtio NIC
|
# and attach bootable disk with name rhel7_disk and attach virtio NIC
|
||||||
ovirt_vms:
|
- ovirt_vms:
|
||||||
state: present
|
state: present
|
||||||
cluster: brq01
|
cluster: brq01
|
||||||
name: myvm
|
name: myvm
|
||||||
|
@ -416,8 +445,8 @@ ovirt_vms:
|
||||||
nics:
|
nics:
|
||||||
- name: nic1
|
- name: nic1
|
||||||
|
|
||||||
# Run VM with cloud init:
|
- name: Run VM with cloud init
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
name: rhel7
|
name: rhel7
|
||||||
template: rhel7
|
template: rhel7
|
||||||
cluster: Default
|
cluster: Default
|
||||||
|
@ -440,8 +469,8 @@ ovirt_vms:
|
||||||
user_name: root
|
user_name: root
|
||||||
root_password: super_password
|
root_password: super_password
|
||||||
|
|
||||||
# Run VM with cloud init, with multiple network interfaces:
|
- name: Run VM with cloud init, with multiple network interfaces
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
name: rhel7_4
|
name: rhel7_4
|
||||||
template: rhel7
|
template: rhel7
|
||||||
cluster: mycluster
|
cluster: mycluster
|
||||||
|
@ -456,8 +485,8 @@ ovirt_vms:
|
||||||
nic_gateway: 10.34.63.254
|
nic_gateway: 10.34.63.254
|
||||||
nic_on_boot: true
|
nic_on_boot: true
|
||||||
|
|
||||||
# Run VM with sysprep:
|
- name: Run VM with sysprep
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
name: windows2012R2_AD
|
name: windows2012R2_AD
|
||||||
template: windows2012R2
|
template: windows2012R2
|
||||||
cluster: Default
|
cluster: Default
|
||||||
|
@ -468,56 +497,55 @@ ovirt_vms:
|
||||||
user_name: Administrator
|
user_name: Administrator
|
||||||
root_password: SuperPassword123
|
root_password: SuperPassword123
|
||||||
|
|
||||||
# Migrate/Run VM to/on host named 'host1'
|
- name: Migrate/Run VM to/on host named 'host1'
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
state: running
|
state: running
|
||||||
name: myvm
|
name: myvm
|
||||||
host: host1
|
host: host1
|
||||||
|
|
||||||
# Change Vm's CD:
|
- name: Change VMs CD
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
name: myvm
|
name: myvm
|
||||||
cd_iso: drivers.iso
|
cd_iso: drivers.iso
|
||||||
|
|
||||||
# Eject Vm's CD:
|
- name: Eject VMs CD
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
name: myvm
|
name: myvm
|
||||||
cd_iso: ''
|
cd_iso: ''
|
||||||
|
|
||||||
# Boot VM from CD:
|
- name: Boot VM from CD
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
name: myvm
|
name: myvm
|
||||||
cd_iso: centos7_x64.iso
|
cd_iso: centos7_x64.iso
|
||||||
boot_devices:
|
boot_devices:
|
||||||
- cdrom
|
- cdrom
|
||||||
|
|
||||||
# Stop vm:
|
- name: Stop vm
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
state: stopped
|
state: stopped
|
||||||
name: myvm
|
name: myvm
|
||||||
|
|
||||||
# Upgrade memory to already created VM:
|
- name: Upgrade memory to already created VM
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
name: myvm
|
name: myvm
|
||||||
memory: 4GiB
|
memory: 4GiB
|
||||||
|
|
||||||
# Hot plug memory to already created and running VM:
|
- name: Hot plug memory to already created and running VM (VM won't be restarted)
|
||||||
# (VM won't be restarted)
|
ovirt_vms:
|
||||||
ovirt_vms:
|
|
||||||
name: myvm
|
name: myvm
|
||||||
memory: 4GiB
|
memory: 4GiB
|
||||||
|
|
||||||
# When change on the VM needs restart of the VM, use next_run state,
|
# When change on the VM needs restart of the VM, use next_run state,
|
||||||
# The VM will be updated and rebooted if there are any changes.
|
# The VM will be updated and rebooted if there are any changes.
|
||||||
# If present state would be used, VM won't be restarted.
|
# If present state would be used, VM won't be restarted.
|
||||||
ovirt_vms:
|
- ovirt_vms:
|
||||||
state: next_run
|
state: next_run
|
||||||
name: myvm
|
name: myvm
|
||||||
boot_devices:
|
boot_devices:
|
||||||
- network
|
- network
|
||||||
|
|
||||||
# Import virtual machine from VMware:
|
- name: Import virtual machine from VMware
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
state: stopped
|
state: stopped
|
||||||
cluster: mycluster
|
cluster: mycluster
|
||||||
name: vmware_win10
|
name: vmware_win10
|
||||||
|
@ -530,8 +558,8 @@ ovirt_vms:
|
||||||
username: user
|
username: user
|
||||||
password: password
|
password: password
|
||||||
|
|
||||||
# create vm from template and create all disks on specific storage domain
|
- name: Create vm from template and create all disks on specific storage domain
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
name: vm_test
|
name: vm_test
|
||||||
cluster: mycluster
|
cluster: mycluster
|
||||||
template: mytemplate
|
template: mytemplate
|
||||||
|
@ -539,8 +567,8 @@ ovirt_vms:
|
||||||
nics:
|
nics:
|
||||||
- name: nic1
|
- name: nic1
|
||||||
|
|
||||||
# Remove VM, if VM is running it will be stopped:
|
- name: Remove VM, if VM is running it will be stopped
|
||||||
ovirt_vms:
|
ovirt_vms:
|
||||||
state: absent
|
state: absent
|
||||||
name: myvm
|
name: myvm
|
||||||
'''
|
'''
|
||||||
|
@ -720,26 +748,25 @@ class VmsModule(BaseModule):
|
||||||
|
|
||||||
def update_check(self, entity):
|
def update_check(self, entity):
|
||||||
return (
|
return (
|
||||||
equal(self.param('cluster'), get_link_name(self._connection, entity.cluster))
|
equal(self.param('cluster'), get_link_name(self._connection, entity.cluster)) and equal(convert_to_bytes(self.param('memory')), entity.memory) and
|
||||||
and equal(convert_to_bytes(self.param('memory')), entity.memory)
|
equal(convert_to_bytes(self.param('memory_guaranteed')), entity.memory_policy.guaranteed) and
|
||||||
and equal(convert_to_bytes(self.param('memory_guaranteed')), entity.memory_policy.guaranteed)
|
equal(self.param('cpu_cores'), entity.cpu.topology.cores) and
|
||||||
and equal(self.param('cpu_cores'), entity.cpu.topology.cores)
|
equal(self.param('cpu_sockets'), entity.cpu.topology.sockets) and
|
||||||
and equal(self.param('cpu_sockets'), entity.cpu.topology.sockets)
|
equal(self.param('type'), str(entity.type)) and
|
||||||
and equal(self.param('type'), str(entity.type))
|
equal(self.param('operating_system'), str(entity.os.type)) and
|
||||||
and equal(self.param('operating_system'), str(entity.os.type))
|
equal(self.param('high_availability'), entity.high_availability.enabled) and
|
||||||
and equal(self.param('high_availability'), entity.high_availability.enabled)
|
equal(self.param('lease'), get_link_name(self._connection, getattr(entity.lease, 'storage_domain', None))) and
|
||||||
and equal(self.param('lease'), get_link_name(self._connection, getattr(entity.lease, 'storage_domain', None)))
|
equal(self.param('stateless'), entity.stateless) and
|
||||||
and equal(self.param('stateless'), entity.stateless)
|
equal(self.param('cpu_shares'), entity.cpu_shares) and
|
||||||
and equal(self.param('cpu_shares'), entity.cpu_shares)
|
equal(self.param('delete_protected'), entity.delete_protected) and
|
||||||
and equal(self.param('delete_protected'), entity.delete_protected)
|
equal(self.param('use_latest_template_version'), entity.use_latest_template_version) and
|
||||||
and equal(self.param('use_latest_template_version'), entity.use_latest_template_version)
|
equal(self.param('boot_devices'), [str(dev) for dev in getattr(entity.os, 'devices', [])]) and
|
||||||
and equal(self.param('boot_devices'), [str(dev) for dev in getattr(entity.os, 'devices', [])])
|
equal(self.param('instance_type'), get_link_name(self._connection, entity.instance_type), ignore_case=True) and
|
||||||
and equal(self.param('instance_type'), get_link_name(self._connection, entity.instance_type), ignore_case=True)
|
equal(self.param('description'), entity.description) and
|
||||||
and equal(self.param('description'), entity.description)
|
equal(self.param('comment'), entity.comment) and
|
||||||
and equal(self.param('comment'), entity.comment)
|
equal(self.param('timezone'), getattr(entity.time_zone, 'name', None)) and
|
||||||
and equal(self.param('timezone'), getattr(entity.time_zone, 'name', None))
|
equal(self.param('serial_policy'), str(getattr(entity.serial_number, 'policy', None))) and
|
||||||
and equal(self.param('serial_policy'), str(getattr(entity.serial_number, 'policy', None)))
|
equal(self.param('serial_policy_value'), getattr(entity.serial_number, 'value', None))
|
||||||
and equal(self.param('serial_policy_value'), getattr(entity.serial_number, 'value', None))
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def pre_create(self, entity):
|
def pre_create(self, entity):
|
||||||
|
@ -1122,30 +1149,27 @@ def control_state(vm, vms_service, module):
|
||||||
condition=lambda vm: vm.status in [otypes.VmStatus.DOWN, otypes.VmStatus.UP],
|
condition=lambda vm: vm.status in [otypes.VmStatus.DOWN, otypes.VmStatus.UP],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
argument_spec = ovirt_full_argument_spec(
|
argument_spec = ovirt_full_argument_spec(
|
||||||
state=dict(
|
state=dict(type='str', default='present', choices=['absent', 'next_run', 'present', 'registered', 'running', 'stopped', 'suspended']),
|
||||||
choices=['running', 'stopped', 'present', 'absent', 'suspended', 'next_run', 'registered'],
|
name=dict(type='str'),
|
||||||
default='present',
|
id=dict(type='str'),
|
||||||
),
|
cluster=dict(type='str'),
|
||||||
name=dict(default=None),
|
allow_partial_import=dict(type='bool'),
|
||||||
id=dict(default=None),
|
template=dict(type='str'),
|
||||||
cluster=dict(default=None),
|
template_version=dict(type='int'),
|
||||||
allow_partial_import=dict(default=None, type='bool'),
|
use_latest_template_version=dict(type='bool'),
|
||||||
template=dict(default=None),
|
storage_domain=dict(type='str'),
|
||||||
template_version=dict(default=None, type='int'),
|
disk_format=dict(type='str', default='cow', choices=['cow', 'raw']),
|
||||||
use_latest_template_version=dict(default=None, type='bool'),
|
disks=dict(type='list', default=[]),
|
||||||
storage_domain=dict(default=None),
|
memory=dict(type='str'),
|
||||||
disk_format=dict(choices=['cow','raw'], default='cow'),
|
memory_guaranteed=dict(type='str'),
|
||||||
disks=dict(default=[], type='list'),
|
cpu_sockets=dict(type='int'),
|
||||||
memory=dict(default=None),
|
cpu_cores=dict(type='int'),
|
||||||
memory_guaranteed=dict(default=None),
|
cpu_shares=dict(type='int'),
|
||||||
cpu_sockets=dict(default=None, type='int'),
|
type=dict(type='str', choices=['server', 'desktop']),
|
||||||
cpu_cores=dict(default=None, type='int'),
|
operating_system=dict(type='str',
|
||||||
cpu_shares=dict(default=None, type='int'),
|
|
||||||
type=dict(choices=['server', 'desktop']),
|
|
||||||
operating_system=dict(
|
|
||||||
default=None,
|
|
||||||
choices=[
|
choices=[
|
||||||
'rhel_6_ppc64', 'other', 'freebsd', 'windows_2003x64', 'windows_10',
|
'rhel_6_ppc64', 'other', 'freebsd', 'windows_2003x64', 'windows_10',
|
||||||
'rhel_6x64', 'rhel_4x64', 'windows_2008x64', 'windows_2008R2x64',
|
'rhel_6x64', 'rhel_4x64', 'windows_2008x64', 'windows_2008R2x64',
|
||||||
|
@ -1157,34 +1181,33 @@ def main():
|
||||||
'ubuntu_14_04_ppc64', 'sles_11_ppc64', 'windows_8',
|
'ubuntu_14_04_ppc64', 'sles_11_ppc64', 'windows_8',
|
||||||
'windows_2012R2x64', 'windows_2008r2x64', 'ubuntu_13_04',
|
'windows_2012R2x64', 'windows_2008r2x64', 'ubuntu_13_04',
|
||||||
'ubuntu_12_10', 'windows_7x64',
|
'ubuntu_12_10', 'windows_7x64',
|
||||||
],
|
]),
|
||||||
),
|
cd_iso=dict(type='str'),
|
||||||
cd_iso=dict(default=None),
|
boot_devices=dict(type='list'),
|
||||||
boot_devices=dict(default=None, type='list'),
|
|
||||||
high_availability=dict(type='bool'),
|
high_availability=dict(type='bool'),
|
||||||
lease=dict(default=None),
|
lease=dict(type='str'),
|
||||||
stateless=dict(type='bool'),
|
stateless=dict(type='bool'),
|
||||||
delete_protected=dict(type='bool'),
|
delete_protected=dict(type='bool'),
|
||||||
force=dict(type='bool', default=False),
|
force=dict(type='bool', default=False),
|
||||||
nics=dict(default=[], type='list'),
|
nics=dict(type='list', default=[]),
|
||||||
cloud_init=dict(type='dict'),
|
cloud_init=dict(type='dict'),
|
||||||
cloud_init_nics=dict(defaul=[], type='list'),
|
cloud_init_nics=dict(type='list', default=[]),
|
||||||
sysprep=dict(type='dict'),
|
sysprep=dict(type='dict'),
|
||||||
host=dict(default=None),
|
host=dict(type='str'),
|
||||||
clone=dict(type='bool', default=False),
|
clone=dict(type='bool', default=False),
|
||||||
clone_permissions=dict(type='bool', default=False),
|
clone_permissions=dict(type='bool', default=False),
|
||||||
kernel_path=dict(default=None),
|
kernel_path=dict(type='str'),
|
||||||
initrd_path=dict(default=None),
|
initrd_path=dict(type='str'),
|
||||||
kernel_params=dict(default=None),
|
kernel_params=dict(type='str'),
|
||||||
instance_type=dict(default=None),
|
instance_type=dict(type='str'),
|
||||||
description=dict(default=None),
|
description=dict(type='str'),
|
||||||
comment=dict(default=None),
|
comment=dict(type='str'),
|
||||||
timezone=dict(default=None),
|
timezone=dict(type='str'),
|
||||||
serial_policy=dict(default=None, choices=['vm', 'host', 'custom']),
|
serial_policy=dict(type='str', choices=['vm', 'host', 'custom']),
|
||||||
serial_policy_value=dict(default=None),
|
serial_policy_value=dict(type='str'),
|
||||||
vmware=dict(default=None, type='dict'),
|
vmware=dict(type='dict'),
|
||||||
xen=dict(default=None, type='dict'),
|
xen=dict(type='dict'),
|
||||||
kvm=dict(default=None, type='dict'),
|
kvm=dict(type='dict'),
|
||||||
)
|
)
|
||||||
module = AnsibleModule(
|
module = AnsibleModule(
|
||||||
argument_spec=argument_spec,
|
argument_spec=argument_spec,
|
||||||
|
@ -1256,16 +1279,16 @@ def main():
|
||||||
initrd=module.params.get('initrd_path'),
|
initrd=module.params.get('initrd_path'),
|
||||||
kernel=module.params.get('kernel_path'),
|
kernel=module.params.get('kernel_path'),
|
||||||
) if (
|
) if (
|
||||||
module.params.get('kernel_params')
|
module.params.get('kernel_params') or
|
||||||
or module.params.get('initrd_path')
|
module.params.get('initrd_path') or
|
||||||
or module.params.get('kernel_path')
|
module.params.get('kernel_path')
|
||||||
) else None,
|
) else None,
|
||||||
) if (
|
) if (
|
||||||
module.params.get('kernel_params')
|
module.params.get('kernel_params') or
|
||||||
or module.params.get('initrd_path')
|
module.params.get('initrd_path') or
|
||||||
or module.params.get('kernel_path')
|
module.params.get('kernel_path') or
|
||||||
or module.params.get('host')
|
module.params.get('host') or
|
||||||
or initialization
|
initialization
|
||||||
) else None,
|
) else None,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,6 @@ lib/ansible/modules/cloud/google/gcpubsub.py
|
||||||
lib/ansible/modules/cloud/google/gcspanner.py
|
lib/ansible/modules/cloud/google/gcspanner.py
|
||||||
lib/ansible/modules/cloud/lxc/lxc_container.py
|
lib/ansible/modules/cloud/lxc/lxc_container.py
|
||||||
lib/ansible/modules/cloud/lxd/lxd_container.py
|
lib/ansible/modules/cloud/lxd/lxd_container.py
|
||||||
lib/ansible/modules/cloud/misc/ovirt.py
|
|
||||||
lib/ansible/modules/cloud/misc/rhevm.py
|
lib/ansible/modules/cloud/misc/rhevm.py
|
||||||
lib/ansible/modules/cloud/misc/serverless.py
|
lib/ansible/modules/cloud/misc/serverless.py
|
||||||
lib/ansible/modules/cloud/misc/virt_net.py
|
lib/ansible/modules/cloud/misc/virt_net.py
|
||||||
|
@ -85,11 +84,6 @@ lib/ansible/modules/cloud/openstack/os_security_group_rule.py
|
||||||
lib/ansible/modules/cloud/openstack/os_server.py
|
lib/ansible/modules/cloud/openstack/os_server.py
|
||||||
lib/ansible/modules/cloud/openstack/os_stack.py
|
lib/ansible/modules/cloud/openstack/os_stack.py
|
||||||
lib/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py
|
lib/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py
|
||||||
lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py
|
|
||||||
lib/ansible/modules/cloud/ovirt/ovirt_affinity_group.py
|
|
||||||
lib/ansible/modules/cloud/ovirt/ovirt_nics.py
|
|
||||||
lib/ansible/modules/cloud/ovirt/ovirt_permissions.py
|
|
||||||
lib/ansible/modules/cloud/ovirt/ovirt_vms.py
|
|
||||||
lib/ansible/modules/cloud/packet/packet_sshkey.py
|
lib/ansible/modules/cloud/packet/packet_sshkey.py
|
||||||
lib/ansible/modules/cloud/profitbricks/profitbricks.py
|
lib/ansible/modules/cloud/profitbricks/profitbricks.py
|
||||||
lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py
|
lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue