Esempio n. 1
0
def is_netdata_installed(session, args):
    with OperationLocker():
        try:
            run_command(['service', 'netdata', 'status'])
            return json.dumps(True)
        except Exception:
            return json.dumps(False)
Esempio n. 2
0
def install_netdata(session, args):
    api_key = args['api_key']
    destination = args['destination']
    with OperationLocker():
        install_package('netdata')
        with open("/etc/netdata/stream.conf", "w") as conf_file:
            conf_file.write(
                netdata_streaming_content.format(destination, api_key))
        run_command(['service', 'netdata', 'restart'])
        return json.dumps(True)
Esempio n. 3
0
def check_raid_pool(session, args):
    device = '/dev/md127'
    with OperationLocker():
        result = run_command(['mdadm', '--detail', device])

        lines = [line.strip() for line in result['stdout'].splitlines()]
        lines = [line for line in lines if len(line) > 0]
        # remove first line ('/dev/md127:')
        lines = lines[1:]
        # look for the line 'Number   Major   Minor   RaidDevice State'
        footer_index = next(i for i, line in enumerate(lines)
                            if line.startswith('Number'))
        # '1       8       16        1      active sync   /dev/sdb' -> ["1", "8", "16", "1", "active sync", "/dev/sdb"]
        volumes = [[
            field.strip() for field in line.split('  ')
            if len(field.strip()) > 0
        ] for line in lines[footer_index + 1:]]
        # 'Version : 1.0' -> {"Version": "1.0"}
        lines = dict([[element.strip() for element in line.split(' : ', 1)]
                      for line in lines[0:footer_index]])
        return json.dumps({'raid': lines, 'volumes': volumes})
Esempio n. 4
0
def list_block_devices(session, args):
    result = run_command(["lsblk", "-P", "-b", "-o", "NAME,KNAME,PKNAME,SIZE,TYPE,RO,MOUNTPOINT"])
    output_string = result["stdout"].decode("utf-8").strip()

    results = list()
    blockdevices = dict()
    for output in output_string.split("\n"):
        output_dict = dict(re.findall(r'(\S+)=(".*?"|\S+)', output))
        output_dict = {key.lower(): output_dict[key].strip('"') for key in output_dict}
        kname = output_dict["kname"]
        pkname = output_dict["pkname"]
        if pkname != "":
            parent = blockdevices[pkname]
            if "children" not in parent:
                parent["children"] = list()
            parent["children"].append(output_dict)
        else:
            results.append(output_dict)

        blockdevices[kname] = output_dict

    return json.dumps({'blockdevices': results})
Esempio n. 5
0
def list_zfs_pools(session, args):
    try:
        command = ['zfs', 'get', '-H', 'all']
        _LOGGER.info('executing command {}...'.format(command))
        result = run_command(command)
        lines = result['stdout'].splitlines()
        res = {}

        def set_entry(pool, key, value):
            if pool in res:
                res.get(pool)[key] = value
            else:
                res[pool] = {key: value}

        for line in lines:
            split_line = line.split('\t')
            set_entry(split_line[0], split_line[1], split_line[2])
        return json.dumps(res)
    except OSError as e:
        if e.errno == errno.ENOENT:
            return json.dumps({})
        else:
            raise
Esempio n. 6
0
def update(session, args):
    repos = build_repo_list(args.get('repos'))
    task = None
    res = None
    error = None
    try:
        host = session.xenapi.session.get_this_host(session.handle)
        host_name = session.xenapi.host.get_name_label(host)
        host_uuid = session.xenapi.host.get_uuid(host)
        task = session.xenapi.task.create('Update host %s (%s)' % (host_name, host_uuid), '')
        packages = args.get('packages')
        command = ['yum', 'update', '--disablerepo="*"', '--enablerepo=' + ','.join(repos), '-y']
        if packages:
            command.append(packages)
        res = run_command(command)
        session.xenapi.task.set_status(task, 'success')
    except Exception as e:
        error = e
    finally:
        if task:
            session.xenapi.task.destroy(task)
        if error:
            raise error
        return json.dumps(res)
def get_hyperthreading(session, args):
    result = run_command(['xl', 'info', 'threads_per_core'])
    _LOGGER.info(result)
    lines = result['stdout'].splitlines()
    return json.dumps(int(lines[0]) > 1)