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])
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) sdc = DataCenter(location=location, key_id=key_id) 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])
def deployServer(self, auth, zone_id, req): """ @param : auth {"auth":{ "key_id":"Key ID", "secret":"Secret Key", } } @param: zone_id @param: req (Dic) {"name":"test-machine", "package":"g4-general-4G", "image":'a601aa10-100a-11e6-9eb1-2bbb19e1e3e6', ... """ # 1. Get Endpoint of Zone cloudMgr = self.locator.getManager('CloudManager') (r_name, z_name) = cloudMgr._getRegionZone(zone_id) auth_data = auth['auth'] a_key = auth_data['key_id'] s_key = auth_data['secret'] # 2. Create DataCenter object sdc = DataCenter(location=z_name, key_id=a_key, secret=s_key) # 3. Create Server self.logger.debug(req) instance = sdc.create_machine(**req) instance.poll_until('running') server = {} server['status'] = instance.status() server['server_id'] = instance.id server['private_ip_address'] = instance.private_ips[0] self.logger.debug("Create Server => Private IP:%s" % instance.private_ips[0]) server['floating_ip'] = instance.public_ips[0] self.logger.debug("Create Server => Public IP:%s" % instance.public_ips[0]) # CPU, Memory, Disk if req.has_key('package'): packages = sdc.packages(req['package']) if len(packages) == 1: package = packages[0] server['cpus'] = package['vcpus'] server['memory'] = package['memory'] server['disk'] = package['disk'] self.logger.debug("status:%s" % instance.status()) return server
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 = '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])