def test_session_update(self): node = Node() node.mac = u"ASDFGHJKLMNOPR" node.timestamp = datetime.now() self.db.add(node) self.db.commit() node2 = self.db2.query(Node).filter(Node.id == node.id).first() node2.mac = u"12345678" self.db2.add(node2) self.db2.commit() self.db.query(Node).filter(Node.id == node.id).first() self.assertEqual(node.mac, u"12345678")
def test_session_update(self): node = Node() node.mac = "aa:bb:cc:dd:ff:11" node.timestamp = datetime.now() self.db.add(node) self.db.commit() node2 = self.db2.query(Node).filter(Node.id == node.id).first() node2.mac = "aa:bb:cc:dd:ff:11" self.db2.add(node2) self.db2.commit() self.db.query(Node).filter(Node.id == node.id).first() self.assertEqual(node.mac, "aa:bb:cc:dd:ff:11")
def test_session_update(self): node = Node() node.mac = u"ASDFGHJKLMNOPR" node.timestamp = datetime.now() self.db.add(node) self.db.commit() node2 = self.db2.query(Node).filter( Node.id == node.id ).first() node2.mac = u"12345678" self.db2.add(node2) self.db2.commit() self.db.query(Node).filter( Node.id == node.id ).first() self.assertEqual(node.mac, u"12345678")
def test_session_update(self): node = Node() node.mac = "aa:bb:cc:dd:ff:11" node.timestamp = datetime.now() self.db.add(node) self.db.commit() node2 = self.db2.query(Node).filter( Node.id == node.id ).first() node2.mac = "aa:bb:cc:dd:ff:11" self.db2.add(node2) self.db2.commit() self.db.query(Node).filter( Node.id == node.id ).first() self.assertEqual(node.mac, "aa:bb:cc:dd:ff:11")
def create_node(self, api=False, exclude=None, expect_http=201, expect_message=None, **kwargs): #TODO(alekseyk) Simplify 'interfaces' and 'mac' manipulation logic metadata = kwargs.get('meta') default_metadata = self.default_metadata() if metadata: default_metadata.update(metadata) meta_ifaces = 'interfaces' in metadata mac = kwargs.get('mac', self._generate_random_mac()) if default_metadata['interfaces']: default_metadata['interfaces'][0]['mac'] = mac if not metadata or not meta_ifaces: for iface in default_metadata['interfaces'][1:]: if 'mac' in iface: iface['mac'] = self._generate_random_mac() node_data = { 'mac': mac, 'status': 'discover', 'meta': default_metadata } if kwargs: meta = kwargs.pop('meta', None) node_data.update(kwargs) if meta: kwargs['meta'] = meta if exclude and isinstance(exclude, list): for ex in exclude: try: del node_data[ex] except KeyError as err: logger.warning(err) if api: resp = self.app.post(reverse('NodeCollectionHandler'), json.dumps(node_data), headers=self.default_headers, expect_errors=True) self.tester.assertEquals(resp.status, expect_http) if expect_message: self.tester.assertEquals(resp.body, expect_message) if str(expect_http)[0] != "2": return None self.tester.assertEquals(resp.status, expect_http) node = json.loads(resp.body) node_db = self.db.query(Node).get(node['id']) if 'interfaces' not in node_data['meta'] \ or not node_data['meta']['interfaces']: self._set_interfaces_if_not_set_in_meta( node_db.id, kwargs.get('meta', None)) self.nodes.append(node_db) else: node = Node() node.timestamp = datetime.now() if 'cluster_id' in node_data: cluster_id = node_data.pop('cluster_id') for cluster in self.clusters: if cluster.id == cluster_id: node.cluster = cluster break else: node.cluster_id = cluster_id for key, value in node_data.iteritems(): setattr(node, key, value) node.attributes = self.create_attributes() node.attributes.volumes = node.volume_manager.gen_volumes_info() self.db.add(node) self.db.commit() if node.meta and node.meta.get('interfaces'): self._create_interfaces_from_meta(node) self.nodes.append(node) return node
def create_node( self, api=False, exclude=None, expect_http=201, expect_message=None, **kwargs): metadata = kwargs.get('meta') default_metadata = self.default_metadata() if metadata: default_metadata.update(metadata) mac = self._generate_random_mac() if default_metadata['interfaces']: default_metadata['interfaces'][0]['mac'] = kwargs.get('mac', mac) node_data = { 'mac': mac, 'status': 'discover', 'meta': default_metadata } if kwargs: meta = kwargs.pop('meta', None) node_data.update(kwargs) if meta: kwargs['meta'] = meta if exclude and isinstance(exclude, list): for ex in exclude: try: del node_data[ex] except KeyError as err: logger.warning(err) if api: resp = self.app.post( reverse('NodeCollectionHandler'), json.dumps(node_data), headers=self.default_headers, expect_errors=True ) self.tester.assertEquals(resp.status, expect_http) if expect_message: self.tester.assertEquals(resp.body, expect_message) if str(expect_http)[0] != "2": return None self.tester.assertEquals(resp.status, expect_http) node = json.loads(resp.body) node_db = self.db.query(Node).get(node['id']) self._set_interfaces_if_not_set_in_meta( node_db.id, kwargs.get('meta', None)) self.nodes.append(node_db) else: node = Node() node.timestamp = datetime.now() if 'cluster_id' in node_data: cluster_id = node_data.pop('cluster_id') for cluster in self.clusters: if cluster.id == cluster_id: node.cluster = cluster break else: node.cluster_id = cluster_id for key, value in node_data.iteritems(): setattr(node, key, value) node.attributes = self.create_attributes() node.attributes.volumes = node.volume_manager.gen_volumes_info() self.db.add(node) self.db.commit() if node.meta and node.meta.get('interfaces'): self._create_interfaces_from_meta(node) self.nodes.append(node) return node