)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c8233f1a7e108013a4f3240e49ca07a45b0fc435","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Current patch should not have such issue."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: Ia49821cc94b5dd53799a65d847e37893f8920534"},{"line_number":23,"context_line":"Closes-bug: #1373774"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da86d52c_7fca806f","line":23,"updated":"2015-02-09 15:22:27.000000000","message":"This should probably be bug 1175464 now since bug 1373774 has been duplicated against bug 1175464 which I think is really for the same issue and has some existing patches (abandoned now).","commit_id":"59052c160dcc8f5202a3aec3cfc02ada6ec3de62"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"23775f8e7ed1c23793b163222ded859f60c0a32d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Current patch should not have such issue."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: Ia49821cc94b5dd53799a65d847e37893f8920534"},{"line_number":23,"context_line":"Closes-bug: #1373774"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da86d52c_79218efb","line":23,"in_reply_to":"da86d52c_7fca806f","updated":"2015-02-10 13:57:26.000000000","message":"bug 1175464 is not exactly the same as bug 1175464","commit_id":"59052c160dcc8f5202a3aec3cfc02ada6ec3de62"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b4e5b3538cc8503038a9b2473ef70ec110235a5d","unresolved":false,"context_lines":[{"line_number":11,"context_line":"clearly saying about ignoring and that Neutron should be"},{"line_number":12,"context_line":"used for configuring security groups on port."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-bug: #1373774"},{"line_number":15,"context_line":"Change-Id: Ia49821cc94b5dd53799a65d847e37893f8920534"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7aaa499b_55d08053","line":14,"updated":"2015-04-11 22:57:34.000000000","message":"Does this patch really close this bug? I went to the bug and it\u0027s already marked as FIx Released, though that fix has since been reverted.","commit_id":"f7185f1eef3540284242d9538a21149459ace1ee"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"00eb0c1cc6fd9563a1fadc175e06760ec393c0a6","unresolved":false,"context_lines":[{"line_number":11,"context_line":"clearly saying about ignoring and that Neutron should be"},{"line_number":12,"context_line":"used for configuring security groups on port."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-bug: #1373774"},{"line_number":15,"context_line":"Change-Id: Ia49821cc94b5dd53799a65d847e37893f8920534"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7aaa499b_76ffcdaa","line":14,"in_reply_to":"7aaa499b_06e88c7b","updated":"2015-04-14 08:31:21.000000000","message":"Actually the orig commit was reverted because of bug 1415835. Logging a warning instead of raising an exception was a result of a following discussion on this. I\u0027ll update commit message","commit_id":"f7185f1eef3540284242d9538a21149459ace1ee"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"daf6da7e3fbf85ff15ef0f3567a0df915ed68294","unresolved":false,"context_lines":[{"line_number":11,"context_line":"clearly saying about ignoring and that Neutron should be"},{"line_number":12,"context_line":"used for configuring security groups on port."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-bug: #1373774"},{"line_number":15,"context_line":"Change-Id: Ia49821cc94b5dd53799a65d847e37893f8920534"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7aaa499b_06e88c7b","line":14,"in_reply_to":"7aaa499b_55d08053","updated":"2015-04-12 13:17:09.000000000","message":"Yeah this should be Related-Bug.  There could be some more background in the commit message to explain the history up to this point, i.e. the original change was reverted because it created a backwards incompatible API change.  Granted the API isn\u0027t really correct (users should use neutron security groups for managing security groups), but that\u0027s why the change was reverted - it started enforcing a rule that wasn\u0027t advertised before and was breaking deployments written against the way the code responded before the change.\n\nSo here we aren\u0027t closing the bug so much as documenting the improper usage with a warning in the logs.","commit_id":"f7185f1eef3540284242d9538a21149459ace1ee"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0b0cba78544e43c23608b25ace3bba60b0b8fd10","unresolved":false,"context_lines":[{"line_number":520,"context_line":"                sg_names \u003d [sg[\u0027name\u0027] for sg in security_groups"},{"line_number":521,"context_line":"                            if sg.get(\u0027name\u0027)]"},{"line_number":522,"context_line":"        # if Neutron is used it will apply default security group where needed"},{"line_number":523,"context_line":"        if not sg_names and not utils.is_neutron():"},{"line_number":524,"context_line":"            sg_names.append(\u0027default\u0027)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        sg_names \u003d list(set(sg_names))"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_3cd656c6","line":523,"updated":"2015-02-09 15:08:18.000000000","message":"I was going to say we need to also make this change in the v3 code but apparently this isn\u0027t there?\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/api/openstack/compute/plugins/v3/servers.py\n\nI will ask cyeoh about this.","commit_id":"a6b247912d2d8f34544f711e25f027dd5b5f60ef"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a8ca2923bc5ac45da8111042884de9fd2064311d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    exception.ImageNUMATopologyMemoryOutOfRange: exc.HTTPBadRequest,"},{"line_number":84,"context_line":"    exception.PortInUse: exc.HTTPConflict,"},{"line_number":85,"context_line":"    exception.InstanceExists: exc.HTTPConflict,"},{"line_number":86,"context_line":"    exception.NoUniqueMatch: exc.HTTPConflict,"},{"line_number":87,"context_line":"    exception.Invalid: exc.HTTPBadRequest,"},{"line_number":88,"context_line":"}"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_50ae8be8","line":86,"updated":"2015-02-09 16:08:44.000000000","message":"Verifying that the new 400 exception (which is a subclass of Invalid) would be handled with this.","commit_id":"59052c160dcc8f5202a3aec3cfc02ada6ec3de62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a8ca2923bc5ac45da8111042884de9fd2064311d","unresolved":false,"context_lines":[{"line_number":454,"context_line":"        err_cls \u003d error.__class__"},{"line_number":455,"context_line":"        cls_to_raise \u003d CREATE_EXCEPTIONS.get(err_cls)"},{"line_number":456,"context_line":"        if cls_to_raise is None:"},{"line_number":457,"context_line":"            # The error is a subclass of one of the dict keys"},{"line_number":458,"context_line":"            to_raise \u003d [val for key, val in CREATE_EXCEPTIONS.items()"},{"line_number":459,"context_line":"                        if isinstance(error, key)]"},{"line_number":460,"context_line":"            if len(to_raise) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_f0869f64","line":457,"updated":"2015-02-09 16:08:44.000000000","message":"Handled here.","commit_id":"59052c160dcc8f5202a3aec3cfc02ada6ec3de62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"93b57ca07e578b966951f71d12b3c8a1df6706c5","unresolved":false,"context_lines":[{"line_number":519,"context_line":"            if security_groups is not None:"},{"line_number":520,"context_line":"                sg_names \u003d [sg[\u0027name\u0027] for sg in security_groups"},{"line_number":521,"context_line":"                            if sg.get(\u0027name\u0027)]"},{"line_number":522,"context_line":"        # if Neutron is used it will apply default security group where needed"},{"line_number":523,"context_line":"        if not sg_names and not utils.is_neutron():"},{"line_number":524,"context_line":"            sg_names.append(\u0027default\u0027)"},{"line_number":525,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_7c21aeb3","line":522,"updated":"2015-02-09 15:12:47.000000000","message":"Wondering about v3 API change here but this code isn\u0027t in the v3 API, not sure if that\u0027s a gap now or not.","commit_id":"59052c160dcc8f5202a3aec3cfc02ada6ec3de62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a8ca2923bc5ac45da8111042884de9fd2064311d","unresolved":false,"context_lines":[{"line_number":520,"context_line":"                sg_names \u003d [sg[\u0027name\u0027] for sg in security_groups"},{"line_number":521,"context_line":"                            if sg.get(\u0027name\u0027)]"},{"line_number":522,"context_line":"        # if Neutron is used it will apply default security group where needed"},{"line_number":523,"context_line":"        if not sg_names and not utils.is_neutron():"},{"line_number":524,"context_line":"            sg_names.append(\u0027default\u0027)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        sg_names \u003d list(set(sg_names))"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_305d97ea","line":523,"updated":"2015-02-09 16:08:44.000000000","message":"Need a unit test for this case.","commit_id":"59052c160dcc8f5202a3aec3cfc02ada6ec3de62"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"23775f8e7ed1c23793b163222ded859f60c0a32d","unresolved":false,"context_lines":[{"line_number":520,"context_line":"                sg_names \u003d [sg[\u0027name\u0027] for sg in security_groups"},{"line_number":521,"context_line":"                            if sg.get(\u0027name\u0027)]"},{"line_number":522,"context_line":"        # if Neutron is used it will apply default security group where needed"},{"line_number":523,"context_line":"        if not sg_names and not utils.is_neutron():"},{"line_number":524,"context_line":"            sg_names.append(\u0027default\u0027)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        sg_names \u003d list(set(sg_names))"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_20a6f310","line":523,"in_reply_to":"da86d52c_305d97ea","updated":"2015-02-10 13:57:26.000000000","message":"will add","commit_id":"59052c160dcc8f5202a3aec3cfc02ada6ec3de62"}],"nova/compute/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a8ca2923bc5ac45da8111042884de9fd2064311d","unresolved":false,"context_lines":[{"line_number":1069,"context_line":"        if reservation_id is None:"},{"line_number":1070,"context_line":"            reservation_id \u003d utils.generate_uid(\u0027r\u0027)"},{"line_number":1071,"context_line":"        # if Neutron is used it will apply default security group where needed"},{"line_number":1072,"context_line":"        if not utils.is_neutron():"},{"line_number":1073,"context_line":"            security_groups \u003d security_groups or [\u0027default\u0027]"},{"line_number":1074,"context_line":"        min_count \u003d min_count or 1"},{"line_number":1075,"context_line":"        max_count \u003d max_count or min_count"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_50c3eb89","line":1072,"updated":"2015-02-09 16:08:44.000000000","message":"Need a unit test for this case.","commit_id":"59052c160dcc8f5202a3aec3cfc02ada6ec3de62"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"23775f8e7ed1c23793b163222ded859f60c0a32d","unresolved":false,"context_lines":[{"line_number":1069,"context_line":"        if reservation_id is None:"},{"line_number":1070,"context_line":"            reservation_id \u003d utils.generate_uid(\u0027r\u0027)"},{"line_number":1071,"context_line":"        # if Neutron is used it will apply default security group where needed"},{"line_number":1072,"context_line":"        if not utils.is_neutron():"},{"line_number":1073,"context_line":"            security_groups \u003d security_groups or [\u0027default\u0027]"},{"line_number":1074,"context_line":"        min_count \u003d min_count or 1"},{"line_number":1075,"context_line":"        max_count \u003d max_count or min_count"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_80aa3fd0","line":1072,"in_reply_to":"da86d52c_50c3eb89","updated":"2015-02-10 13:57:26.000000000","message":"will add","commit_id":"59052c160dcc8f5202a3aec3cfc02ada6ec3de62"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"620e07c020429cad676b00c3fcd28c49f1888a16","unresolved":false,"context_lines":[{"line_number":465,"context_line":"        ports_in_requested_order \u003d []"},{"line_number":466,"context_line":"        nets_in_requested_order \u003d []"},{"line_number":467,"context_line":"        for request in ordered_networks:"},{"line_number":468,"context_line":"            if security_groups and request.port_id:"},{"line_number":469,"context_line":"                raise exception.SecurityGroupNotAllowedTogetherWithPort()"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"            # Network lookup for available network_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_9fb8142c","line":468,"updated":"2015-02-09 15:16:20.000000000","message":"Does the port_security_enabled extension need to be checked here?  See arosen\u0027s more complicated change here:\n\nhttps://review.openstack.org/#/c/59578/","commit_id":"59052c160dcc8f5202a3aec3cfc02ada6ec3de62"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"23775f8e7ed1c23793b163222ded859f60c0a32d","unresolved":false,"context_lines":[{"line_number":465,"context_line":"        ports_in_requested_order \u003d []"},{"line_number":466,"context_line":"        nets_in_requested_order \u003d []"},{"line_number":467,"context_line":"        for request in ordered_networks:"},{"line_number":468,"context_line":"            if security_groups and request.port_id:"},{"line_number":469,"context_line":"                raise exception.SecurityGroupNotAllowedTogetherWithPort()"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"            # Network lookup for available network_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_6072ab7d","line":468,"in_reply_to":"da86d52c_9fb8142c","updated":"2015-02-10 13:57:26.000000000","message":"So I think Aaron\u0027s change is for another case: when security groups are specified while neutron network has port_security_enabled \u003d\u003d False and cannot apply requested security groups for newly created port. Here we\u0027re dealing with the case when port_id was provided on boot","commit_id":"59052c160dcc8f5202a3aec3cfc02ada6ec3de62"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"4f9b33caabbfe92ca657c731a88f4691679624ec","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        nets_in_requested_order \u003d []"},{"line_number":467,"context_line":"        for request in ordered_networks:"},{"line_number":468,"context_line":"            if security_groups and request.port_id:"},{"line_number":469,"context_line":"                raise exception.SecurityGroupNotAllowedTogetherWithPort()"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"            # Network lookup for available network_id"},{"line_number":472,"context_line":"            network \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_77ca85a2","line":469,"updated":"2015-02-10 06:34:21.000000000","message":"@Oleg\n\ndoes this break the case\n nova boot ...--securigy-groups sg --nic net-id\u003dxxx --nic port-id\u003dyyy\n?\n\nI.e. i boot an instance with two ports, one is new, another is existing.","commit_id":"59052c160dcc8f5202a3aec3cfc02ada6ec3de62"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4f09e2d3aba4b3b9ca5ca3916be749f426cfd1f","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        nets_in_requested_order \u003d []"},{"line_number":467,"context_line":"        for request in ordered_networks:"},{"line_number":468,"context_line":"            if security_groups and request.port_id:"},{"line_number":469,"context_line":"                raise exception.SecurityGroupNotAllowedTogetherWithPort()"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"            # Network lookup for available network_id"},{"line_number":472,"context_line":"            network \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_55cd9d85","line":469,"updated":"2015-02-09 15:54:48.000000000","message":"I\u0027m a bit concerned about API compatibility breaks here, i.e. today if I specify a security group and port on boot with neutron backend there is no failure. If we change this, the boot request will start breaking.\n\nRegardless of \u0027correctness\u0027 I\u0027m not sure if we should just break the existing way this works (we\u0027ve been stuck with warts in the compute v2 API also for the same reason and couldn\u0027t fix those until v2.1).\n\nI\u0027m wondering if this is a case where we should log a warning or error and move on, and then fix this in the next revision of the neutron API in nova, which should be a priority for the L release.","commit_id":"59052c160dcc8f5202a3aec3cfc02ada6ec3de62"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"e6507ef77034bcfa97ad9dcd724434546268a3d3","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        nets_in_requested_order \u003d []"},{"line_number":467,"context_line":"        for request in ordered_networks:"},{"line_number":468,"context_line":"            if security_groups and request.port_id:"},{"line_number":469,"context_line":"                raise exception.SecurityGroupNotAllowedTogetherWithPort()"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"            # Network lookup for available network_id"},{"line_number":472,"context_line":"            network \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_3b6d4533","line":469,"in_reply_to":"da86d52c_00300f9d","updated":"2015-02-10 14:39:21.000000000","message":"i\u0027ve just replied there, sorry for suspense","commit_id":"59052c160dcc8f5202a3aec3cfc02ada6ec3de62"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"23775f8e7ed1c23793b163222ded859f60c0a32d","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        nets_in_requested_order \u003d []"},{"line_number":467,"context_line":"        for request in ordered_networks:"},{"line_number":468,"context_line":"            if security_groups and request.port_id:"},{"line_number":469,"context_line":"                raise exception.SecurityGroupNotAllowedTogetherWithPort()"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"            # Network lookup for available network_id"},{"line_number":472,"context_line":"            network \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_00300f9d","line":469,"in_reply_to":"da86d52c_77ca85a2","updated":"2015-02-10 13:57:26.000000000","message":"Copying my response to the ML here:\n\"The question here is what do you expect for the existing port - it\u0027s security groups updated or not?\nWill it be ok to silently (or with warning in logs) ignore security groups for it?\nIf it\u0027s ok then is it ok to do the same for:\nnova boot ... --nic port-id\u003dxxx --security-groups sg-1\nwhere the intention is clear enough?\"","commit_id":"59052c160dcc8f5202a3aec3cfc02ada6ec3de62"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"d6f0ab92429d842915123132ea2856ae936e5e6b","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                LOG.exception(_LE(\"Unable to clear device ID \""},{"line_number":368,"context_line":"                                  \"for port \u0027%s\u0027\"), port_id)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    def allocate_for_instance(self, context, instance, **kwargs):"},{"line_number":371,"context_line":"        \"\"\"Allocate network resources for the instance."},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        :param context: The request context."}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6ced46_2ddfb16a","line":370,"updated":"2015-03-25 13:31:17.000000000","message":"C901 \u0027API.allocate_for_instance\u0027 is too complex (35)","commit_id":"8e11d65d2c3677377d1835414ddeade9508ab9dd"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eaba742e3937655bcf1fa817c4d570ea887f8b7a","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                LOG.exception(_LE(\"Unable to clear device ID \""},{"line_number":368,"context_line":"                                  \"for port \u0027%s\u0027\"), port_id)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    def allocate_for_instance(self, context, instance, **kwargs):"},{"line_number":371,"context_line":"        \"\"\"Allocate network resources for the instance."},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        :param context: The request context."}],"source_content_type":"text/x-python","patch_set":3,"id":"9aa53dc9_1fe98de6","line":370,"in_reply_to":"1a6ced46_2ddfb16a","updated":"2015-04-08 19:07:53.000000000","message":"Heh, that sucks. :)","commit_id":"8e11d65d2c3677377d1835414ddeade9508ab9dd"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d79c0bca80eb9f1a0b30db1355899e2cdc79b907","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                LOG.exception(_LE(\"Unable to clear device ID \""},{"line_number":368,"context_line":"                                  \"for port \u0027%s\u0027\"), port_id)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    def allocate_for_instance(self, context, instance, **kwargs):"},{"line_number":371,"context_line":"        \"\"\"Allocate network resources for the instance."},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        :param context: The request context."}],"source_content_type":"text/x-python","patch_set":3,"id":"9aa53dc9_29e091f9","line":370,"in_reply_to":"9aa53dc9_1fe98de6","updated":"2015-04-09 07:17:54.000000000","message":"Indeed. I think I saw a blueprint about neutron api refactoring, not sure about it\u0027s status. Will check it and maybe start with a simple refactoring of this func..","commit_id":"8e11d65d2c3677377d1835414ddeade9508ab9dd"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bb27d0e44ae00e971b204d5bcaba09d1972d2500","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                LOG.exception(_LE(\"Unable to clear device ID \""},{"line_number":368,"context_line":"                                  \"for port \u0027%s\u0027\"), port_id)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    def allocate_for_instance(self, context, instance, **kwargs):"},{"line_number":371,"context_line":"        \"\"\"Allocate network resources for the instance."},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        :param context: The request context."}],"source_content_type":"text/x-python","patch_set":3,"id":"9aa53dc9_479b8666","line":370,"in_reply_to":"9aa53dc9_29e091f9","updated":"2015-04-10 13:46:04.000000000","message":"Yeah, Brent Eagles had one, or multiple, in Kilo that I think were going to be proposed again for Liberty.","commit_id":"8e11d65d2c3677377d1835414ddeade9508ab9dd"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"93f1ec1c728ac4891a9d5ab912c0dc79111bc0b2","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                LOG.exception(_LE(\"Unable to clear device ID \""},{"line_number":368,"context_line":"                                  \"for port \u0027%s\u0027\"), port_id)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    def allocate_for_instance(self, context, instance, **kwargs):"},{"line_number":371,"context_line":"        \"\"\"Allocate network resources for the instance."},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        :param context: The request context."}],"source_content_type":"text/x-python","patch_set":3,"id":"9aa53dc9_ed54b9ca","line":370,"in_reply_to":"9aa53dc9_479b8666","updated":"2015-04-10 14:37:12.000000000","message":"I\u0027m going to work on some patches today to cleanup allocate_for_instance, simple refactor to pull some of the big loops and validation logic out into private methods and actually document some of what the code is doing.","commit_id":"8e11d65d2c3677377d1835414ddeade9508ab9dd"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"25dd24c70144f095c0e3a177f75816f1266e1212","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                LOG.exception(_LE(\"Unable to clear device ID \""},{"line_number":368,"context_line":"                                  \"for port \u0027%s\u0027\"), port_id)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    def allocate_for_instance(self, context, instance, **kwargs):"},{"line_number":371,"context_line":"        \"\"\"Allocate network resources for the instance."},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        :param context: The request context."}],"source_content_type":"text/x-python","patch_set":3,"id":"9aa53dc9_70b51e7c","line":370,"in_reply_to":"9aa53dc9_ed54b9ca","updated":"2015-04-10 15:10:48.000000000","message":"Good to know, thanks Matt.","commit_id":"8e11d65d2c3677377d1835414ddeade9508ab9dd"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7b4d666457ef7dfe23891fe38d8e4acdeb3f369c","unresolved":false,"context_lines":[{"line_number":617,"context_line":"            if security_groups and request.port_id:"},{"line_number":618,"context_line":"                LOG.warning(_LW(\u0027Security groups provided together with \u0027"},{"line_number":619,"context_line":"                                \u0027port_id will be ignored. Neutron should be \u0027"},{"line_number":620,"context_line":"                                \u0027used to configure security groups on port.\u0027),"},{"line_number":621,"context_line":"                            instance\u003dinstance)"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"            # Network lookup for available network_id"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab921fb_31b13448","line":620,"updated":"2015-04-24 14:55:36.000000000","message":"nit: we should probably throw the request.port_id value in the warning message for context.","commit_id":"aef1b354bae56f213c453fa7e0bf6712fc462da1"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"b9fdf61b6562550ed8a0e5b7f16a0a155bb47b34","unresolved":false,"context_lines":[{"line_number":617,"context_line":"            if security_groups and request.port_id:"},{"line_number":618,"context_line":"                LOG.warning(_LW(\u0027Security groups provided together with \u0027"},{"line_number":619,"context_line":"                                \u0027port_id will be ignored. Neutron should be \u0027"},{"line_number":620,"context_line":"                                \u0027used to configure security groups on port.\u0027),"},{"line_number":621,"context_line":"                            instance\u003dinstance)"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"            # Network lookup for available network_id"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab921fb_7d309d9e","line":620,"in_reply_to":"bab921fb_31b13448","updated":"2015-04-24 16:18:01.000000000","message":"Done","commit_id":"aef1b354bae56f213c453fa7e0bf6712fc462da1"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"54a333e7d6953decc2954931c4d203ea7365f201","unresolved":false,"context_lines":[{"line_number":619,"context_line":"                                \u0027port_id %(port)s will be ignored. Neutron \u0027"},{"line_number":620,"context_line":"                                \u0027should be used to configure security groups \u0027"},{"line_number":621,"context_line":"                                \u0027on port.\u0027),"},{"line_number":622,"context_line":"                            port\u003drequest.port_id,"},{"line_number":623,"context_line":"                            instance\u003dinstance)"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"            # Network lookup for available network_id"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab921fb_4e219e9e","line":622,"updated":"2015-04-24 18:25:23.000000000","message":"I think this has to be instead in order to work:\n\n {\u0027port\u0027: request.port_id},","commit_id":"104453c6950143369c2eada7202a86d55664a895"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a0eefdb4e042d64993e6010f05d09903444781a0","unresolved":false,"context_lines":[{"line_number":619,"context_line":"                                \u0027port_id %(port)s will be ignored. Neutron \u0027"},{"line_number":620,"context_line":"                                \u0027should be used to configure security groups \u0027"},{"line_number":621,"context_line":"                                \u0027on port.\u0027),"},{"line_number":622,"context_line":"                            port\u003drequest.port_id,"},{"line_number":623,"context_line":"                            instance\u003dinstance)"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"            # Network lookup for available network_id"}],"source_content_type":"text/x-python","patch_set":8,"id":"bab921fb_0e56065c","line":622,"in_reply_to":"bab921fb_4e219e9e","updated":"2015-04-24 18:46:44.000000000","message":"Yup.","commit_id":"104453c6950143369c2eada7202a86d55664a895"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6dd5e4351a5b71efbd652da66f9fe6b20d147a37","unresolved":false,"context_lines":[{"line_number":613,"context_line":"        created_port_ids \u003d []"},{"line_number":614,"context_line":"        ports_in_requested_order \u003d []"},{"line_number":615,"context_line":"        nets_in_requested_order \u003d []"},{"line_number":616,"context_line":"        for request in ordered_networks:"},{"line_number":617,"context_line":"            # Network lookup for available network_id"},{"line_number":618,"context_line":"            network \u003d None"},{"line_number":619,"context_line":"            for net in nets:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3acd31a7_58f3010b","side":"PARENT","line":616,"updated":"2015-04-30 07:37:01.000000000","message":"Hum I\u0027m not convinced of adding a warning here will be useful. The error comes from the user and this will warning the operator. Now i can understand the point of raising an exception (which is probably the good fix) can break backward compatibility.\n\nWe probably have to add a TODO note here to inform this LOG has been added for Liberty and should be replaced by a correct exception for M* aslo the warning should refer this new behavior for M*","commit_id":"f638c6ae2acd1ccdc50ed3437a616f01d8e63715"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"4efd93709bdffb77b1be62d01683586a1573ae77","unresolved":false,"context_lines":[{"line_number":613,"context_line":"        created_port_ids \u003d []"},{"line_number":614,"context_line":"        ports_in_requested_order \u003d []"},{"line_number":615,"context_line":"        nets_in_requested_order \u003d []"},{"line_number":616,"context_line":"        for request in ordered_networks:"},{"line_number":617,"context_line":"            # Network lookup for available network_id"},{"line_number":618,"context_line":"            network \u003d None"},{"line_number":619,"context_line":"            for net in nets:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_4699f06d","side":"PARENT","line":616,"in_reply_to":"3acd31a7_58f3010b","updated":"2015-05-12 16:16:40.000000000","message":"I\u0027ll add the TODO","commit_id":"f638c6ae2acd1ccdc50ed3437a616f01d8e63715"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f7a73f49cd3c14ba7f3f5ddb3429265ce832814d","unresolved":false,"context_lines":[{"line_number":615,"context_line":"        nets_in_requested_order \u003d []"},{"line_number":616,"context_line":"        for request in ordered_networks:"},{"line_number":617,"context_line":"            if security_groups and request.port_id:"},{"line_number":618,"context_line":"                #TODO(obondarev): we\u0027re going with warning for L release to"},{"line_number":619,"context_line":"                # preserve API backward compatibility. However this is only"},{"line_number":620,"context_line":"                # operator who will see the logs so we should reconsider in M"},{"line_number":621,"context_line":"                # to raise an exception here to notify users explicitly"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a0c5dc1_7426c369","line":618,"updated":"2015-05-13 06:29:22.000000000","message":"I think pep8 complaints because of the missing space here. Thanks for the note.","commit_id":"88e17e268b4932d0077e9d31a9a144464a56a835"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"879cadeccbed65d55ffd1efd97fe0cee24e602a2","unresolved":false,"context_lines":[{"line_number":614,"context_line":"        ports_in_requested_order \u003d []"},{"line_number":615,"context_line":"        nets_in_requested_order \u003d []"},{"line_number":616,"context_line":"        for request in ordered_networks:"},{"line_number":617,"context_line":"            if security_groups and request.port_id:"},{"line_number":618,"context_line":"                # TODO(obondarev): we\u0027re going with warning for L release to"},{"line_number":619,"context_line":"                # preserve API backward compatibility. However this is only"},{"line_number":620,"context_line":"                # operator who will see the logs so we should reconsider in M"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a0c5dc1_4f51e5d7","line":617,"updated":"2015-05-13 09:29:14.000000000","message":"Actually not tests go in the code path so you will probably have to add new one","commit_id":"160f2eba8c90027a75fa214bea61c9db55a81076"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"fb518e430e05f56837350083419a5f0aeb44a92c","unresolved":false,"context_lines":[{"line_number":614,"context_line":"        ports_in_requested_order \u003d []"},{"line_number":615,"context_line":"        nets_in_requested_order \u003d []"},{"line_number":616,"context_line":"        for request in ordered_networks:"},{"line_number":617,"context_line":"            if security_groups and request.port_id:"},{"line_number":618,"context_line":"                # TODO(obondarev): we\u0027re going with warning for L release to"},{"line_number":619,"context_line":"                # preserve API backward compatibility. However this is only"},{"line_number":620,"context_line":"                # operator who will see the logs so we should reconsider in M"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a0c5dc1_5e7d11b0","line":617,"in_reply_to":"9a0c5dc1_4f51e5d7","updated":"2015-05-13 11:56:00.000000000","message":"Frankly, I\u0027m not sure checking that warning is logged deserves a unit test","commit_id":"160f2eba8c90027a75fa214bea61c9db55a81076"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6367f109490bbda3c39a6c3a0fc05f0617e2449d","unresolved":false,"context_lines":[{"line_number":614,"context_line":"        ports_in_requested_order \u003d []"},{"line_number":615,"context_line":"        nets_in_requested_order \u003d []"},{"line_number":616,"context_line":"        for request in ordered_networks:"},{"line_number":617,"context_line":"            if security_groups and request.port_id:"},{"line_number":618,"context_line":"                # TODO(obondarev): we\u0027re going with warning for L release to"},{"line_number":619,"context_line":"                # preserve API backward compatibility. However this is only"},{"line_number":620,"context_line":"                # operator who will see the logs so we should reconsider in M"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a0c5dc1_2403700f","line":617,"in_reply_to":"9a0c5dc1_5e7d11b0","updated":"2015-05-13 12:24:49.000000000","message":"Well you are invoking a method with several parameters it can be easy to make a syntax error here that will be only evaluate when the code will use that path. I remember to have seen several mistakes about log formatting.","commit_id":"160f2eba8c90027a75fa214bea61c9db55a81076"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"65027b9de93ceb50f4ba45c82041a2f8edf5fca3","unresolved":false,"context_lines":[{"line_number":617,"context_line":"            if security_groups and request.port_id:"},{"line_number":618,"context_line":"                # TODO(obondarev): we\u0027re going with warning for L release to"},{"line_number":619,"context_line":"                # preserve API backward compatibility. However this is only"},{"line_number":620,"context_line":"                # operator who will see the logs so we should reconsider in M"},{"line_number":621,"context_line":"                # to raise an exception here to notify users explicitly"},{"line_number":622,"context_line":"                LOG.warning(_LW(\u0027Security groups provided together with \u0027"},{"line_number":623,"context_line":"                                \u0027port_id %(port)s will be ignored. Neutron \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a0c5dc1_343027e8","line":620,"updated":"2015-05-13 20:23:39.000000000","message":"Warts and all, we\u0027re stuck with the API the way it is until there is a new neutron API in nova, which I think is what beagles is working on.  So I\u0027m actually -1 on this, we should just log the warning and be done with it - which is what the code was doing several patchsets before.\n\nWe can block this in a new version of the neutron API but it\u0027d be a new configurable neutron backend in nova I think, not just a refactor of this one.\n\nBesides, if we did go with this, it\u0027d require a DocImpact or UpgradeImpact in the commit message as a flag for the LIberty release notes, but I don\u0027t think this is the right way to go anyway per backwards compat issues with the API.","commit_id":"160f2eba8c90027a75fa214bea61c9db55a81076"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"0c2fa3bf3201fb6e831ee305d82a114034aa7b35","unresolved":false,"context_lines":[{"line_number":617,"context_line":"            if security_groups and request.port_id:"},{"line_number":618,"context_line":"                # TODO(obondarev): we\u0027re going with warning for L release to"},{"line_number":619,"context_line":"                # preserve API backward compatibility. However this is only"},{"line_number":620,"context_line":"                # operator who will see the logs so we should reconsider in M"},{"line_number":621,"context_line":"                # to raise an exception here to notify users explicitly"},{"line_number":622,"context_line":"                LOG.warning(_LW(\u0027Security groups provided together with \u0027"},{"line_number":623,"context_line":"                                \u0027port_id %(port)s will be ignored. Neutron \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_41942a8a","line":620,"in_reply_to":"7a016987_19211b4e","updated":"2015-05-15 02:25:26.000000000","message":"Do u know anybody who trying to work on this(security micro version)? I want to take over this. \n\nI am a newbie. And what do u think should I do to start it? Submit a new bug about this? Or submit a new bp?","commit_id":"160f2eba8c90027a75fa214bea61c9db55a81076"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"93c91c99848fd5adce02f5c7e6c41abeb4c180b4","unresolved":false,"context_lines":[{"line_number":617,"context_line":"            if security_groups and request.port_id:"},{"line_number":618,"context_line":"                # TODO(obondarev): we\u0027re going with warning for L release to"},{"line_number":619,"context_line":"                # preserve API backward compatibility. However this is only"},{"line_number":620,"context_line":"                # operator who will see the logs so we should reconsider in M"},{"line_number":621,"context_line":"                # to raise an exception here to notify users explicitly"},{"line_number":622,"context_line":"                LOG.warning(_LW(\u0027Security groups provided together with \u0027"},{"line_number":623,"context_line":"                                \u0027port_id %(port)s will be ignored. Neutron \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_3def0389","line":620,"in_reply_to":"7a016987_41942a8a","updated":"2015-05-15 14:13:38.000000000","message":"A new microversion would be an API change which requires a blueprint and a spec review in the nova-specs repo.  I\u0027d suggest talking to Brent Eagles (beagles in IRC) about his plans for a newer version of the neutron API within nova in case there is overlap.","commit_id":"160f2eba8c90027a75fa214bea61c9db55a81076"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"181f6abd23187a6677441e3be3b8c21129fe2b95","unresolved":false,"context_lines":[{"line_number":617,"context_line":"            if security_groups and request.port_id:"},{"line_number":618,"context_line":"                # TODO(obondarev): we\u0027re going with warning for L release to"},{"line_number":619,"context_line":"                # preserve API backward compatibility. However this is only"},{"line_number":620,"context_line":"                # operator who will see the logs so we should reconsider in M"},{"line_number":621,"context_line":"                # to raise an exception here to notify users explicitly"},{"line_number":622,"context_line":"                LOG.warning(_LW(\u0027Security groups provided together with \u0027"},{"line_number":623,"context_line":"                                \u0027port_id %(port)s will be ignored. Neutron \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_19211b4e","line":620,"in_reply_to":"7a016987_6e2051f8","updated":"2015-05-14 18:45:08.000000000","message":"Yes this would definitely be a new microversion on the v3 API for server create, but we still have to honor how things work in the v2 API for the neutron backend, we can\u0027t just start failing what was working before with the v2 API.","commit_id":"160f2eba8c90027a75fa214bea61c9db55a81076"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"ebd0b381840cc638d86123e96430f6394d15c2ea","unresolved":false,"context_lines":[{"line_number":617,"context_line":"            if security_groups and request.port_id:"},{"line_number":618,"context_line":"                # TODO(obondarev): we\u0027re going with warning for L release to"},{"line_number":619,"context_line":"                # preserve API backward compatibility. However this is only"},{"line_number":620,"context_line":"                # operator who will see the logs so we should reconsider in M"},{"line_number":621,"context_line":"                # to raise an exception here to notify users explicitly"},{"line_number":622,"context_line":"                LOG.warning(_LW(\u0027Security groups provided together with \u0027"},{"line_number":623,"context_line":"                                \u0027port_id %(port)s will be ignored. Neutron \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a016987_6e2051f8","line":620,"in_reply_to":"9a0c5dc1_343027e8","updated":"2015-05-14 13:31:57.000000000","message":"IMO, the root cause is that in Neutron Network, we can attach more than one network to the instance. It will be confused using the following cli.\n\n    nova boot test --flavor m1.tiny --security_group ssh --security_group \\\n            http --nic net-id\u003dxxxxxxxxxxx --nic port-id\u003dyyyyyyyyyyy\n\nWhich port/nic the security group should bind to?  the first one? both? or none?\n\nThe legacy network will be removed and I think it is the time to change the API to satisfied the new situation. May be the new cli like below:\n\n    nova boot test --flavor m1.tiny --nic net-id\u003dxxxxxx,security_group\u003dssh  \\\n         --nic port-id\u003dyyyyyyyyy \\ \n         --nic net-id\u003dzzzzzzzz,security_group\u003dhttp,security_group\u003dmysql\n\n\nSo I think we should refactor the nova api to support above cli. May be we need a new micro version api?","commit_id":"160f2eba8c90027a75fa214bea61c9db55a81076"}]}
