def store_astute_yaml_for_one_node(nailgun_node): ssh_manager = SSHManager() if 'roles' not in nailgun_node: return None errmsg = 'Downloading "{0}.yaml" from the {1} failed' msg = 'File "{0}.yaml" was downloaded from the {1}' nodename = nailgun_node['name'] ip = nailgun_node['ip'] for role in nailgun_node['roles']: filename = '{0}/{1}-{2}-{3}.yaml'.format(settings.LOGS_DIR, func_name, nodename, role) if not ssh_manager.isfile_on_remote(ip, '/etc/{0}.yaml'.format(role)): role = 'primary-' + role if ssh_manager.download_from_remote(ip, '/etc/{0}.yaml'.format(role), filename): logger.info(msg.format(role, nodename)) else: logger.error(errmsg.format(role, nodename)) if settings.DOWNLOAD_FACTS: fact_filename = re.sub(r'-\w*\.', '-facts.', filename) generate_facts(ip) if ssh_manager.download_from_remote(ip, '/tmp/facts.yaml', fact_filename): logger.info(msg.format('facts', nodename)) else: logger.error(errmsg.format('facts', nodename))
def get_puppet_report(node): """Get puppet run report from corresponding node :param node: a dictionary with node description :return: a dictionary with puppet report data """ ssh = SSHManager() ip = node['ip'] report_file = "/var/lib/puppet/state/last_run_report.yaml" asserts.assert_true(ssh.isfile_on_remote(ip, report_file), 'File {!r} not found on node {!r}' .format(report_file, node['id'])) with ssh.open_on_remote(ip, report_file) as f: data = yaml.load(f) ssh.rm_rf_on_remote(ip, report_file) return data