)]}'
{"nova/compute/utils.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"44f11eceb1baa7fd421a3996b45e1651269ec2be","unresolved":false,"context_lines":[{"line_number":301,"context_line":"    :param event_suffix: Event type like \"create.start\" or \"create.end\""},{"line_number":302,"context_line":"    :param sg_payload: payload for server group update"},{"line_number":303,"context_line":"    \"\"\""},{"line_number":304,"context_line":"    sg_identifier \u003d sg_payload.get(\u0027server_group_id\u0027, None)"},{"line_number":305,"context_line":"    if not sg_identifier:"},{"line_number":306,"context_line":"        sg_identifier \u003d sg_payload.get(\u0027name\u0027, None)"},{"line_number":307,"context_line":"        if not sg_identifier:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_0ac6b24a","line":304,"updated":"2014-07-29 16:15:01.000000000","message":"by default get should return None","commit_id":"06b83e99e98ad2f9b9a14d5fc7fe381a989fdd8e"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"bf1343da181da49a49e879265faff49ef20d1dcb","unresolved":false,"context_lines":[{"line_number":301,"context_line":"    :param event_suffix: Event type like \"create.start\" or \"create.end\""},{"line_number":302,"context_line":"    :param sg_payload: payload for server group update"},{"line_number":303,"context_line":"    \"\"\""},{"line_number":304,"context_line":"    sg_identifier \u003d sg_payload.get(\u0027server_group_id\u0027, None)"},{"line_number":305,"context_line":"    if not sg_identifier:"},{"line_number":306,"context_line":"        sg_identifier \u003d sg_payload.get(\u0027name\u0027, None)"},{"line_number":307,"context_line":"        if not sg_identifier:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_891c7b16","line":304,"in_reply_to":"baada198_0ac6b24a","updated":"2014-07-30 02:13:14.000000000","message":"Done","commit_id":"06b83e99e98ad2f9b9a14d5fc7fe381a989fdd8e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"44f11eceb1baa7fd421a3996b45e1651269ec2be","unresolved":false,"context_lines":[{"line_number":303,"context_line":"    \"\"\""},{"line_number":304,"context_line":"    sg_identifier \u003d sg_payload.get(\u0027server_group_id\u0027, None)"},{"line_number":305,"context_line":"    if not sg_identifier:"},{"line_number":306,"context_line":"        sg_identifier \u003d sg_payload.get(\u0027name\u0027, None)"},{"line_number":307,"context_line":"        if not sg_identifier:"},{"line_number":308,"context_line":"            LOG.debug(\"No server group id or name specified for this \""},{"line_number":309,"context_line":"                      \"notification and it will be ignored\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_2ac3763a","line":306,"updated":"2014-07-29 16:15:01.000000000","message":"ditto","commit_id":"06b83e99e98ad2f9b9a14d5fc7fe381a989fdd8e"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"bf1343da181da49a49e879265faff49ef20d1dcb","unresolved":false,"context_lines":[{"line_number":303,"context_line":"    \"\"\""},{"line_number":304,"context_line":"    sg_identifier \u003d sg_payload.get(\u0027server_group_id\u0027, None)"},{"line_number":305,"context_line":"    if not sg_identifier:"},{"line_number":306,"context_line":"        sg_identifier \u003d sg_payload.get(\u0027name\u0027, None)"},{"line_number":307,"context_line":"        if not sg_identifier:"},{"line_number":308,"context_line":"            LOG.debug(\"No server group id or name specified for this \""},{"line_number":309,"context_line":"                      \"notification and it will be ignored\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_a9193f25","line":306,"in_reply_to":"baada198_2ac3763a","updated":"2014-07-30 02:13:14.000000000","message":"Done","commit_id":"06b83e99e98ad2f9b9a14d5fc7fe381a989fdd8e"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"758574f103174ce0aaedff08fee633f7096da2ab","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    if not sg_identifier:"},{"line_number":306,"context_line":"        sg_identifier \u003d sg_payload.get(\u0027name\u0027, None)"},{"line_number":307,"context_line":"        if not sg_identifier:"},{"line_number":308,"context_line":"            LOG.debug(\"No server group id or name specified for this \""},{"line_number":309,"context_line":"                      \"notification and it will be ignored\")"},{"line_number":310,"context_line":"            return"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_059f8352","line":308,"updated":"2014-07-29 16:35:38.000000000","message":"this log message wouldn\u0027t really help the operator. Perhaps some context to help out?","commit_id":"06b83e99e98ad2f9b9a14d5fc7fe381a989fdd8e"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"bf1343da181da49a49e879265faff49ef20d1dcb","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    if not sg_identifier:"},{"line_number":306,"context_line":"        sg_identifier \u003d sg_payload.get(\u0027name\u0027, None)"},{"line_number":307,"context_line":"        if not sg_identifier:"},{"line_number":308,"context_line":"            LOG.debug(\"No server group id or name specified for this \""},{"line_number":309,"context_line":"                      \"notification and it will be ignored\")"},{"line_number":310,"context_line":"            return"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_49a8a38c","line":308,"in_reply_to":"baada198_059f8352","updated":"2014-07-30 02:13:14.000000000","message":"Update message following line 328 format.","commit_id":"06b83e99e98ad2f9b9a14d5fc7fe381a989fdd8e"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"758574f103174ce0aaedff08fee633f7096da2ab","unresolved":false,"context_lines":[{"line_number":312,"context_line":"    notifier \u003d rpc.get_notifier(service\u003d\u0027servergroup\u0027,"},{"line_number":313,"context_line":"                                host\u003dsg_identifier)"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    notifier.info(context, \u0027servergroup.%s\u0027 % event_suffix, sg_payload)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"def notify_about_aggregate_update(context, event_suffix, aggregate_payload):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c5faeb76","line":315,"updated":"2014-07-29 16:35:38.000000000","message":"The payload format of this notification should be added to https://wiki.openstack.org/wiki/SystemUsageData","commit_id":"06b83e99e98ad2f9b9a14d5fc7fe381a989fdd8e"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"bf1343da181da49a49e879265faff49ef20d1dcb","unresolved":false,"context_lines":[{"line_number":312,"context_line":"    notifier \u003d rpc.get_notifier(service\u003d\u0027servergroup\u0027,"},{"line_number":313,"context_line":"                                host\u003dsg_identifier)"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    notifier.info(context, \u0027servergroup.%s\u0027 % event_suffix, sg_payload)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"def notify_about_aggregate_update(context, event_suffix, aggregate_payload):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_29d52f1b","line":315,"in_reply_to":"baada198_c5faeb76","updated":"2014-07-30 02:13:14.000000000","message":"OK, i will first add DocImpact tag to this patch and update the wiki page once this patch was merged.","commit_id":"06b83e99e98ad2f9b9a14d5fc7fe381a989fdd8e"},{"author":{"_account_id":9282,"name":"hougangliu","email":"liuhoug@cn.ibm.com","username":"HougangLiu"},"change_message_id":"c8ff03d5782ec6fa4fa75583b8fcd085194625f4","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    if not sg_identifier:"},{"line_number":306,"context_line":"        sg_identifier \u003d sg_payload.get(\u0027name\u0027)"},{"line_number":307,"context_line":"        if not sg_identifier:"},{"line_number":308,"context_line":"            LOG.warn(_LW(\"No server group id or name specified for the\""},{"line_number":309,"context_line":"                         \"notification of servergroup.%s and it will \""},{"line_number":310,"context_line":"                         \"be ignored\"), event_suffix)"},{"line_number":311,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_4c96f13f","line":308,"updated":"2014-07-30 03:11:45.000000000","message":"add \" \" after the \"the\"","commit_id":"0bceaa78001cf06d8cc554e316eea6a84aba71fc"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"7a99910959c5c10fccb0e9925c623923bea7bd43","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    if not sg_identifier:"},{"line_number":306,"context_line":"        sg_identifier \u003d sg_payload.get(\u0027name\u0027)"},{"line_number":307,"context_line":"        if not sg_identifier:"},{"line_number":308,"context_line":"            LOG.warn(_LW(\"No server group id or name specified for the\""},{"line_number":309,"context_line":"                         \"notification of servergroup.%s and it will \""},{"line_number":310,"context_line":"                         \"be ignored\"), event_suffix)"},{"line_number":311,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_ba9b3b72","line":308,"in_reply_to":"baada198_4c96f13f","updated":"2014-07-30 05:28:43.000000000","message":"Done","commit_id":"0bceaa78001cf06d8cc554e316eea6a84aba71fc"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"4fd11a059f400f59d10e9d659e2a035999d606e3","unresolved":false,"context_lines":[{"line_number":323,"context_line":"    \"\"\""},{"line_number":324,"context_line":"    sg_identifier \u003d sg_payload.get(\u0027server_group_id\u0027)"},{"line_number":325,"context_line":"    if not sg_identifier:"},{"line_number":326,"context_line":"        sg_identifier \u003d sg_payload.get(\u0027name\u0027)"},{"line_number":327,"context_line":"        if not sg_identifier:"},{"line_number":328,"context_line":"            LOG.warn(_LW(\"No server group id or name specified for the \""},{"line_number":329,"context_line":"                         \"notification of servergroup.%s and it will \""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_6ec2f335","line":326,"updated":"2014-09-17 08:19:31.000000000","message":"I think this will easy the code:\n\nsg_identifier \u003d sg_payload.get(\u0027server_group_id\u0027) or sg_payload.get(\u0027name\u0027)\n\nif not sg_identifier:\n    ...","commit_id":"a2fd0327c872f7a92487f59b286f7b5914ee07c1"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"57f8b1a4831fe6f2fe985027a39417f719826f39","unresolved":false,"context_lines":[{"line_number":323,"context_line":"    \"\"\""},{"line_number":324,"context_line":"    sg_identifier \u003d sg_payload.get(\u0027server_group_id\u0027)"},{"line_number":325,"context_line":"    if not sg_identifier:"},{"line_number":326,"context_line":"        sg_identifier \u003d sg_payload.get(\u0027name\u0027)"},{"line_number":327,"context_line":"        if not sg_identifier:"},{"line_number":328,"context_line":"            LOG.warn(_LW(\"No server group id or name specified for the \""},{"line_number":329,"context_line":"                         \"notification of servergroup.%s and it will \""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_14489886","line":326,"in_reply_to":"fa98f980_6ec2f335","updated":"2014-09-18 02:55:27.000000000","message":"This part will be removed according to below comments","commit_id":"a2fd0327c872f7a92487f59b286f7b5914ee07c1"},{"author":{"_account_id":8531,"name":"Yu Zhang","email":"zhangyu11@huawei.com","username":"zhyu"},"change_message_id":"31893f95d06c515dc6da63ba7bb4d9a29e7be6f8","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    notifier \u003d rpc.get_notifier(service\u003d\u0027servergroup\u0027,"},{"line_number":334,"context_line":"                                host\u003dsg_identifier)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    notifier.info(context, \u0027servergroup.%s\u0027 % event_suffix, sg_payload)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_78b9f978","line":334,"updated":"2014-09-16 11:53:43.000000000","message":"In all other cases we call rpc.get_notifier(), the host param is either passed a value which marks the host (or host aggregate, for only one case) where this notification is sent out from, or just left as none, which means the CONF.host will be used. Therefore, if we use sg_identifier in this case, I am afraid it is a little misleading.","commit_id":"a2fd0327c872f7a92487f59b286f7b5914ee07c1"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"682dbb0de37c4700657cc66661234c7608e10426","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    notifier \u003d rpc.get_notifier(service\u003d\u0027servergroup\u0027,"},{"line_number":334,"context_line":"                                host\u003dsg_identifier)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    notifier.info(context, \u0027servergroup.%s\u0027 % event_suffix, sg_payload)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_c461f3a9","line":334,"in_reply_to":"fa98f980_1dab661f","updated":"2014-09-17 16:05:55.000000000","message":"I\u0027m with Yu on this one:  The server group id is already in the payload, and I think consistency here with other notification messages is important for the external systems.\n\nIf you think the schematics of publisher id should be changed, that sounds like a separate BP to me","commit_id":"a2fd0327c872f7a92487f59b286f7b5914ee07c1"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"0da1be6f1e97d9f3507f57c4e1e025e9ae38793f","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    notifier \u003d rpc.get_notifier(service\u003d\u0027servergroup\u0027,"},{"line_number":334,"context_line":"                                host\u003dsg_identifier)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    notifier.info(context, \u0027servergroup.%s\u0027 % event_suffix, sg_payload)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_1dab661f","line":334,"in_reply_to":"fa98f980_78b9f978","updated":"2014-09-17 03:20:22.000000000","message":"Please take a look at Line 354 in this file. \n\nI think that the the publish id should not be limitted to host but may be other identifiers such as aggregate id, server group id etc.\n\nIf needed, we can update get_notifier() to be more generic in another patch, comments?","commit_id":"a2fd0327c872f7a92487f59b286f7b5914ee07c1"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"57f8b1a4831fe6f2fe985027a39417f719826f39","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            return"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    notifier \u003d rpc.get_notifier(service\u003d\u0027servergroup\u0027,"},{"line_number":334,"context_line":"                                host\u003dsg_identifier)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    notifier.info(context, \u0027servergroup.%s\u0027 % event_suffix, sg_payload)"},{"line_number":337,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_e6c5110b","line":334,"in_reply_to":"fa98f980_c461f3a9","updated":"2014-09-18 02:55:27.000000000","message":"OK, I will use default value of CONF.host as the payload do not include host name.\n\nFor host aggregation, I think that we also need to fix it, perhaps in another patch.","commit_id":"a2fd0327c872f7a92487f59b286f7b5914ee07c1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"14adcbf39a9b1c64148d06fb00258700a2e74419","unresolved":false,"context_lines":[{"line_number":321,"context_line":"def notify_about_server_group_update(context, event_suffix, sg_payload):"},{"line_number":322,"context_line":"    \"\"\"Send a notification about server group update."},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    :param event_suffix: Event type like \"create.start\" or \"create.end\""},{"line_number":325,"context_line":"    :param sg_payload: payload for server group update"},{"line_number":326,"context_line":"    \"\"\""},{"line_number":327,"context_line":"    notifier \u003d rpc.get_notifier(service\u003d\u0027servergroup\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_a71b7c71","line":324,"updated":"2014-10-16 19:12:04.000000000","message":"The examples here could probably be updated now.","commit_id":"daf278c0c8b6cc917b84f514fec65758adf17028"}],"nova/objects/instance_group.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"44f11eceb1baa7fd421a3996b45e1651269ec2be","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            metadata \u003d updates.pop(\u0027metadetails\u0027)"},{"line_number":104,"context_line":"            updates.update({\u0027metadata\u0027: metadata})"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        payload \u003d copy.deepcopy(dict(updates))"},{"line_number":107,"context_line":"        payload[\u0027server_group_id\u0027] \u003d self.uuid"},{"line_number":108,"context_line":"        compute_utils.notify_about_server_group_update(context,"},{"line_number":109,"context_line":"                                                       \"update.start\","}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_8ac3a205","line":106,"updated":"2014-07-29 16:15:01.000000000","message":"i wonder if we should look at something generic for objects with decorators that could do the notifications.","commit_id":"06b83e99e98ad2f9b9a14d5fc7fe381a989fdd8e"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"bf1343da181da49a49e879265faff49ef20d1dcb","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            metadata \u003d updates.pop(\u0027metadetails\u0027)"},{"line_number":104,"context_line":"            updates.update({\u0027metadata\u0027: metadata})"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        payload \u003d copy.deepcopy(dict(updates))"},{"line_number":107,"context_line":"        payload[\u0027server_group_id\u0027] \u003d self.uuid"},{"line_number":108,"context_line":"        compute_utils.notify_about_server_group_update(context,"},{"line_number":109,"context_line":"                                                       \"update.start\","}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_09b30bed","line":106,"in_reply_to":"baada198_8ac3a205","updated":"2014-07-30 02:13:14.000000000","message":"Good point, I also see the discussion in mail list. But for now, I suggest that fix this one first then log a bp to handle \"generic notifications for object\", perhaps we can propose this as a design session for nova.","commit_id":"06b83e99e98ad2f9b9a14d5fc7fe381a989fdd8e"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"f4562b68f5669c6794bb4ffa2ed3e46bc74a2b0b","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                                                       payload)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    @base.remotable_classmethod"},{"line_number":165,"context_line":"    def add_members(cls, context, group_uuid, instance_uuids):"},{"line_number":166,"context_line":"        members \u003d db.instance_group_members_add(context, group_uuid,"},{"line_number":167,"context_line":"                instance_uuids)"},{"line_number":168,"context_line":"        return list(members)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_a3d9b023","line":165,"updated":"2014-09-12 21:28:22.000000000","message":"Why wouldn\u0027t you also want to know when a server was added to a group - kind of feels like an important event and maybe one you don\u0027t want to have to derive from the instance creation ?","commit_id":"781f24ae0e7402c19f942442a92900d3c8b5b7d6"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"d2ed3aa2df6be03bf208c5d152e43a8d8750f547","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                                                       payload)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    @base.remotable_classmethod"},{"line_number":165,"context_line":"    def add_members(cls, context, group_uuid, instance_uuids):"},{"line_number":166,"context_line":"        members \u003d db.instance_group_members_add(context, group_uuid,"},{"line_number":167,"context_line":"                instance_uuids)"},{"line_number":168,"context_line":"        return list(members)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa98f980_ebb46383","line":165,"in_reply_to":"fa98f980_a3d9b023","updated":"2014-09-14 03:07:27.000000000","message":"Thanks Phil, will add this.","commit_id":"781f24ae0e7402c19f942442a92900d3c8b5b7d6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3eda359247ad7541b471303f07cccf36a1ae42e2","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        payload[\u0027server_group_id\u0027] \u003d self.uuid"},{"line_number":112,"context_line":"        compute_utils.notify_about_server_group_update(context,"},{"line_number":113,"context_line":"                                                       \"update.start\","},{"line_number":114,"context_line":"                                                        payload)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        db.instance_group_update(context, self.uuid, updates)"},{"line_number":117,"context_line":"        db_inst \u003d db.instance_group_get(context, self.uuid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da9df570_56514661","line":114,"updated":"2014-09-22 16:15:23.000000000","message":"nit: alignment above is off.","commit_id":"83c64383a4f5e29217c8bc05547463f1d5224b9d"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"338273cab27b40a67329dd4856f6fbbba7835632","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        payload[\u0027server_group_id\u0027] \u003d self.uuid"},{"line_number":112,"context_line":"        compute_utils.notify_about_server_group_update(context,"},{"line_number":113,"context_line":"                                                       \"update.start\","},{"line_number":114,"context_line":"                                                        payload)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        db.instance_group_update(context, self.uuid, updates)"},{"line_number":117,"context_line":"        db_inst \u003d db.instance_group_get(context, self.uuid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"baa201ad_95cc148b","line":114,"in_reply_to":"da9df570_56514661","updated":"2014-10-15 09:43:07.000000000","message":"Done","commit_id":"83c64383a4f5e29217c8bc05547463f1d5224b9d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4b820ba4d4ae0ebc0d24ea7c16e590cd9c0d23c5","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        if not updates:"},{"line_number":108,"context_line":"            return"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        payload \u003d copy.deepcopy(dict(updates))"},{"line_number":111,"context_line":"        payload[\u0027server_group_id\u0027] \u003d self.uuid"},{"line_number":112,"context_line":"        compute_utils.notify_about_server_group_update(context,"},{"line_number":113,"context_line":"                                                       \"update.start\","}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_5c6abeed","line":110,"updated":"2014-10-16 02:19:40.000000000","message":"I\u0027m comparing this to the aggregate object since that\u0027s another object that does the notifications on create/delete within the object.  I see that we don\u0027t copy the updates in there, so why are we doing it here?\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/objects/aggregate.py","commit_id":"b4b4c3af77ae6f33255894ea872da3d9a4f56368"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"00b1e48dce7c1e15594ddc1426adeb4709145cf0","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        if not updates:"},{"line_number":108,"context_line":"            return"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        payload \u003d copy.deepcopy(dict(updates))"},{"line_number":111,"context_line":"        payload[\u0027server_group_id\u0027] \u003d self.uuid"},{"line_number":112,"context_line":"        compute_utils.notify_about_server_group_update(context,"},{"line_number":113,"context_line":"                                                       \"update.start\","}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_ad961692","line":110,"in_reply_to":"baa201ad_5c6abeed","updated":"2014-10-16 05:31:07.000000000","message":"Agree, i will remove copy here.","commit_id":"b4b4c3af77ae6f33255894ea872da3d9a4f56368"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4b820ba4d4ae0ebc0d24ea7c16e590cd9c0d23c5","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                                                       payload)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    @base.remotable"},{"line_number":156,"context_line":"    def destroy(self, context):"},{"line_number":157,"context_line":"        payload \u003d {\u0027server_group_id\u0027: self.uuid}"},{"line_number":158,"context_line":"        compute_utils.notify_about_server_group_update(context,"},{"line_number":159,"context_line":"                                                       \"delete.start\","}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_7754fbfd","line":156,"updated":"2014-10-16 02:19:40.000000000","message":"I guess we don\u0027t do notifications for deleting aggregates, just FYI:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/objects/aggregate.py#n128","commit_id":"b4b4c3af77ae6f33255894ea872da3d9a4f56368"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"00b1e48dce7c1e15594ddc1426adeb4709145cf0","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                                                       payload)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    @base.remotable"},{"line_number":156,"context_line":"    def destroy(self, context):"},{"line_number":157,"context_line":"        payload \u003d {\u0027server_group_id\u0027: self.uuid}"},{"line_number":158,"context_line":"        compute_utils.notify_about_server_group_update(context,"},{"line_number":159,"context_line":"                                                       \"delete.start\","}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_8da7920a","line":156,"in_reply_to":"baa201ad_7754fbfd","updated":"2014-10-16 05:31:07.000000000","message":"I think it is a small coding issue, the delete notification logic for aggreage was handled in nova/compute/api.py:delete_aggregate(), we should move it to aggregate object.","commit_id":"b4b4c3af77ae6f33255894ea872da3d9a4f56368"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4b820ba4d4ae0ebc0d24ea7c16e590cd9c0d23c5","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        return list(members)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    @base.remotable"},{"line_number":182,"context_line":"    def get_hosts(self, context, exclude\u003dNone):"},{"line_number":183,"context_line":"        \"\"\"Get a list of hosts for non-deleted instances in the group"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        This method allows you to get a list of the hosts where instances in"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_5c9c7e0e","line":182,"updated":"2014-10-16 02:19:40.000000000","message":"I guess we don\u0027t pass host to rpc.get_notifier in the utils module for sending the notification since the instance members of the group can be running on different hosts, so we wouldn\u0027t know which to pick anyway.","commit_id":"b4b4c3af77ae6f33255894ea872da3d9a4f56368"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"00b1e48dce7c1e15594ddc1426adeb4709145cf0","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        return list(members)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    @base.remotable"},{"line_number":182,"context_line":"    def get_hosts(self, context, exclude\u003dNone):"},{"line_number":183,"context_line":"        \"\"\"Get a list of hosts for non-deleted instances in the group"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        This method allows you to get a list of the hosts where instances in"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_8d7eb268","line":182,"in_reply_to":"baa201ad_5c9c7e0e","updated":"2014-10-16 05:31:07.000000000","message":"Yes, but I was using CONF.host instead. You can get more from https://review.openstack.org/#/c/107954/6/nova/compute/utils.py","commit_id":"b4b4c3af77ae6f33255894ea872da3d9a4f56368"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"78b2177a048b12ab981bc2eda1b998fab9902073","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        return list(members)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    @base.remotable"},{"line_number":182,"context_line":"    def get_hosts(self, context, exclude\u003dNone):"},{"line_number":183,"context_line":"        \"\"\"Get a list of hosts for non-deleted instances in the group"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        This method allows you to get a list of the hosts where instances in"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_a45461fe","line":182,"in_reply_to":"baa201ad_8d7eb268","updated":"2014-10-16 15:22:27.000000000","message":"OK I didn\u0027t see the previous comments but I saw the utils code and looked to see that rpc.get_notifier will default to using CONF.host so I\u0027m fine with that.","commit_id":"b4b4c3af77ae6f33255894ea872da3d9a4f56368"}],"nova/tests/objects/test_objects.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4b820ba4d4ae0ebc0d24ea7c16e590cd9c0d23c5","unresolved":false,"context_lines":[{"line_number":303,"context_line":"    def setUp(self):"},{"line_number":304,"context_line":"        super(_BaseTestCase, self).setUp()"},{"line_number":305,"context_line":"        self.remote_object_calls \u003d list()"},{"line_number":306,"context_line":"        self.user_id \u003d \u0027fake-user\u0027"},{"line_number":307,"context_line":"        self.project_id \u003d \u0027fake-project\u0027"},{"line_number":308,"context_line":"        self.context \u003d context.RequestContext(self.user_id, self.project_id)"},{"line_number":309,"context_line":"        fake_notifier.stub_notifier(self.stubs)"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_17456f42","line":306,"updated":"2014-10-16 02:19:40.000000000","message":"Why is this change needed?  _TestInstanceGroupObjects already does this.","commit_id":"b4b4c3af77ae6f33255894ea872da3d9a4f56368"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"00b1e48dce7c1e15594ddc1426adeb4709145cf0","unresolved":false,"context_lines":[{"line_number":303,"context_line":"    def setUp(self):"},{"line_number":304,"context_line":"        super(_BaseTestCase, self).setUp()"},{"line_number":305,"context_line":"        self.remote_object_calls \u003d list()"},{"line_number":306,"context_line":"        self.user_id \u003d \u0027fake-user\u0027"},{"line_number":307,"context_line":"        self.project_id \u003d \u0027fake-project\u0027"},{"line_number":308,"context_line":"        self.context \u003d context.RequestContext(self.user_id, self.project_id)"},{"line_number":309,"context_line":"        fake_notifier.stub_notifier(self.stubs)"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_eded7ef1","line":306,"in_reply_to":"baa201ad_17456f42","updated":"2014-10-16 05:31:07.000000000","message":"Because TestRemoteInstanceGroupObject was derived from test_objects._RemoteTest and _TestInstanceGroupObjects, test_objects._RemoteTest do not have self.user_id, this will cause unit test failed.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nERROR: nova.tests.objects.test_instance_group.TestRemoteInstanceGroupObject.test_save_simple\n----------------------------------------------------------------------\n_StringException: pythonlogging:\u0027\u0027: {{{\n2014-10-16 01:18:30,832 WARNING [nova.openstack.common.policy] Can not find policy directories policy.d\n2014-10-16 01:18:30,835 AUDIT [nova.service] Starting conductor node (version 2014.2)\n}}}\n \nTraceback (most recent call last):\n  File \"/root/src/nova/1343200/nova/nova/tests/objects/test_instance_group.py\", line 72, in test_save_simple\n    values \u003d self._get_default_values()\n  File \"/root/src/nova/1343200/nova/nova/tests/objects/test_instance_group.py\", line 37, in _get_default_values\n    \u0027user_id\u0027: self.user_id,\nAttributeError: \u0027TestRemoteInstanceGroupObject\u0027 object has no attribute \u0027user_id\u0027","commit_id":"b4b4c3af77ae6f33255894ea872da3d9a4f56368"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cd90cb29406b4c79234af1df03cbdf2f5c5bd126","unresolved":false,"context_lines":[{"line_number":303,"context_line":"    def setUp(self):"},{"line_number":304,"context_line":"        super(_BaseTestCase, self).setUp()"},{"line_number":305,"context_line":"        self.remote_object_calls \u003d list()"},{"line_number":306,"context_line":"        self.user_id \u003d \u0027fake-user\u0027"},{"line_number":307,"context_line":"        self.project_id \u003d \u0027fake-project\u0027"},{"line_number":308,"context_line":"        self.context \u003d context.RequestContext(self.user_id, self.project_id)"},{"line_number":309,"context_line":"        fake_notifier.stub_notifier(self.stubs)"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_c17a30b9","line":306,"in_reply_to":"baa201ad_41280033","updated":"2014-10-16 18:23:42.000000000","message":"OK, I see now, thanks for the explanation.","commit_id":"b4b4c3af77ae6f33255894ea872da3d9a4f56368"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"8e89be6cc164b1ef3426996f4819bc49a739af7c","unresolved":false,"context_lines":[{"line_number":303,"context_line":"    def setUp(self):"},{"line_number":304,"context_line":"        super(_BaseTestCase, self).setUp()"},{"line_number":305,"context_line":"        self.remote_object_calls \u003d list()"},{"line_number":306,"context_line":"        self.user_id \u003d \u0027fake-user\u0027"},{"line_number":307,"context_line":"        self.project_id \u003d \u0027fake-project\u0027"},{"line_number":308,"context_line":"        self.context \u003d context.RequestContext(self.user_id, self.project_id)"},{"line_number":309,"context_line":"        fake_notifier.stub_notifier(self.stubs)"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_41280033","line":306,"in_reply_to":"baa201ad_e4c4a993","updated":"2014-10-16 18:09:50.000000000","message":"Because I was adding fake_notifier to test_instance_group.py and was changing _TestInstanceGroupObjects derived from test.TestCase to object. test.TestCase do not initialize fake_notifier. You \n\nYou may also notice all other classes of _TestXXXObject was also derived from object.","commit_id":"b4b4c3af77ae6f33255894ea872da3d9a4f56368"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"78b2177a048b12ab981bc2eda1b998fab9902073","unresolved":false,"context_lines":[{"line_number":303,"context_line":"    def setUp(self):"},{"line_number":304,"context_line":"        super(_BaseTestCase, self).setUp()"},{"line_number":305,"context_line":"        self.remote_object_calls \u003d list()"},{"line_number":306,"context_line":"        self.user_id \u003d \u0027fake-user\u0027"},{"line_number":307,"context_line":"        self.project_id \u003d \u0027fake-project\u0027"},{"line_number":308,"context_line":"        self.context \u003d context.RequestContext(self.user_id, self.project_id)"},{"line_number":309,"context_line":"        fake_notifier.stub_notifier(self.stubs)"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa201ad_e4c4a993","line":306,"in_reply_to":"baa201ad_eded7ef1","updated":"2014-10-16 15:22:27.000000000","message":"But you didn\u0027t change test_save_simple, so it\u0027s not clear to me why this would be an issue now in this change rather than a problem before your patch.  What changed in this patch that makes this fail now?","commit_id":"b4b4c3af77ae6f33255894ea872da3d9a4f56368"}]}
