)]}'
{"watcher/decision_engine/model/notification/nova.py":[{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"ce5fbd119f7c653141f3272821637c50b59188a4","unresolved":false,"context_lines":[{"line_number":147,"context_line":"            LOG.debug(\"Compute node UUID not provided: skipping\")"},{"line_number":148,"context_line":"            return"},{"line_number":149,"context_line":"        try:"},{"line_number":150,"context_line":"            return self.cluster_data_model.get_node_by_uuid(uuid)"},{"line_number":151,"context_line":"        except exception.ComputeNodeNotFound:"},{"line_number":152,"context_line":"            # The node didn\u0027t exist yet so we create a new node object"},{"line_number":153,"context_line":"            node \u003d self.create_compute_node(uuid)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_b5cf6227","line":150,"range":{"start_line":150,"start_character":24,"end_line":150,"end_character":42},"updated":"2019-05-16 02:36:59.000000000","message":"Here also throw an AttributeError exception when receiving an instance.create.end notification before CDM is built.","commit_id":"06eac5ac8b706b7e343ceaced6f3e4fe2f81c1b0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2fc0a55dc157469c4f1aa0ae8215c68efd33b814","unresolved":false,"context_lines":[{"line_number":147,"context_line":"            LOG.debug(\"Compute node UUID not provided: skipping\")"},{"line_number":148,"context_line":"            return"},{"line_number":149,"context_line":"        try:"},{"line_number":150,"context_line":"            return self.cluster_data_model.get_node_by_uuid(uuid)"},{"line_number":151,"context_line":"        except exception.ComputeNodeNotFound:"},{"line_number":152,"context_line":"            # The node didn\u0027t exist yet so we create a new node object"},{"line_number":153,"context_line":"            node \u003d self.create_compute_node(uuid)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_4b75f997","line":150,"range":{"start_line":150,"start_character":24,"end_line":150,"end_character":42},"in_reply_to":"dfbec78f_b5cf6227","updated":"2019-05-16 18:45:32.000000000","message":"Yeah true, in the case I saw in the gate it wouldn\u0027t get here because while the server is building the instance.host is going to be None so the check on L146 above will handle it, but you\u0027re right, once the server is built and has a host associated we\u0027d get here and fail. I\u0027ll handle this as well.","commit_id":"06eac5ac8b706b7e343ceaced6f3e4fe2f81c1b0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e333358c402697f1bb701dfbe92b0aef0ec78e50","unresolved":false,"context_lines":[{"line_number":202,"context_line":"class VersionedNotification(NovaNotification):"},{"line_number":203,"context_line":"    publisher_id_regex \u003d r\u0027^nova-.*\u0027"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def service_updated(self, payload):"},{"line_number":206,"context_line":"        node_data \u003d payload[\u0027nova_object.data\u0027]"},{"line_number":207,"context_line":"        node_uuid \u003d node_data[\u0027host\u0027]"},{"line_number":208,"context_line":"        try:"},{"line_number":209,"context_line":"            node \u003d self.get_or_create_node(node_uuid)"},{"line_number":210,"context_line":"            self.update_compute_node(node, payload)"},{"line_number":211,"context_line":"        except exception.ComputeNodeNotFound as exc:"},{"line_number":212,"context_line":"            LOG.exception(exc)"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def service_deleted(self, payload):"},{"line_number":215,"context_line":"        node_data \u003d payload[\u0027nova_object.data\u0027]"},{"line_number":216,"context_line":"        node_uuid \u003d node_data[\u0027host\u0027]"},{"line_number":217,"context_line":"        try:"},{"line_number":218,"context_line":"            node \u003d self.get_or_create_node(node_uuid)"},{"line_number":219,"context_line":"            self.delete_node(node)"},{"line_number":220,"context_line":"        except exception.ComputeNodeNotFound as exc:"},{"line_number":221,"context_line":"            LOG.exception(exc)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def instance_updated(self, payload):"},{"line_number":224,"context_line":"        instance_data \u003d payload[\u0027nova_object.data\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfb3d3c7_b14bc2ae","line":221,"range":{"start_line":205,"start_character":0,"end_line":221,"end_character":30},"updated":"2019-05-16 21:30:20.000000000","message":"These could also be a problem. As such, I\u0027m thinking it\u0027s probably easier and safer to just never call func in info if there is no CDM yet.","commit_id":"06eac5ac8b706b7e343ceaced6f3e4fe2f81c1b0"}]}
