def destroy(config): """Destroy a droplet based on the configuration given""" # Create manager manager = digitalocean.Manager(token=config.token) # Get droplet so we can destroy it droplet = helper.get_droplet_by_name(manager, config.droplet_name) if not droplet: print 'Droplet does not exist: {}'.format(config.droplet_name) return False droplet.destroy() # Should probably only see one? actions = droplet.get_actions() for action in actions: action.wait() print 'Action {} is {}'.format(action.type, action.status) # Now get and upate the DNS record -- assumes a single A record, which we # delete domains = manager.get_all_domains() for domain in domains: if domain.name == config.domain_name: records = domain.get_records() for record in records: if record.type == 'A': record.destroy() print 'Destroy of {} complete!'.format(config.domain_name) return True
def create(config): """Create a droplet based on the configuration given""" # Create manager manager = digitalocean.Manager(token=config.token) # Don't continue if we've already got droplet created if helper.get_droplet_by_name(manager, config.droplet_name): print 'Droplet already exists: {}'.format(config.droplet_name) return False # Get image to create droplet from image = helper.get_image_by_name(manager, config.image_name) # Fetch the ssh key ssh_keys = helper.get_ssh_keylist_by_name(manager, config.ssh_key_name) # Create droplet with image and ssh key droplet = digitalocean.Droplet(token=config.token, name=config.droplet_name, region=config.droplet_region, image=image.id, size_slug=config.droplet_size_slug, ssh_keys=ssh_keys) droplet.create() # Only expecting to see a single action, but loop anyway... actions = droplet.get_actions() for action in actions: action.wait() print 'Action {} is {}'.format(action.type, action.status) # Now get the IP address droplet.load() print 'IP address: {}'.format(droplet.ip_address) # Now get and upate the DNS record -- assumes a single A record # TODO create domain if it doesn't exist and move this to a function _update_domain(manager, config.domain_name, droplet.ip_address) print 'Setup of {} complete! IP address: {}'.format(config.domain_name, droplet.ip_address)