def test_update(self): cluster = Cluster.instance() node = Node(oid=self.node_oid, hostname='hostname') cluster.store(node) node.vm_procs = dict(a='dummy') self.assertEqual(cluster.get(self.node_oid).vm_procs['a'], 'dummy') cluster.store(Node(oid=self.node_oid, hostname='hostname')) self.assertEqual(cluster.get(self.node_oid).vm_procs['a'], 'dummy')
def test_crud(self): cluster = Cluster.instance() node = Node(hostname='testhost') cluster.store(node) on_report(IFConfigReport.create(node.oid, raw_data=IFCONFIG_DATA)) network = Network(title='TestNetwork') virbr2 = node.get_host_nic('virbr2') network.add_host_nic(virbr2) self.assertTrue(virbr2.oid in network.host_nics) eth2 = node.get_host_nic('eth2') self.assertEqual(len(network.host_nics), 1) self.assertFalse(eth2.oid in network.host_nics) # only bridge should be added
def on_node_started(client): "Use it only in node context" import socket report = NodeOnlineReport.create(client.oid, hostname=socket.gethostname()) report.storages = Node.get_storage_points(client) client.publish_report(report)
def on_node_online(report): from swarm.stuff import Storage from swarm.tasks import VMInventoryTask cluster = Cluster.instance() if not cluster.is_stored(report.node_oid): node = Node(oid=report.node_oid, hostname=report.hostname, state='online') cluster.store(node) if CLIENT: task = VMInventoryTask(node_oid=node.oid) cluster.store(task) CLIENT.send_task(task) else: log.warn("No client available in on_node_online") else: node = cluster.get(report.node_oid) node.state = 'online' Storage.update_points(node, report.storages)