def get(hostname, username=None, fallback=None): """ Retrieve the module that matches the distribution of a ``hostname``. This function will connect to that host and retrieve the distribution informaiton, then return the appropriate module and slap a few attributes to that module defining the information it found from the hostname. For example, if host ``node1.example.com`` is an Ubuntu server, the ``debian`` module would be returned and the following would be set:: module.name = 'ubuntu' module.release = '12.04' module.codename = 'precise' :param hostname: A hostname that is reachable/resolvable over the network :param fallback: Optional fallback to use if no supported distro is found """ conn = get_connection( hostname, username=username, logger=logging.getLogger(hostname) ) conn.import_module(remotes) distro_name, release, codename = conn.remote_module.platform_information() machine_type = conn.remote_module.machine_type() module = _get_distro(distro_name) module.name = distro_name module.release = release module.codename = codename module.conn = conn module.machine_type = machine_type module.init = lsb.choose_init(distro_name, codename) return module
def get(hostname, fallback=None): """ Retrieve the module that matches the distribution of a ``hostname``. This function will connect to that host and retrieve the distribution informaiton, then return the appropriate module and slap a few attributes to that module defining the information it found from the hostname. For example, if host ``node1.example.com`` is an Ubuntu server, the ``debian`` module would be returned and the following would be set:: module.name = 'ubuntu' module.release = '12.04' module.codename = 'precise' :param hostname: A hostname that is reachable/resolvable over the network :param fallback: Optional fallback to use if no supported distro is found """ sudo_conn = pushy.connect(get_transport(hostname)) (distro, release, codename) = lsb.get_lsb_release(sudo_conn) module = _get_distro(distro) module.name = distro module.release = release module.codename = codename module.sudo_conn = sudo_conn module.init = lsb.choose_init(distro, codename) return module
def get(hostname, username=None, fallback=None): """ Retrieve the module that matches the distribution of a ``hostname``. This function will connect to that host and retrieve the distribution informaiton, then return the appropriate module and slap a few attributes to that module defining the information it found from the hostname. For example, if host ``node1.example.com`` is an Ubuntu server, the ``debian`` module would be returned and the following would be set:: module.name = 'ubuntu' module.release = '12.04' module.codename = 'precise' :param hostname: A hostname that is reachable/resolvable over the network :param fallback: Optional fallback to use if no supported distro is found """ conn = get_connection(hostname, username=username, logger=logging.getLogger(hostname)) conn.import_module(remotes) distro_name, release, codename = conn.remote_module.platform_information() if not codename: raise exc.UnsupportedPlatform(distro=distro, codename=codename) machine_type = conn.remote_module.machine_type() module = _get_distro(distro_name) module.name = distro_name module.release = release module.codename = codename module.conn = conn module.machine_type = machine_type module.init = lsb.choose_init(distro_name, codename) return module