Exemple #1
0
def update_cards(cards, DB):
    DB_cards = []
    statement = (
        "SELECT id "
        "FROM hardware_cards"
    )
    statement2 = (
        "SELECT id "
        "FROM net_card"
    )
    for DB_card in DB.select_query(statement):
        while (isinstance(DB_card, Iterable) and not isinstance(DB_card, str)):
            DB_card = next(iter(DB_card))
        DB_cards.append(DB_card)
    for DB_card in DB.select_query(statement2):
        while (isinstance(DB_card, Iterable) and not isinstance(DB_card, str)):
            DB_card = next(iter(DB_card))
        DB_cards.append(DB_card)
    for card in cards:
        status = True
        card = eemParser.parse(card)
        if card["id"] not in DB_cards:
            if card["status"] == "eeio":
                status, message = update_hardware_card(card, DB)
            else:
                status, message = update_net_card(card, DB)

            if not status:
                return messenger.general_error(message)

    return messenger.message200('OK')
Exemple #2
0
def update_assigned_cards(cards, DB):
    assigned_cards = []
    for card in cards:
        parsed_card = eemParser.parse(card)
        if (
            parsed_card["status"] == "eeio" and
            parsed_card["group_id"] != __NON_USED_HARDWARE_GROUP_NUMBER
        ):
            assigned_cards.append(
                {
                    "id": parsed_card["id"],
                    "group_id": parsed_card["group_id"],
                }
            )

    # Get API assignments that have a hardware card assigned to a
    # Net card with the corresponding GID
    for card in assigned_cards:
        net_card = get_from_DB_simple(
            "id",
            "net_card",
            "gid",
            card["group_id"],
            DB)
        if is_ghost_assignment(card["id"], net_card, DB):
            # First, generate a new workload with unknown data
            id = get_next_id(DB)
            server = get_from_DB_simple(
                "assigned_to",
                "net_card",
                "gid",
                card["group_id"],
                DB)
            values = [id, "UNKNOWN", "UNKNOWN", "UNKNOWN", server]
            status, message = DB.insert_query(
                "workloads",
                workload_keys,
                values)
            if not status:
                return (status, message)

            # Second, generate a new ghost assignment
            values = [card["id"], net_card, id]
            status, message = DB.insert_query(
                "assignments",
                assignment_keys,
                values)

            if not status:
                return (status, values)
                return (status, message)
    return (True, 'OK')
Exemple #3
0
def get_card(id, DB: MySQL, EEM: EEM):
    ids = get_all_cards(DB, EEM)
    if id not in ids:
        return messenger.message404(
            "The requested card ID does not exist on the server")

    out = eemParser.parse(EEM.get_box_info(id))
    if out["status"] == "eeio":
        table = __table_hardware
        mapping = hardware_card_keys
        statement = ("SELECT * FROM %s "
                     'WHERE hardware_id = "%s"') % (__table_hardware_capacity,
                                                    id)
        capacities = DB.select_query(statement)
    else:
        table = __table_net
        mapping = net_card_keys
        capacities = None
    statement = ("SELECT * FROM %s " 'WHERE id = "%s"') % (table, id)
    card = DB.select_query(statement)
    if card:
        if (isinstance(card, Iterable) and not isinstance(card, str)):
            card = next(iter(card))
        for param in range(0, len(mapping)):
            out[mapping[param]] = card[param]
    else:
        for param in range(0, len(mapping)):
            if mapping[param] != "id":
                out[mapping[param]] = "UNKNOWN"
    if capacities:
        insert_capactities = []
        for capacity in capacities:
            insert_capacity = {}
            for param in range(0, len(hardware_capacity_keys)):
                if hardware_capacity_keys[param] != "hardware_id":
                    insert_capacity[hardware_capacity_keys[param]] \
                        = capacity[param]
            insert_capactities.append(insert_capacity)
        out["capacity"] = insert_capactities
    else:
        out["capacity"] = "UNKNOWN"

    return out
Exemple #4
0
 def test_parse_simple(self):
     self.assertEqual(
         eemParser.parse("id                    : 0x8cdf9d9122b6"),
         {"id": "0x8cdf9d9122b6"})
Exemple #5
0
 def test_parse_list_complex(self):
     self.assertEqual(
         eemParser.parse(
             "notification_status0  : [u'up', u'down', u'down']"),
         {"notification_status0": ["u'up'", "u'down'", "u'down'"]})
Exemple #6
0
 def test_parse_spaces(self):
     self.assertEqual(
         eemParser.parse(
             "model                 : EE I/O Expansion Unit (40G)-4S"),
         {"model": "EE I/O Expansion Unit (40G)-4S"})