)]}'
{"doc/source/user/aggregates.rst":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"1ace97f510274cd410fb8fb64190e2a10fa3bf80","unresolved":false,"context_lines":[{"line_number":55,"context_line":"  moved to another aggregate or when the user would like to migrate the"},{"line_number":56,"context_line":"  instance."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":".. note:: Availablity zone name should NOT contain \u0027:\u0027 since it is used by admin"},{"line_number":59,"context_line":"  users to specify hosts where instances are launched in server creation."},{"line_number":60,"context_line":"  See :doc:`Select hosts where instances are launched \u003c/admin/availability-zones\u003e` for more detail."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"bf57530f_63823252","line":58,"range":{"start_line":58,"start_character":32,"end_line":58,"end_character":38},"updated":"2017-09-20 13:10:38.000000000","message":"must","commit_id":"596435c36e13c2471a2727de2a01dd3e52897187"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"a704a45292bc0185ff951a7ea122d2416d65f766","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":".. note:: Availablity zone name must NOT contain \u0027:\u0027 since it is used by admin"},{"line_number":59,"context_line":"  users to specify hosts where instances are launched in server creation."},{"line_number":60,"context_line":"  See :doc:`Select hosts where instances are launched \u003c/admin/availability-zones\u003e` for more detail."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Xen Pool Host Aggregates"},{"line_number":63,"context_line":"------------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7f515b1d_682a3bdb","line":60,"updated":"2017-10-01 19:58:46.000000000","message":"nit: wrap","commit_id":"38b25397e805dcf7a995666049713304fe4f1af1"}],"nova/api/validation/parameter_types.py":[{"author":{"_account_id":24711,"name":"Jackie Truong","email":"jacklyn.truong@jhuapl.edu","username":"jackie-truong"},"change_message_id":"add569c9ffb96380af07488e9a47aa61a8f1abc7","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        _build_regex_range(exclude\u003d[\u0027:\u0027]),"},{"line_number":157,"context_line":"        _build_regex_range(ws\u003dFalse, invert\u003dTrue)),"},{"line_number":158,"context_line":"    _(\"printable characters except :.\""},{"line_number":159,"context_line":"      \"Can not start or end with whitespace.\"))"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"# az\u0027s name disallow \u0027:\u0027."}],"source_content_type":"text/x-python","patch_set":2,"id":"9f436f4f_36ec278e","line":159,"range":{"start_line":159,"start_character":7,"end_line":159,"end_character":14},"updated":"2017-08-22 14:10:37.000000000","message":"NIT: \"Cannot\"","commit_id":"22caadd0538a40b148bad543544fe6e834720860"}],"nova/objects/aggregate.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ffdbf2475eaec0ed7c48b64111992eeb98a2de9b","unresolved":false,"context_lines":[{"line_number":280,"context_line":"            raise exception.ObjectActionError("},{"line_number":281,"context_line":"                action\u003daction,"},{"line_number":282,"context_line":"                reason\u003d\u0027hosts updated inline\u0027)"},{"line_number":283,"context_line":"    "},{"line_number":284,"context_line":"    def _check_az_name(self, az):"},{"line_number":285,"context_line":"        if \u0027:\u0027 in az:"},{"line_number":286,"context_line":"          raise exception.AggregateMetadataInvalid("}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_7adfdb39","line":283,"updated":"2017-08-04 03:19:27.000000000","message":"whitespace issue for pep8","commit_id":"75b4c2c70e641f8ef21b1617375f80b47e7b7fe3"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"344b2efc8df657446928886d373689a576f4a57c","unresolved":false,"context_lines":[{"line_number":280,"context_line":"            raise exception.ObjectActionError("},{"line_number":281,"context_line":"                action\u003daction,"},{"line_number":282,"context_line":"                reason\u003d\u0027hosts updated inline\u0027)"},{"line_number":283,"context_line":"    "},{"line_number":284,"context_line":"    def _check_az_name(self, az):"},{"line_number":285,"context_line":"        if \u0027:\u0027 in az:"},{"line_number":286,"context_line":"          raise exception.AggregateMetadataInvalid("}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_692c6999","line":283,"in_reply_to":"df3967d1_7adfdb39","updated":"2017-08-08 06:59:23.000000000","message":"Sorry, I will check pep8 out every time before uploading a patch.","commit_id":"75b4c2c70e641f8ef21b1617375f80b47e7b7fe3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ffdbf2475eaec0ed7c48b64111992eeb98a2de9b","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                reason\u003d\u0027hosts updated inline\u0027)"},{"line_number":283,"context_line":"    "},{"line_number":284,"context_line":"    def _check_az_name(self, az):"},{"line_number":285,"context_line":"        if \u0027:\u0027 in az:"},{"line_number":286,"context_line":"          raise exception.AggregateMetadataInvalid("},{"line_number":287,"context_line":"                reason\u003d\u0027availability_zone should not include \":\"\u0027)"},{"line_number":288,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_dabda7d8","line":285,"updated":"2017-08-04 03:19:27.000000000","message":"couldn\u0027t we handle this in our jsonschema validation?\n\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/compute/schemas/aggregates.py#L19","commit_id":"75b4c2c70e641f8ef21b1617375f80b47e7b7fe3"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"344b2efc8df657446928886d373689a576f4a57c","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                reason\u003d\u0027hosts updated inline\u0027)"},{"line_number":283,"context_line":"    "},{"line_number":284,"context_line":"    def _check_az_name(self, az):"},{"line_number":285,"context_line":"        if \u0027:\u0027 in az:"},{"line_number":286,"context_line":"          raise exception.AggregateMetadataInvalid("},{"line_number":287,"context_line":"                reason\u003d\u0027availability_zone should not include \":\"\u0027)"},{"line_number":288,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_a9e2512e","line":285,"in_reply_to":"df3967d1_dabda7d8","updated":"2017-08-08 06:59:23.000000000","message":"Thank you for suggestion. Yes, you can handle this in jsonschema validation. I was wondering if the jsonschema validation prevents users from using legacy hack of creating server with \"--availability-zone az:host\" option, but the fact is that it does not prevent us from using the hack.","commit_id":"75b4c2c70e641f8ef21b1617375f80b47e7b7fe3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ffdbf2475eaec0ed7c48b64111992eeb98a2de9b","unresolved":false,"context_lines":[{"line_number":283,"context_line":"    "},{"line_number":284,"context_line":"    def _check_az_name(self, az):"},{"line_number":285,"context_line":"        if \u0027:\u0027 in az:"},{"line_number":286,"context_line":"          raise exception.AggregateMetadataInvalid("},{"line_number":287,"context_line":"                reason\u003d\u0027availability_zone should not include \":\"\u0027)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_5ae897e0","line":286,"updated":"2017-08-04 03:19:27.000000000","message":"alignment is wrong here","commit_id":"75b4c2c70e641f8ef21b1617375f80b47e7b7fe3"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"344b2efc8df657446928886d373689a576f4a57c","unresolved":false,"context_lines":[{"line_number":283,"context_line":"    "},{"line_number":284,"context_line":"    def _check_az_name(self, az):"},{"line_number":285,"context_line":"        if \u0027:\u0027 in az:"},{"line_number":286,"context_line":"          raise exception.AggregateMetadataInvalid("},{"line_number":287,"context_line":"                reason\u003d\u0027availability_zone should not include \":\"\u0027)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_c93475e1","line":286,"in_reply_to":"df3967d1_5ae897e0","updated":"2017-08-08 06:59:23.000000000","message":"Thank you for pointing out.","commit_id":"75b4c2c70e641f8ef21b1617375f80b47e7b7fe3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ffdbf2475eaec0ed7c48b64111992eeb98a2de9b","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            payload[\u0027meta_data\u0027] \u003d payload.pop(\u0027metadata\u0027)"},{"line_number":349,"context_line":"            availability_zone \u003d payload[\u0027meta_data\u0027].get(\u0027availability_zone\u0027)"},{"line_number":350,"context_line":"            if availability_zone:"},{"line_number":351,"context_line":"              self._check_az_name(availability_zone)"},{"line_number":352,"context_line":"        if \u0027uuid\u0027 not in updates:"},{"line_number":353,"context_line":"            updates[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":354,"context_line":"            self.uuid \u003d updates[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_bac2e357","line":351,"updated":"2017-08-04 03:19:27.000000000","message":"alignment is wrong - use 4 spaces","commit_id":"75b4c2c70e641f8ef21b1617375f80b47e7b7fe3"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"344b2efc8df657446928886d373689a576f4a57c","unresolved":false,"context_lines":[{"line_number":348,"context_line":"            payload[\u0027meta_data\u0027] \u003d payload.pop(\u0027metadata\u0027)"},{"line_number":349,"context_line":"            availability_zone \u003d payload[\u0027meta_data\u0027].get(\u0027availability_zone\u0027)"},{"line_number":350,"context_line":"            if availability_zone:"},{"line_number":351,"context_line":"              self._check_az_name(availability_zone)"},{"line_number":352,"context_line":"        if \u0027uuid\u0027 not in updates:"},{"line_number":353,"context_line":"            updates[\u0027uuid\u0027] \u003d uuidutils.generate_uuid()"},{"line_number":354,"context_line":"            self.uuid \u003d updates[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_a93131ef","line":351,"in_reply_to":"df3967d1_bac2e357","updated":"2017-08-08 06:59:23.000000000","message":"Thank you.","commit_id":"75b4c2c70e641f8ef21b1617375f80b47e7b7fe3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ffdbf2475eaec0ed7c48b64111992eeb98a2de9b","unresolved":false,"context_lines":[{"line_number":413,"context_line":"                   \u0027meta_data\u0027: updates}"},{"line_number":414,"context_line":"        availability_zone \u003d payload[\u0027meta_data\u0027].get(\u0027availability_zone\u0027)"},{"line_number":415,"context_line":"        if availability_zone:"},{"line_number":416,"context_line":"            self._check_az_name(availability_zone)"},{"line_number":417,"context_line":"        compute_utils.notify_about_aggregate_update(self._context,"},{"line_number":418,"context_line":"                                                    \"updatemetadata.start\","},{"line_number":419,"context_line":"                                                    payload)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_9ab39f0a","line":416,"updated":"2017-08-04 03:19:27.000000000","message":"alignment","commit_id":"75b4c2c70e641f8ef21b1617375f80b47e7b7fe3"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"344b2efc8df657446928886d373689a576f4a57c","unresolved":false,"context_lines":[{"line_number":413,"context_line":"                   \u0027meta_data\u0027: updates}"},{"line_number":414,"context_line":"        availability_zone \u003d payload[\u0027meta_data\u0027].get(\u0027availability_zone\u0027)"},{"line_number":415,"context_line":"        if availability_zone:"},{"line_number":416,"context_line":"            self._check_az_name(availability_zone)"},{"line_number":417,"context_line":"        compute_utils.notify_about_aggregate_update(self._context,"},{"line_number":418,"context_line":"                                                    \"updatemetadata.start\","},{"line_number":419,"context_line":"                                                    payload)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f436f4f_6951090f","line":416,"in_reply_to":"df3967d1_9ab39f0a","updated":"2017-08-08 06:59:23.000000000","message":"Thank you.","commit_id":"75b4c2c70e641f8ef21b1617375f80b47e7b7fe3"}],"nova/tests/unit/api/openstack/compute/test_aggregates.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1f6c5e3610e3819369bf080de95969b9596062c4","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                          self.req, body\u003d{\"aggregate\":"},{"line_number":238,"context_line":"                                     {\"name\": \"test\","},{"line_number":239,"context_line":"                                      \"availability_zone\": \"bad:az\"}})"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def test_create_availability_zone_with_leading_trailing_spaces(self):"},{"line_number":242,"context_line":"        self.assertRaises(self.bad_request, self.controller.create,"},{"line_number":243,"context_line":"                          self.req, body\u003d{\"aggregate\":"}],"source_content_type":"text/x-python","patch_set":10,"id":"7f515b1d_40026bb6","line":240,"range":{"start_line":240,"start_character":0,"end_line":240,"end_character":0},"updated":"2017-09-23 14:00:03.000000000","message":"Good to add \u0027:\u0027 tests for add_host also","commit_id":"6472cee7c3c9da7cf1729a228e3871b6dd1de0b0"}],"releasenotes/notes/bug-1695861-ebc8a0aa7a87f7e0.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cf2d5feda5fd7b3c7ab1a77464fbeba66ac8847b","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes `bug 1695861`_ in which the aggregate API accepted requests that"},{"line_number":5,"context_line":"    have availability zone names including \u0027:\u0027. With this fix, a creation"},{"line_number":6,"context_line":"    of an availabilty zone whose name includes \u0027:\u0027 results in an InvalidName"},{"line_number":7,"context_line":"    error."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    .. _bug 1695861: https://bugs.launchpad.net/nova/+bug/1695861"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7f515b1d_19a19baa","line":6,"range":{"start_line":6,"start_character":65,"end_line":6,"end_character":76},"updated":"2017-09-22 20:38:19.000000000","message":"This is the internal exception. The user error is going to be a 400 BadRequest response.","commit_id":"ab661c23ef0f121015f2cbc36f308c782418c92f"}]}
