Example #1
0
    def __init__(self, process_filename, node=None, previous_clustering_results=None):
        self.previous_clustering_results = previous_clustering_results
        if not node:
            node = fetch_node(marshall=json)

        with open(process_filename) as f:
            strategy = replace_variables(f.read())
        self.process_dict = json.loads(strategy)

        driver_cls = node.value['driver'] if '_' not in node.value['driver'] \
            else node.value['driver'][:node.value['driver'].find('_')
                 ] + node.value['driver'][node.value['driver'].rfind('_') + 1:]

        self.driver_name = next(driver_name for driver_name, driver_tuple in DRIVERS.iteritems()
                                if driver_tuple[1] == driver_cls)

        self.config_provider = next(provider for provider in self.process_dict['provider']['options']
                                    if provider['provider']['name'] == (
                                        self.driver_name.upper() if hasattr(Provider, self.driver_name.upper())
                                        else next(
                                            ifilter(lambda prov_name: getattr(Provider, prov_name) == self.driver_name,
                                                    dir(Provider)))
                                    ))

        self.driver_name = self.driver_name.lower()

        driver = (lambda driver: driver(
            region=self.config_provider['provider']['region'],
            **self.config_provider['auth']
        ))(get_driver(self.driver_name))

        self.node_name = node.key[node.key.find('/', 1) + 1:].encode('utf8')
        if self.driver_name == 'azure':
            if 'create_with' not in self.config_provider or \
                            'ex_cloud_service_name' not in self.config_provider['create_with']:
                raise KeyError('`ex_cloud_service_name` must be defined. '
                               'See: http://libcloud.readthedocs.org/en/latest/compute/drivers/azure.html'
                               '#libcloud.compute.drivers.azure.AzureNodeDriver.create_node')
            nodes = driver.list_nodes(self.config_provider['create_with']['ex_cloud_service_name'])
        else:
            nodes = driver.list_nodes()

        self.node = next(ifilter(lambda _node: _node.uuid == node.value['uuid'],
                                 nodes), None)
        if not self.node:
            raise EnvironmentError('node not found. Maybe the cloud provider is still provisioning?')

        if 'password' in self.node.extra:
            print 'password ='******'password']

        # pp(node_to_dict(self.node))
        self.dns_name = self.node.extra.get('dns_name')
Example #2
0
            args_to_defaults = zip(reversed(argspec.args), argspec.defaults)
        for docstring_line in list_docs:
            if docstring_line.startswith("@type"):
                list_of_arguments.append(get_argument_dict(docstring_line, argspec, args_to_defaults))
            elif docstring_line.startswith("@return"):
                list_of_return_values.append(get_return(docstring_line))

        func_detail["argument_list"] = list_of_arguments
        func_detail["return_list"] = list_of_return_values
        func_list.append(func_detail)


# get the list of drivers that libcloud supports,
# and list of functions that each driver has
PROVIDERS_TO_FUNCTIONS = {}
for driver_id, driver_tuple in DRIVERS.items():
    driver_name = driver_tuple[1]
    driver_id_and_name = driver_id, driver_name
    PROVIDERS_TO_FUNCTIONS[driver_id_and_name] = func_list

if __name__ == "__main__":
    for driver_id_and_name, func_list in PROVIDERS_TO_FUNCTIONS.items():
        driver_name = driver_id_and_name[1]
        print driver_name
        for func in func_list:
            print "Function name: %s, Argument list: %s, Return list: %s" % (
                func["function_name"],
                func["argument_list"],
                func["return_list"],
            )
        print "=" * 80