Beispiel #1
0
    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])
Beispiel #2
0
    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])
Beispiel #3
0
    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
Beispiel #4
0
    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])
Beispiel #5
0
    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])
Beispiel #6
0
    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])