def api_get(self): """ Ask Joyent for all servers in a data center""" sdc = DataCenter(location=self.joyent_uri, key_id=self.joyent_key_id, secret=self.joyent_secret, allow_agent=True, verbose=self.debug) servers = sdc.machines() return servers
def created_key(self, pub_key_path): key_name = raw_input('Enter your ssh key name: ') key_id = '/%s/keys/%s' % ( env.joyent_account, key_name) allow_agent = env.get('allow_agent', False) sdc = DataCenter(key_id=key_id, allow_agent=allow_agent) with tempfile.TemporaryFile() as f: get(pub_key_path, f) f.seek(0) data = f.read() sdc.add_key(env.host_string, data)
def run(self, **kwargs): """ """ assert not env.hosts if not env.get('joyent_account'): print "To use the joyent api you must add a joyent_account value to your env" sys.exit(1) setup_name = 'servers.%s.setup' % kwargs.get('type') config_name = 'servers.%s.api_config' % kwargs.get('type') user = kwargs.get('user', 'admin') task = functions.get_task_instance(setup_name) default_dataset = DEFAULT_DATASET default_package = DEFAULT_PACKAGE networks = None if task: results = execute(config_name, hosts=['fake'])['fake'] config_section = results['config_section'] if 'dataset' in results: default_dataset = results['dataset'] if 'server_size' in results: default_package = results['server_size'] if 'networks' in results: networks = results['networks'] else: print "I don't know how to add a %s server" % kwargs.get('type') sys.exit(1) assert config_section location = kwargs.get('data_center') if not location and env.get('joyent_default_data_center'): location = env.joyent_default_data_center elif not location: print "You must supply an data_center argument or add a joyent_default_data_center attribute to your env" sys.exit(1) if not networks and env.get('joyent_default_networks'): networks = env.joyent_default_networks key_name = raw_input('Enter your ssh key name: ') key_id = '/%s/keys/%s' % (env.joyent_account, key_name) allow_agent = env.get('allow_agent', False) sdc = DataCenter(location=location, key_id=key_id, allow_agent=allow_agent) name = functions.get_remote_name(None, config_section, name=kwargs.get('name')) dataset = kwargs.get('data_set', default_dataset) datasets = sdc.datasets(search=dataset) datasets = sorted(datasets, key=lambda k: k['urn']) if datasets: dataset_id = datasets[-1]['id'] else: print "couldn't find a dataset %s. Here is what we found." % dataset print datasets sys.exit(1) package = kwargs.get('package', default_package) packages = sdc.packages(name=package) if len(packages) != 1: print "couldn't find a package %s. Here is what we found." % package print packages sys.exit(1) else: package_id = packages[0]['id'] new_args = { 'name': name, 'dataset': dataset_id, 'metadata': kwargs.get('metadata', {}), 'tags': kwargs.get('tags', {}), 'package': package_id, 'networks': networks } machine = sdc.create_machine(**new_args) print 'waiting for machine to come up' machine.poll_until('running') public_ip = machine.public_ips[0] print "added machine %s" % public_ip host_string = '%s@%s' % (user, public_ip) print 'done' execute(setup_name, hosts=[host_string])
def run(self, **kwargs): """ """ assert not env.hosts if not env.get('joyent_account'): print "To use the joyent api you must add a joyent_account value to your env" sys.exit(1) setup_name = 'setup.%s' % kwargs.get('type') task = functions.get_task_instance(setup_name) default_dataset = DEFAULT_DATASET default_package = DEFAULT_PACKAGE if task: if hasattr(task, 'dataset'): default_dataset = task.dataset if hasattr(task, 'server_size'): default_package = task.server_size else: print "I don't know how to add a %s server" % kwargs.get('type') sys.exit(1) location = kwargs.get('data_center') if not location and env.get('joyent_default_data_center'): location = env.joyent_default_data_center elif not location: print "You must supply an data_center argument or add a joyent_default_data_center attribute to your env" sys.exit(1) key_name = raw_input('Enter your ssh key name: ') key_id = '/%s/keys/%s' % (env.joyent_account, key_name) allow_agent = env.get('allow_agent', False) sdc = DataCenter(location=location, key_id=key_id, allow_agent=allow_agent) name = functions.get_remote_name(None, task.config_section, name=kwargs.get('name')) new_args = { 'name': name, 'dataset': kwargs.get('data_set', default_dataset), 'metadata': kwargs.get('metadata', {}), 'tags': kwargs.get('tags', {}), 'package': kwargs.get('package', default_package) } machine = sdc.create_machine(**new_args) public_ip = machine.public_ips[0] print "added machine %s" % public_ip host_string = 'admin@%s' % public_ip print "waiting for machine to be ready" while machine.status() != 'running': print '.' time.sleep(5) print 'done' execute(setup_name, name=name, hosts=[host_string])