def main(): argument_spec = cloudscale_argument_spec() argument_spec.update( dict( state=dict(default='present', choices=('present', 'absent')), name=dict(), uuid=dict(), zone=dict(), size_gb=dict(type='int'), type=dict(choices=('ssd', 'bulk')), server_uuids=dict(type='list', aliases=['server_uuid']), tags=dict(type='dict'), )) module = AnsibleModule( argument_spec=argument_spec, required_one_of=(('name', 'uuid'), ), supports_check_mode=True, ) cloudscale_volume = AnsibleCloudscaleVolume(module) if module.params['state'] == 'absent': server_group = cloudscale_volume.absent() else: server_group = cloudscale_volume.present() result = cloudscale_volume.get_result(server_group) module.exit_json(**result)
def main(): argument_spec = cloudscale_argument_spec() argument_spec.update(dict( state=dict(default='running', choices=ALLOWED_STATES), name=dict(), uuid=dict(), flavor=dict(), image=dict(), volume_size_gb=dict(type='int', default=10), bulk_volume_size_gb=dict(type='int'), ssh_keys=dict(type='list'), use_public_network=dict(type='bool', default=True), use_private_network=dict(type='bool', default=False), use_ipv6=dict(type='bool', default=True), anti_affinity_with=dict(), user_data=dict(), force=dict(type='bool', default=False) )) module = AnsibleModule( argument_spec=argument_spec, required_one_of=(('name', 'uuid'),), supports_check_mode=True, ) cloudscale_server = AnsibleCloudscaleServer(module) if module.params['state'] == "absent": server = cloudscale_server.absent_server() else: server = cloudscale_server.present_server() result = cloudscale_server.get_result(server) module.exit_json(**result)
def main(): argument_spec = cloudscale_argument_spec() argument_spec.update( dict( name=dict(), uuid=dict(), type=dict(default='anti-affinity'), tags=dict(type='dict'), state=dict(default='present', choices=['absent', 'present']), )) module = AnsibleModule( argument_spec=argument_spec, required_one_of=(('name', 'uuid'), ), supports_check_mode=True, ) cloudscale_server_group = AnsibleCloudscaleServerGroup( module, 'cloudscale_server_group') if module.params['state'] == 'absent': server_group = cloudscale_server_group.absent_group() else: server_group = cloudscale_server_group.present_group() result = cloudscale_server_group.get_result(server_group) module.exit_json(**result)
def main(): argument_spec = cloudscale_argument_spec() argument_spec.update( dict( state=dict(default='running', choices=ALLOWED_STATES), name=dict(), uuid=dict(), flavor=dict(), image=dict(), volume_size_gb=dict(type='int', default=10), bulk_volume_size_gb=dict(type='int'), ssh_keys=dict(type='list'), use_public_network=dict(type='bool', default=True), use_private_network=dict(type='bool', default=False), use_ipv6=dict(type='bool', default=True), anti_affinity_with=dict(), user_data=dict(), )) module = AnsibleModule( argument_spec=argument_spec, required_one_of=(('name', 'uuid'), ), mutually_exclusive=(('name', 'uuid'), ), supports_check_mode=True, ) target_state = module.params['state'] server = AnsibleCloudscaleServer(module) # The server could be in a changeing or error state. # Wait for one of the allowed states before doing anything. # If an allowed state can't be reached, this module fails. if not server.info['state'] in ALLOWED_STATES: server.wait_for_state(ALLOWED_STATES) current_state = server.info['state'] if module.check_mode: module.exit_json(changed=not target_state == current_state, **server.info) changed = False if current_state == 'absent' and target_state == 'running': server.create_server() changed = True elif current_state == 'absent' and target_state == 'stopped': server.create_server() server.stop_server() changed = True elif current_state == 'stopped' and target_state == 'running': server.start_server() changed = True elif current_state in ('running', 'stopped') and target_state == 'absent': server.delete_server() changed = True elif current_state == 'running' and target_state == 'stopped': server.stop_server() changed = True module.exit_json(changed=changed, **server.info)
def main(): argument_spec = cloudscale_argument_spec() argument_spec.update(dict( state=dict(default='present', choices=('present', 'absent')), name=dict(), uuid=dict(), size_gb=dict(type='int'), type=dict(choices=('ssd', 'bulk')), server_uuids=dict(type='list', aliases=['server_uuid']), )) module = AnsibleModule( argument_spec=argument_spec, required_one_of=(('name', 'uuid'),), mutually_exclusive=(('name', 'uuid'),), supports_check_mode=True, ) volume = AnsibleCloudscaleVolume(module) if module.check_mode: changed = False for param, conv in (('state', str), ('server_uuids', set), ('size_gb', int)): if module.params[param] is None: continue if conv(volume.info[param]) != conv(module.params[param]): changed = True break module.exit_json(changed=changed, **volume.info) if (volume.info['state'] == 'absent' and module.params['state'] == 'present'): volume.create() elif (volume.info['state'] == 'present' and module.params['state'] == 'absent'): volume.delete() if module.params['state'] == 'present': for param, conv in (('server_uuids', set), ('size_gb', int)): if module.params[param] is None: continue if conv(volume.info[param]) != conv(module.params[param]): volume.update(param) if (module.params['type'] is not None and volume.info['type'] != module.params['type']): module.fail_json( msg='Cannot change type of an existing volume.', ) module.exit_json(changed=volume.changed, **volume.info)
def main(): argument_spec = cloudscale_argument_spec() argument_spec.update( dict( state=dict(default='present', choices=('present', 'absent'), type='str'), ip=dict(aliases=('network', ), type='str'), ip_version=dict(choices=(4, 6), type='int'), server=dict(type='str'), prefix_length=dict(choices=(56, ), type='int'), reverse_ptr=dict(type='str'), )) module = AnsibleModule( argument_spec=argument_spec, required_one_of=(('ip', 'ip_version'), ), supports_check_mode=True, ) if not HAS_IPADDRESS: module.fail_json(msg=missing_required_lib('ipaddress'), exception=IPADDRESS_IMP_ERR) target_state = module.params['state'] target_server = module.params['server'] floating_ip = AnsibleCloudscaleFloatingIP(module) current_state = floating_ip.info['state'] current_server = floating_ip.info[ 'server'] if 'server' in floating_ip.info else None if module.check_mode: module.exit_json( changed=not target_state == current_state or (current_state == 'present' and current_server != target_server), **floating_ip.info) changed = False if current_state == 'absent' and target_state == 'present': floating_ip.request_floating_ip() changed = True elif current_state == 'present' and target_state == 'absent': floating_ip.release_floating_ip() changed = True elif current_state == 'present' and current_server != target_server: floating_ip.update_floating_ip() changed = True module.exit_json(changed=changed, **floating_ip.info)