def core(module): snapshot_type = module.params['snapshot_type'] rest = DigitalOceanHelper(module) base_url = 'snapshots?' snapshot = [] if snapshot_type == 'by_id': base_url += "/{0}".format(module.params.get('snapshot_id')) response = rest.get(base_url) status_code = response.status_code if status_code != 200: module.fail_json( msg="Failed to fetch snapshot information due to error : %s" % response.json['message']) snapshot.extend(response.json["snapshot"]) else: if snapshot_type == 'droplet': base_url += "resource_type=droplet&" elif snapshot_type == 'volume': base_url += "resource_type=volume&" snapshot = rest.get_paginated_data(base_url=base_url, data_key_name='snapshots') module.exit_json(changed=False, data=snapshot)
def core(module): rest = DigitalOceanHelper(module) base_url = 'regions?' regions = rest.get_paginated_data(base_url=base_url, data_key_name='regions') module.exit_json(changed=False, data=regions)
def core(module): domain_name = module.params.get('domain_name', None) rest = DigitalOceanHelper(module) domain_results = [] if domain_name is not None: response = rest.get("domains/%s" % domain_name) status_code = response.status_code if status_code != 200: module.fail_json(msg="Failed to retrieve domain for DigitalOcean") resp_json = response.json domains = [resp_json['domain']] else: domains = rest.get_paginated_data(base_url="domains?", data_key_name='domains') for temp_domain in domains: temp_domain_dict = { "name": temp_domain['name'], "ttl": temp_domain['ttl'], "zone_file": temp_domain['zone_file'], "domain_records": list(), } base_url = "domains/%s/records?" % temp_domain['name'] temp_domain_dict["domain_records"] = rest.get_paginated_data( base_url=base_url, data_key_name='domain_records') domain_results.append(temp_domain_dict) module.exit_json(changed=False, data=domain_results)
def __init__(self, module): self.rest = DigitalOceanHelper(module) self.module = module self.wait = self.module.params.pop('wait', True) self.wait_timeout = self.module.params.pop('wait_timeout', 120) self.unique_name = self.module.params.pop('unique_name', False) # pop the oauth token so we don't include it in the POST data self.module.params.pop('oauth_token')
def core(module): rest = DigitalOceanHelper(module) response = rest.get('sizes') if response.status_code != 200: module.fail_json(msg="Failed to fetch 'sizes' information due to error : %s" % response.json['message']) module.exit_json(changed=False, data=response.json['sizes'])
def core(module): state = module.params['state'] name = module.params['name'] rest = DigitalOceanHelper(module) results = dict(changed=False) response = rest.get('certificates') status_code = response.status_code resp_json = response.json if status_code != 200: module.fail_json(msg="Failed to retrieve certificates for DigitalOcean") if state == 'present': for cert in resp_json['certificates']: if cert['name'] == name: module.fail_json(msg="Certificate name %s already exists" % name) # Certificate does not exist, let us create it cert_data = dict(name=name, private_key=module.params['private_key'], leaf_certificate=module.params['leaf_certificate']) if module.params['certificate_chain'] is not None: cert_data.update(certificate_chain=module.params['certificate_chain']) response = rest.post("certificates", data=cert_data) status_code = response.status_code if status_code == 500: module.fail_json(msg="Failed to upload certificates as the certificates are malformed.") resp_json = response.json if status_code == 201: results.update(changed=True, response=resp_json) elif status_code == 422: results.update(changed=False, response=resp_json) elif state == 'absent': cert_id_del = None for cert in resp_json['certificates']: if cert['name'] == name: cert_id_del = cert['id'] if cert_id_del is not None: url = "certificates/{0}".format(cert_id_del) response = rest.delete(url) if response.status_code == 204: results.update(changed=True) else: results.update(changed=False) else: module.fail_json(msg="Failed to find certificate %s" % name) module.exit_json(**results)
def core(module): rest = DigitalOceanHelper(module) response = rest.get("account/keys") status_code = response.status_code json = response.json if status_code == 200: module.exit_json(changed=False, ansible_facts=json) else: module.fail_json(msg='Error fetching facts [{0}: {1}]'.format( status_code, response.json['message']))
def core(module): rest = DigitalOceanHelper(module) response = rest.get("account/keys") status_code = response.status_code json = response.json if status_code == 200: module.exit_json(changed=False, data=json['ssh_keys']) else: module.fail_json( msg='Error fetching SSH Key information [{0}: {1}]'.format( status_code, response.json['message']))
def core(module): region_name = module.params.get('region_name', None) rest = DigitalOceanHelper(module) base_url = 'volumes?' if region_name is not None: base_url += "region=%s&" % region_name volumes = rest.get_paginated_data(base_url=base_url, data_key_name='volumes') module.exit_json(changed=False, data=volumes)
def core(module): image_type = module.params['image_type'] rest = DigitalOceanHelper(module) base_url = 'images?' if image_type == 'distribution': base_url += "type=distribution&" elif image_type == 'application': base_url += "type=application&" elif image_type == 'private': base_url += "private=true&" images = rest.get_paginated_data(base_url=base_url, data_key_name='images') module.exit_json(changed=False, data=images)
def main(): module = AnsibleModule( argument_spec=DigitalOceanHelper.digital_ocean_argument_spec(), supports_check_mode=True, ) core(module)
def main(): argument_spec = DigitalOceanHelper.digital_ocean_argument_spec() argument_spec.update( snapshot_type=dict(type='str', required=False, choices=['all', 'droplet', 'volume', 'by_id'], default='all'), snapshot_id=dict(type='str', required=False), ) module = AnsibleModule( argument_spec=argument_spec, required_if=[ ['snapshot_type', 'by_id', ['snapshot_id']], ], ) if module._name in ('digital_ocean_snapshot_facts', 'community.general.digital_ocean_snapshot_facts'): module.deprecate( "The 'digital_ocean_snapshot_facts' module has been renamed to 'digital_ocean_snapshot_info'", version='3.0.0', collection_name='community.general') # was Ansible 2.13 try: core(module) except Exception as e: module.fail_json(msg=to_native(e), exception=format_exc())
def main(): argument_spec = DigitalOceanHelper.digital_ocean_argument_spec() module = AnsibleModule(argument_spec=argument_spec) if module._name == 'digital_ocean_account_facts': module.deprecate("The 'digital_ocean_account_facts' module has been renamed to 'digital_ocean_account_info'", version='2.13') try: core(module) except Exception as e: module.fail_json(msg=to_native(e), exception=format_exc())
def core(module): tag_name = module.params.get('tag_name', None) rest = DigitalOceanHelper(module) base_url = 'tags?' if tag_name is not None: response = rest.get("%s/%s" % (base_url, tag_name)) status_code = response.status_code if status_code != 200: module.fail_json(msg="Failed to retrieve tags for DigitalOcean") resp_json = response.json tag = resp_json['tag'] else: tag = rest.get_paginated_data(base_url=base_url, data_key_name='tags') module.exit_json(changed=False, data=tag)
def core(module): load_balancer_id = module.params.get('load_balancer_id', None) rest = DigitalOceanHelper(module) base_url = 'load_balancers?' if load_balancer_id is not None: response = rest.get("%s/%s" % (base_url, load_balancer_id)) status_code = response.status_code if status_code != 200: module.fail_json(msg="Failed to retrieve load balancers for DigitalOcean") resp_json = response.json load_balancer = resp_json['load_balancer'] else: load_balancer = rest.get_paginated_data(base_url=base_url, data_key_name='load_balancers') module.exit_json(changed=False, data=load_balancer)
def core(module): certificate_id = module.params.get('certificate_id', None) rest = DigitalOceanHelper(module) base_url = 'certificates?' if certificate_id is not None: response = rest.get("%s/%s" % (base_url, certificate_id)) status_code = response.status_code if status_code != 200: module.fail_json(msg="Failed to retrieve certificates for DigitalOcean") resp_json = response.json certificate = resp_json['certificate'] else: certificate = rest.get_paginated_data(base_url=base_url, data_key_name='certificates') module.exit_json(changed=False, data=certificate)
def core(module): firewall_name = module.params.get('name', None) rest = DigitalOceanHelper(module) base_url = 'firewalls?' response = rest.get("%s" % base_url) status_code = response.status_code if status_code != 200: module.fail_json(msg="Failed to retrieve firewalls from Digital Ocean") firewalls = rest.get_paginated_data(base_url=base_url, data_key_name='firewalls') if firewall_name is not None: rule = {} for firewall in firewalls: if firewall['name'] == firewall_name: rule.update(firewall) module.exit_json(changed=False, data=rule) else: module.exit_json(changed=False, data=firewalls)
def main(): module = AnsibleModule( argument_spec=DigitalOceanHelper.digital_ocean_argument_spec(), supports_check_mode=False, ) module.deprecate( "The 'digital_ocean_sshkey_facts' module has been deprecated, use the new 'digital_ocean_sshkey_info' module", version='2.13') core(module)
def main(): module = AnsibleModule( argument_spec=DigitalOceanHelper.digital_ocean_argument_spec() ) if module._name in ('digital_ocean_floating_ip_facts', 'community.general.digital_ocean_floating_ip_facts'): module.deprecate("The 'digital_ocean_floating_ip_facts' module has been renamed to 'digital_ocean_floating_ip_info'", version='2.13') try: core(module) except Exception as e: module.fail_json(msg=to_native(e))
def main(): module = AnsibleModule( argument_spec=DigitalOceanHelper.digital_ocean_argument_spec(), supports_check_mode=False, ) module.deprecate( "The 'digital_ocean_sshkey_facts' module has been deprecated, use the new 'digital_ocean_sshkey_info' module", version='3.0.0', collection_name='community.general') # was Ansible 2.13 core(module)
def core(module): rest = DigitalOceanHelper(module) page = 1 has_next = True floating_ips = [] status_code = None while has_next or status_code != 200: response = rest.get("floating_ips?page={0}&per_page=20".format(page)) status_code = response.status_code # stop if any error during pagination if status_code != 200: break page += 1 floating_ips.extend(response.json["floating_ips"]) has_next = "pages" in response.json["links"] and "next" in response.json["links"]["pages"] if status_code == 200: module.exit_json(changed=False, floating_ips=floating_ips) else: module.fail_json(msg="Error fetching information [{0}: {1}]".format( status_code, response.json["message"]))
def main(): argument_spec = DigitalOceanHelper.digital_ocean_argument_spec() module = AnsibleModule(argument_spec=argument_spec) if module._name in ('digital_ocean_account_facts', 'community.general.digital_ocean_account_facts'): module.deprecate( "The 'digital_ocean_account_facts' module has been renamed to 'digital_ocean_account_info'", version='3.0.0', collection_name='community.general') # was Ansible 2.13 try: core(module) except Exception as e: module.fail_json(msg=to_native(e), exception=format_exc())
def main(): argument_spec = DigitalOceanHelper.digital_ocean_argument_spec() argument_spec.update( name=dict(type='str', required=False), ) module = AnsibleModule(argument_spec=argument_spec) if module._name == 'digital_ocean_firewall_facts': module.deprecate("The 'digital_ocean_firewall_facts' module has been renamed to 'digital_ocean_firewall_info'", version='2.13') try: core(module) except Exception as e: module.fail_json(msg=to_native(e), exception=format_exc())
def main(): argument_spec = DigitalOceanHelper.digital_ocean_argument_spec() argument_spec.update( certificate_id=dict(type='str', required=False), ) module = AnsibleModule(argument_spec=argument_spec) if module._name in ('digital_ocean_certificate_facts', 'community.general.digital_ocean_certificate_facts'): module.deprecate("The 'digital_ocean_certificate_facts' module has been renamed to 'digital_ocean_certificate_info'", version='2.13') try: core(module) except Exception as e: module.fail_json(msg=to_native(e), exception=format_exc())
def main(): argument_spec = DigitalOceanHelper.digital_ocean_argument_spec() argument_spec.update( name=dict(type='str', required=True), resource_id=dict(aliases=['droplet_id'], type='str'), resource_type=dict(choices=['droplet'], default='droplet'), state=dict(choices=['present', 'absent'], default='present'), ) module = AnsibleModule(argument_spec=argument_spec) try: core(module) except Exception as e: module.fail_json(msg=to_native(e), exception=format_exc())
def main(): argument_spec = DigitalOceanHelper.digital_ocean_argument_spec() argument_spec.update(state=dict(choices=['present', 'absent'], default='present'), name=dict(type='str'), id=dict(aliases=['droplet_id'], type='int'), ip=dict(type='str')) module = AnsibleModule( argument_spec=argument_spec, required_one_of=(['id', 'name'], ), ) try: core(module) except Exception as e: module.fail_json(msg=to_native(e), exception=traceback.format_exc())
def main(): argument_spec = DigitalOceanHelper.digital_ocean_argument_spec() argument_spec.update( image_type=dict(type='str', required=False, choices=['all', 'application', 'distribution', 'private'], default='all' ) ) module = AnsibleModule(argument_spec=argument_spec) if module._name == 'digital_ocean_image_facts': module.deprecate("The 'digital_ocean_image_facts' module has been renamed to 'digital_ocean_image_info'", version='2.13') try: core(module) except Exception as e: module.fail_json(msg=to_native(e), exception=format_exc())
def main(): argument_spec = DigitalOceanHelper.digital_ocean_argument_spec() argument_spec.update(name=dict(type='str'), leaf_certificate=dict(type='str'), private_key=dict(type='str', no_log=True), state=dict(choices=['present', 'absent'], default='present'), certificate_chain=dict(type='str')) module = AnsibleModule( argument_spec=argument_spec, required_if=[('state', 'present', ['name', 'leaf_certificate', 'private_key']), ('state', 'absent', ['name'])], ) try: core(module) except Exception as e: module.fail_json(msg=to_native(e))
def main(): argument_spec = DigitalOceanHelper.digital_ocean_argument_spec() argument_spec.update( state=dict(choices=['present', 'absent'], required=True), command=dict(choices=['create', 'attach'], required=True), block_size=dict(type='int', required=False), volume_name=dict(type='str', required=True), description=dict(type='str'), region=dict(type='str', required=False), snapshot_id=dict(type='str', required=False), droplet_id=dict(type='int') ) module = AnsibleModule(argument_spec=argument_spec) try: handle_request(module) except DOBlockStorageException as e: module.fail_json(msg=e.message, exception=traceback.format_exc()) except KeyError as e: module.fail_json(msg='Unable to load %s' % e.message, exception=traceback.format_exc())
def __init__(self, module): self.module = module self.rest = DigitalOceanHelper(module)