Merge pull request #560 from resmo/for-ansible

cloudstack updates, merged as owner_pr. Thanks @resmo!
This commit is contained in:
Greg DeKoenigsberg 2015-05-31 21:05:15 -04:00
commit 9439555881
11 changed files with 104 additions and 63 deletions

View file

@ -108,7 +108,6 @@ local_action:
email: john.doe@example.com
domain: CUSTOMERS
# Lock an existing account in domain 'CUSTOMERS'
local_action:
module: cs_account
@ -116,7 +115,6 @@ local_action:
domain: CUSTOMERS
state: locked
# Disable an existing account in domain 'CUSTOMERS'
local_action:
module: cs_account
@ -124,7 +122,6 @@ local_action:
domain: CUSTOMERS
state: disabled
# Enable an existing account in domain 'CUSTOMERS'
local_action:
module: cs_account
@ -132,7 +129,6 @@ local_action:
domain: CUSTOMERS
state: enabled
# Remove an account in domain 'CUSTOMERS'
local_action:
module: cs_account
@ -367,7 +363,11 @@ def main():
api_key = dict(default=None),
api_secret = dict(default=None, no_log=True),
api_url = dict(default=None),
api_http_method = dict(default='get'),
api_http_method = dict(choices=['get', 'post'], default='get'),
api_timeout = dict(type='int', default=10),
),
required_together = (
['api_key', 'api_secret', 'api_url'],
),
supports_check_mode=True
)

View file

@ -72,7 +72,6 @@ EXAMPLES = '''
name: haproxy
affinty_type: host anti-affinity
# Remove a affinity group
- local_action:
module: cs_affinitygroup
@ -221,7 +220,11 @@ def main():
api_key = dict(default=None),
api_secret = dict(default=None, no_log=True),
api_url = dict(default=None),
api_http_method = dict(default='get'),
api_http_method = dict(choices=['get', 'post'], default='get'),
api_timeout = dict(type='int', default=10),
),
required_together = (
['api_key', 'api_secret', 'api_url'],
),
supports_check_mode=True
)

View file

@ -115,7 +115,6 @@ EXAMPLES = '''
port: 80
cidr: 1.2.3.4/32
# Allow inbound tcp/udp port 53 to 4.3.2.1
- local_action:
module: cs_firewall
@ -126,7 +125,6 @@ EXAMPLES = '''
- tcp
- udp
# Ensure firewall rule is removed
- local_action:
module: cs_firewall
@ -136,7 +134,6 @@ EXAMPLES = '''
cidr: 17.0.0.0/8
state: absent
# Allow all outbound traffic
- local_action:
module: cs_firewall
@ -144,7 +141,6 @@ EXAMPLES = '''
type: egress
protocol: all
# Allow only HTTP outbound traffic for an IP
- local_action:
module: cs_firewall
@ -420,7 +416,15 @@ def main():
api_key = dict(default=None),
api_secret = dict(default=None, no_log=True),
api_url = dict(default=None),
api_http_method = dict(default='get'),
api_http_method = dict(choices=['get', 'post'], default='get'),
api_timeout = dict(type='int', default=10),
),
required_one_of = (
['ip_address', 'network'],
),
required_together = (
['icmp_type', 'icmp_code'],
['api_key', 'api_secret', 'api_url'],
),
mutually_exclusive = (
['icmp_type', 'start_port'],

View file

@ -23,7 +23,7 @@ DOCUMENTATION = '''
module: cs_instance
short_description: Manages instances and virtual machines on Apache CloudStack based clouds.
description:
- Deploy, start, restart, stop and destroy instances on Apache CloudStack, Citrix CloudPlatform and Exoscale.
- Deploy, start, restart, stop and destroy instances.
version_added: '2.0'
author: '"René Moser (@resmo)" <mail@renemoser.net>'
options:
@ -49,22 +49,29 @@ options:
choices: [ 'deployed', 'started', 'stopped', 'restarted', 'destroyed', 'expunged', 'present', 'absent' ]
service_offering:
description:
- Name or id of the service offering of the new instance. If not set, first found service offering is used.
- Name or id of the service offering of the new instance.
- If not set, first found service offering is used.
required: false
default: null
template:
description:
- Name or id of the template to be used for creating the new instance. Required when using C(state=present). Mutually exclusive with C(ISO) option.
- Name or id of the template to be used for creating the new instance.
- Required when using C(state=present).
- Mutually exclusive with C(ISO) option.
required: false
default: null
iso:
description:
- Name or id of the ISO to be used for creating the new instance. Required when using C(state=present). Mutually exclusive with C(template) option.
- Name or id of the ISO to be used for creating the new instance.
- Required when using C(state=present).
- Mutually exclusive with C(template) option.
required: false
default: null
hypervisor:
description:
- Name the hypervisor to be used for creating the new instance. Relevant when using C(state=present) and option C(ISO) is used. If not set, first found hypervisor will be used.
- Name the hypervisor to be used for creating the new instance.
- Relevant when using C(state=present) and option C(ISO) is used.
- If not set, first found hypervisor will be used.
required: false
default: null
choices: [ 'KVM', 'VMware', 'BareMetal', 'XenServer', 'LXC', 'HyperV', 'UCS', 'OVM' ]
@ -82,7 +89,7 @@ options:
aliases: [ 'network' ]
ip_address:
description:
- IPv4 address for default instance's network during creation
- IPv4 address for default instance's network during creation.
required: false
default: null
ip6_address:
@ -123,7 +130,8 @@ options:
default: null
zone:
description:
- Name of the zone in which the instance shoud be deployed. If not set, default zone is used.
- Name of the zone in which the instance shoud be deployed.
- If not set, default zone is used.
required: false
default: null
ssh_key:
@ -148,7 +156,7 @@ options:
description:
- Force stop/start the instance if required to apply changes, otherwise a running instance will not be changed.
required: false
default: true
default: false
tags:
description:
- List of tags. Tags are a list of dictionaries having keys C(key) and C(value).
@ -164,7 +172,7 @@ extends_documentation_fragment: cloudstack
'''
EXAMPLES = '''
# Create a instance on CloudStack from an ISO
# Create a instance from an ISO
# NOTE: Names of offerings and ISOs depending on the CloudStack configuration.
- local_action:
module: cs_instance
@ -181,7 +189,6 @@ EXAMPLES = '''
- Sync Integration
- Storage Integration
# For changing a running instance, use the 'force' parameter
- local_action:
module: cs_instance
@ -191,7 +198,6 @@ EXAMPLES = '''
service_offering: 2cpu_2gb
force: yes
# Create or update a instance on Exoscale's public cloud
- local_action:
module: cs_instance
@ -202,19 +208,13 @@ EXAMPLES = '''
tags:
- { key: admin, value: john }
- { key: foo, value: bar }
register: vm
- debug: msg='default ip {{ vm.default_ip }} and is in state {{ vm.state }}'
# Ensure a instance has stopped
- local_action: cs_instance name=web-vm-1 state=stopped
# Ensure a instance is running
- local_action: cs_instance name=web-vm-1 state=started
# Remove a instance
- local_action: cs_instance name=web-vm-1 state=absent
'''
@ -257,7 +257,7 @@ password:
type: string
sample: Ge2oe7Do
ssh_key:
description: Name of ssh key deployed to instance.
description: Name of SSH key deployed to instance.
returned: success
type: string
sample: key@work
@ -282,7 +282,7 @@ default_ip:
type: string
sample: 10.23.37.42
public_ip:
description: Public IP address with instance via static nat rule.
description: Public IP address with instance via static NAT rule.
returned: success
type: string
sample: 1.2.3.4
@ -326,6 +326,16 @@ tags:
returned: success
type: dict
sample: '[ { "key": "foo", "value": "bar" } ]'
hypervisor:
description: Hypervisor related to this instance.
returned: success
type: string
sample: KVM
instance_name:
description: Internal name of the instance (ROOT admin only).
returned: success
type: string
sample: i-44-3992-VM
'''
import base64
@ -712,6 +722,10 @@ class AnsibleCloudStackInstance(AnsibleCloudStack):
self.result['account'] = instance['account']
if 'project' in instance:
self.result['project'] = instance['project']
if 'hypervisor' in instance:
self.result['hypervisor'] = instance['hypervisor']
if 'instancename' in instance:
self.result['instance_name'] = instance['instancename']
if 'publicip' in instance:
self.result['public_ip'] = instance['public_ip']
if 'passwordenabled' in instance:
@ -771,7 +785,7 @@ def main():
disk_offering = dict(default=None),
disk_size = dict(type='int', default=None),
keyboard = dict(choices=['de', 'de-ch', 'es', 'fi', 'fr', 'fr-be', 'fr-ch', 'is', 'it', 'jp', 'nl-be', 'no', 'pt', 'uk', 'us'], default=None),
hypervisor = dict(default=None),
hypervisor = dict(choices=['KVM', 'VMware', 'BareMetal', 'XenServer', 'LXC', 'HyperV', 'UCS', 'OVM'], default=None),
security_groups = dict(type='list', aliases=[ 'security_group' ], default=[]),
affinity_groups = dict(type='list', aliases=[ 'affinity_group' ], default=[]),
domain = dict(default=None),
@ -786,7 +800,11 @@ def main():
api_key = dict(default=None),
api_secret = dict(default=None, no_log=True),
api_url = dict(default=None),
api_http_method = dict(default='get'),
api_http_method = dict(choices=['get', 'post'], default='get'),
api_timeout = dict(type='int', default=10),
),
required_together = (
['api_key', 'api_secret', 'api_url'],
),
supports_check_mode=True
)

View file

@ -61,7 +61,6 @@ EXAMPLES = '''
module: cs_instancegroup
name: loadbalancers
# Remove an instance group
- local_action:
module: cs_instancegroup
@ -198,7 +197,11 @@ def main():
api_key = dict(default=None),
api_secret = dict(default=None, no_log=True),
api_url = dict(default=None),
api_http_method = dict(default='get'),
api_http_method = dict(choices=['get', 'post'], default='get'),
api_timeout = dict(type='int', default=10),
),
required_together = (
['api_key', 'api_secret', 'api_url'],
),
supports_check_mode=True
)

View file

@ -116,23 +116,20 @@ EXAMPLES = '''
url: http://mirror.switch.ch/ftp/mirror/debian-cd/current/amd64/iso-cd/debian-7.7.0-amd64-netinst.iso
os_type: Debian GNU/Linux 7(64-bit)
# Register an ISO with given name if ISO md5 checksum does not already exist.
- local_action:
module: cs_iso
name: Debian 7 64-bit
url: http://mirror.switch.ch/ftp/mirror/debian-cd/current/amd64/iso-cd/debian-7.7.0-amd64-netinst.iso
os_type:
os_type: Debian GNU/Linux 7(64-bit)
checksum: 0b31bccccb048d20b551f70830bb7ad0
# Remove an ISO by name
- local_action:
module: cs_iso
name: Debian 7 64-bit
state: absent
# Remove an ISO by checksum
- local_action:
module: cs_iso
@ -331,7 +328,11 @@ def main():
api_key = dict(default=None),
api_secret = dict(default=None, no_log=True),
api_url = dict(default=None),
api_http_method = dict(default='get'),
api_http_method = dict(choices=['get', 'post'], default='get'),
api_timeout = dict(type='int', default=10),
),
required_together = (
['api_key', 'api_secret', 'api_url'],
),
supports_check_mode=True
)

View file

@ -92,12 +92,13 @@ options:
default: null
project:
description:
- Name of the project the c(vm) is located in.
- Name of the project the C(vm) is located in.
required: false
default: null
zone:
description:
- Name of the zone in which the virtual machine is in. If not set, default zone is used.
- Name of the zone in which the virtual machine is in.
- If not set, default zone is used.
required: false
default: null
poll_async:
@ -117,7 +118,6 @@ EXAMPLES = '''
public_port: 80
private_port: 8080
# forward SSH and open firewall
- local_action:
module: cs_portforward
@ -127,7 +127,6 @@ EXAMPLES = '''
private_port: 22
open_firewall: true
# forward DNS traffic, but do not open firewall
- local_action:
module: cs_portforward
@ -138,7 +137,6 @@ EXAMPLES = '''
protocol: udp
open_firewall: true
# remove ssh port forwarding
- local_action:
module: cs_portforward
@ -161,26 +159,26 @@ protocol:
type: string
sample: tcp
private_port:
description: Private start port.
description: Start port on the virtual machine's IP address.
returned: success
type: int
sample: 80
private_end_port:
description: Private end port.
description: End port on the virtual machine's IP address.
returned: success
type: int
public_port:
description: Public start port.
description: Start port on the public IP address.
returned: success
type: int
sample: 80
public_end_port:
description: Public end port.
description: End port on the public IP address.
returned: success
type: int
sample: 80
tags:
description: Tag srelated to the port forwarding.
description: Tags related to the port forwarding.
returned: success
type: list
sample: []
@ -201,7 +199,6 @@ vm_guest_ip:
sample: 10.101.65.152
'''
try:
from cs import CloudStack, CloudStackException, read_config
has_lib_cs = True
@ -405,7 +402,11 @@ def main():
api_key = dict(default=None),
api_secret = dict(default=None, no_log=True),
api_url = dict(default=None),
api_http_method = dict(default='get'),
api_http_method = dict(choices=['get', 'post'], default='get'),
api_timeout = dict(type='int', default=10),
),
required_together = (
['api_key', 'api_secret', 'api_url'],
),
supports_check_mode=True
)

View file

@ -57,7 +57,6 @@ EXAMPLES = '''
name: default
description: default security group
# Remove a security group
- local_action:
module: cs_securitygroup
@ -165,7 +164,11 @@ def main():
api_key = dict(default=None),
api_secret = dict(default=None, no_log=True),
api_url = dict(default=None),
api_http_method = dict(default='get'),
api_http_method = dict(choices=['get', 'post'], default='get'),
api_timeout = dict(type='int', default=10),
),
required_together = (
['api_key', 'api_secret', 'api_url'],
),
supports_check_mode=True
)

View file

@ -102,7 +102,6 @@ EXAMPLES = '''
port: 80
cidr: 1.2.3.4/32
# Allow tcp/udp outbound added to security group 'default'
- local_action:
module: cs_securitygroup_rule
@ -115,7 +114,6 @@ EXAMPLES = '''
- tcp
- udp
# Allow inbound icmp from 0.0.0.0/0 added to security group 'default'
- local_action:
module: cs_securitygroup_rule
@ -124,7 +122,6 @@ EXAMPLES = '''
icmp_code: -1
icmp_type: -1
# Remove rule inbound port 80/tcp from 0.0.0.0/0 from security group 'default'
- local_action:
module: cs_securitygroup_rule
@ -132,7 +129,6 @@ EXAMPLES = '''
port: 80
state: absent
# Allow inbound port 80/tcp from security group web added to security group 'default'
- local_action:
module: cs_securitygroup_rule
@ -400,7 +396,12 @@ def main():
api_key = dict(default=None),
api_secret = dict(default=None, no_log=True),
api_url = dict(default=None),
api_http_method = dict(default='get'),
api_http_method = dict(choices=['get', 'post'], default='get'),
api_timeout = dict(type='int', default=10),
),
required_together = (
['icmp_type', 'icmp_code'],
['api_key', 'api_secret', 'api_url'],
),
mutually_exclusive = (
['icmp_type', 'start_port'],

View file

@ -217,7 +217,11 @@ def main():
api_key = dict(default=None),
api_secret = dict(default=None, no_log=True),
api_url = dict(default=None),
api_http_method = dict(default='get'),
api_http_method = dict(choices=['get', 'post'], default='get'),
api_timeout = dict(type='int', default=10),
),
required_together = (
['api_key', 'api_secret', 'api_url'],
),
supports_check_mode=True
)

View file

@ -88,7 +88,6 @@ EXAMPLES = '''
vm: web-01
snapshot_memory: yes
# Revert a VM to a snapshot after a failed upgrade
- local_action:
module: cs_vmsnapshot
@ -96,7 +95,6 @@ EXAMPLES = '''
vm: web-01
state: revert
# Remove a VM snapshot after successful upgrade
- local_action:
module: cs_vmsnapshot
@ -290,7 +288,12 @@ def main():
api_key = dict(default=None),
api_secret = dict(default=None, no_log=True),
api_url = dict(default=None),
api_http_method = dict(default='get'),
api_http_method = dict(choices=['get', 'post'], default='get'),
api_timeout = dict(type='int', default=10),
),
required_together = (
['icmp_type', 'icmp_code'],
['api_key', 'api_secret', 'api_url'],
),
supports_check_mode=True
)