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
pull/32314/head
Satyajit Bulage 7 years ago committed by Dag Wieers
parent a2d34e914e
commit 1857d11034

@ -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',
'cpu_profile',
'data_center',
'disk',
'disk_profile',
'host', 'host',
'storage_domain',
'network', 'network',
'disk', '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…
Cancel
Save