def create(cls, data): topic = data.get("topic") node_id = data.get("node_id") task_uuid = data.pop("task_uuid", None) message = data.get("message") if topic == 'discover' and node_id is None: raise errors.CannotFindNodeIDForDiscovering( "No node id in discover notification" ) if "datetime" not in data: data["datetime"] = datetime.now() task = None exist = None if task_uuid: task = Task.get_by_uuid(task_uuid) if task and node_id: exist = NotificationCollection.filter_by( query=None, node_id=node_id, message=message, task_id=task.id ).first() if not exist: super(Notification, cls).create(data) logger.info( u"Notification: topic: {0} message: {1}".format( data.get("topic"), data.get("message") ) )
def create(cls, data): """Creates and returns a notification instance. :param data: a dict with notification data :returns: a notification instance in case of notification doesn't exist; otherwise - None """ topic = data.get("topic") node_id = data.get("node_id") task_uuid = data.pop("task_uuid", None) message = data.get("message") if topic == 'discover' and node_id is None: raise errors.CannotFindNodeIDForDiscovering( "No node id in discover notification") if "datetime" not in data: data["datetime"] = datetime.now() exist = None if task_uuid: task = Task.get_by_uuid(task_uuid) if task and node_id: exist = NotificationCollection.count( NotificationCollection.filter_by(None, node_id=node_id, message=message, task_id=task.id)) if not exist: notification = super(Notification, cls).create(data) logger.info(u"Notification: topic: {0} message: {1}".format( data.get("topic"), data.get("message"))) return notification return None
def create(cls, data): """Creates and returns a notification instance. :param data: a dict with notification data :returns: a notification instance in case of notification doesn't exist; otherwise - None """ topic = data.get("topic") node_id = data.get("node_id") task_uuid = data.pop("task_uuid", None) message = data.get("message") if topic == "discover" and node_id is None: raise errors.CannotFindNodeIDForDiscovering("No node id in discover notification") if "datetime" not in data: data["datetime"] = datetime.now() exist = None if task_uuid: task = Task.get_by_uuid(task_uuid) if task and node_id: exist = NotificationCollection.count( NotificationCollection.filter_by(None, node_id=node_id, message=message, task_id=task.id) ) if not exist: notification = super(Notification, cls).create(data) logger.info(u"Notification: topic: {0} message: {1}".format(data.get("topic"), data.get("message"))) return notification return None
def test_task_deploy_specified_tasks(self, rpc_cast, *_): compute = next( (x for x in self.env.nodes if 'compute' in x.roles), None ) self.assertIsNotNone(compute) compute.status = consts.NODE_STATUSES.provisioned compute.pending_addition = False self.db.flush() resp = self.app.put( reverse( 'DeploySelectedNodesWithTasks', kwargs={'cluster_id': self.cluster.id} ) + '?nodes={0}'.format(compute.uid), params='["deploy_legacy"]', headers=self.default_headers ) self.assertNotEqual( consts.TASK_STATUSES.error, Task.get_by_uuid( uuid=resp.json_body['uuid'], fail_if_not_found=True ).status ) links = rpc_cast.call_args[0][1]['args']['tasks_graph'] self.assertItemsEqual( ["deploy_legacy"], (task["id"] for task in links[compute.uid] if task['type'] != consts.ORCHESTRATOR_TASK_TYPES.skipped) )