def create_pending_actions_db(): """Create database objects including a pending NetworkingAction. The first version of this function was used to create the dump 'pending-networking-actions.sql'. """ # At a minimum we need a project, node, nic, switch, port, and network: api.project_create('runway') api.node_register( 'node-1', obm={ 'type': MOCK_OBM_TYPE, 'user': '******', 'host': 'host', 'password': '******', }, ) api.node_register_nic('node-1', 'pxe', 'de:ad:be:ef:20:16') api.switch_register( 'sw0', type=MOCK_SWITCH_TYPE, username='******', hostname='host', password='******', ) api.switch_register_port('sw0', 'gi1/0/4') api.port_connect_nic('sw0', 'gi1/0/4', 'node-1', 'pxe') api.project_connect_node('runway', 'node-1') api.network_create('runway_pxe', 'runway', 'runway', '') # Queue up a networking action. Importantly, we do *not* call # deferred.apply_networking, as that would flush the action and # remove it from the database. api.node_connect_network('node-1', 'pxe', 'runway_pxe')
def allocate_nodes(): layout_json_data = open('site-layout.json') layout = json.load(layout_json_data) layout_json_data.close() netmap = {} for node in layout['nodes']: api.node_register(node['name'], node['ipmi']['host'], node['ipmi']['user'], node['ipmi']['pass']) for nic in node['nics']: api.node_register_nic(node['name'], nic['name'], nic['mac']) api.port_register(nic['port']) api.port_connect_nic(nic['port'], node['name'], nic['name']) netmap[nic['port']] = None # Now ensure that all of these ports are turned off driver_name = cfg.get('general', 'driver') driver = importlib.import_module('haas.drivers.' + driver_name) driver.apply_networking(netmap)
def site_layout(): """Load the file site-layout.json, and populate the database accordingly. This is meant to be used as a pytest fixture, but isn't declared here as such; individual modules should declare it as a fixture. Full documentation for the site-layout.json file format is located in ``docs/testing.md``. """ layout_json_data = open('site-layout.json') layout = json.load(layout_json_data) layout_json_data.close() for switch in layout['switches']: api.switch_register(**switch) for node in layout['nodes']: api.node_register(node['name'],obm=node['obm']) for nic in node['nics']: api.node_register_nic(node['name'], nic['name'], nic['mac']) api.switch_register_port(nic['switch'], nic['port']) api.port_connect_nic(nic['switch'], nic['port'], node['name'], nic['name'])
def site_layout(): """Load the file site-layout.json, and populate the database accordingly. This is meant to be used as a pytest fixture, but isn't declared here as such; individual modules should declare it as a fixture. Full documentation for the site-layout.json file format is located in ``docs/testing.md``. """ layout_json_data = open('site-layout.json') layout = json.load(layout_json_data) layout_json_data.close() for switch in layout['switches']: api.switch_register(**switch) for node in layout['nodes']: api.node_register(node['name'], obm=node['obm']) for nic in node['nics']: api.node_register_nic(node['name'], nic['name'], nic['mac']) api.switch_register_port(nic['switch'], nic['port']) api.port_connect_nic(nic['switch'], nic['port'], node['name'], nic['name'])