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')
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')
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
def test_parse_simple(self): self.assertEqual( eemParser.parse("id : 0x8cdf9d9122b6"), {"id": "0x8cdf9d9122b6"})
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'"]})
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"})