Exemplo n.º 1
0
def judge_hostgroup():
    hosts_nu = len(foreman_helper.hosts())
    hosts_nu += 1
    (upper, sequence) = _upper_bound(hosts_nu)
    while len(sequence) != 0:
        node = sequence.pop(0)
        if upper[node] == "max":
            return foreman_helper.host_groups()[node]
        if hosts_nu - upper[node] > 0:
            hosts_nu -= upper[node]
        else:
            return foreman_helper.host_groups()[node]
Exemplo n.º 2
0
def build_host_data(mac, local, ip, build=True):
    hosts_num = foreman_helper.hosts() or {}
    if not ip:
        ipaddr = foreman_helper.unused_ip(mac)
    else:
        ipaddr = ip

    if len(hosts_num) == 0:
        hostname = "master"
    else:
        hostname = "us" + str(len(hosts_num) + 1)

    host_info = {
        'name': hostname,
        'ip': ipaddr,
        'mac': mac,
        'build': build
    }
    hg = foreman_helper.host_groups()
    role = "master"
    if local == "no":
        hostgroup_id = judgement.judge_hostgroup()
    else:
        hostgroup_id = hg['local']
    for ro in hg:
        if hg[ro] == hostgroup_id:
            role = ro

    drivers = _load_drivers()
    host_info['hostgroup_id'] = hostgroup_id
    for driver in drivers:
        if role in driver.role:
            driver.action(len(hosts_num) + 1, host_info['name'], ip=ipaddr, role=hostgroup_id)
    LOG.info("Server To Post: %s" % host_info)
    return jsonutils.loads(foreman_helper.create_host(host_info))
Exemplo n.º 3
0
 def test_host_groups(self):
     with contextlib.nested(
         mock.patch("mimic.engine.foreman_helper.get_remote_data",
                    mock.MagicMock(
             return_value=[
             {
             "hostgroup": {
                 "id": "13",
                 "name": "master"
             }
             },
             {
             "hostgroup": {
                 "id": "4",
                 "name": "compute"
             }
             }
             ]
         ))
     ):
         data = foreman_helper.host_groups()
         print data