)]}'
{"doc/source/model.rst":[{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"2f73ff5fb4c78cf07542b757e3b7a0fb0a38cf34","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    name\u003dstr(),"},{"line_number":290,"context_line":"    description\u003dstr() or None,"},{"line_number":291,"context_line":"    is_public\u003dbool(),"},{"line_number":292,"context_line":"    os-volume-type-access:is_public\u003dbool(),"},{"line_number":293,"context_line":"    qos_specs_id\u003dstr() or None,"},{"line_number":294,"context_line":"    extra_specs\u003ddict())"},{"line_number":295,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a3c09a3_be1d5a11","line":292,"updated":"2017-01-13 17:41:57.000000000","message":"If is_public can be provided from the cloud as os-volume-type-access:is_public sometimes and is_public other times, we want to make sure in normalize that we just map that to is_public and remove os-volume-type-access:is_public","commit_id":"a09f1d8835b5040afac92f75f92210479bddad35"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"2f73ff5fb4c78cf07542b757e3b7a0fb0a38cf34","unresolved":false,"context_lines":[{"line_number":290,"context_line":"    description\u003dstr() or None,"},{"line_number":291,"context_line":"    is_public\u003dbool(),"},{"line_number":292,"context_line":"    os-volume-type-access:is_public\u003dbool(),"},{"line_number":293,"context_line":"    qos_specs_id\u003dstr() or None,"},{"line_number":294,"context_line":"    extra_specs\u003ddict())"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a3c09a3_de2066fa","line":293,"updated":"2017-01-13 17:41:57.000000000","message":"I don\u0027t see qos_specs_id in normalize.py","commit_id":"a09f1d8835b5040afac92f75f92210479bddad35"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"2f73ff5fb4c78cf07542b757e3b7a0fb0a38cf34","unresolved":false,"context_lines":[{"line_number":291,"context_line":"    is_public\u003dbool(),"},{"line_number":292,"context_line":"    os-volume-type-access:is_public\u003dbool(),"},{"line_number":293,"context_line":"    qos_specs_id\u003dstr() or None,"},{"line_number":294,"context_line":"    extra_specs\u003ddict())"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"VolumeTypeAccess"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a3c09a3_5e5ab684","line":294,"updated":"2017-01-13 17:41:57.000000000","message":"I don\u0027t see anything setting extra_specs. Also - we lost properties which is where any additional key-value pairs we don\u0027t know what to do with should wind up.","commit_id":"a09f1d8835b5040afac92f75f92210479bddad35"}],"shade/_normalize.py":[{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"e464d54c141d619a6a3b2b134dcc54fcf727a5ed","unresolved":false,"context_lines":[{"line_number":578,"context_line":""},{"line_number":579,"context_line":"        return ret"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    def _normalize_volume_type_access(self, volume_type_access):"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"        volume_type_access \u003d volume_type_access.copy()"},{"line_number":584,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_8669ccfb","line":581,"updated":"2017-01-11 20:25:16.000000000","message":"could you also please add a location \u003d self.current_location() to the return structure of both of these?","commit_id":"2980006e75fbbd1fb66ed35d9637aa5eecad0988"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"2f73ff5fb4c78cf07542b757e3b7a0fb0a38cf34","unresolved":false,"context_lines":[{"line_number":605,"context_line":"        volume_id \u003d volume_type.pop(\u0027id\u0027)"},{"line_number":606,"context_line":"        description \u003d volume_type.pop(\u0027description\u0027, None)"},{"line_number":607,"context_line":"        name \u003d volume_type.pop(\u0027name\u0027, None)"},{"line_number":608,"context_line":"        is_public \u003d volume_type.pop(\u0027is_public\u0027)"},{"line_number":609,"context_line":"        ret \u003d munch.Munch("},{"line_number":610,"context_line":"            location\u003dself.current_location,"},{"line_number":611,"context_line":"            is_public\u003dis_public,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a3c09a3_9e3fbe24","line":608,"updated":"2017-01-13 17:41:57.000000000","message":"I think we need something like:\n\nold_is_public \u003d volume_type.pop(\u0027os-volume-type-access:is_public\u0027, False)\nis_public \u003d volume_type.pop(\u0027is_public\u0027, old_is_public)\n\nBased on the docs info.","commit_id":"a09f1d8835b5040afac92f75f92210479bddad35"}],"shade/openstackcloud.py":[{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"e464d54c141d619a6a3b2b134dcc54fcf727a5ed","unresolved":false,"context_lines":[{"line_number":5574,"context_line":"        raise OpenStackCloudException("},{"line_number":5575,"context_line":"            \"Could not determine container access for ACL: %s.\" % acl)"},{"line_number":5576,"context_line":""},{"line_number":5577,"context_line":"    def get_volume_type_access(self, name):"},{"line_number":5578,"context_line":"        volume_type \u003d self.get_volume_type(name)"},{"line_number":5579,"context_line":"        if not volume_type:"},{"line_number":5580,"context_line":"            raise OpenStackCloudException(\"VolumeType not found: %s\" % name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_26fae043","line":5577,"updated":"2017-01-11 20:25:16.000000000","message":"The volume type access calls seem like they\u0027re normally admin calls, so should be in operatorcloud","commit_id":"2980006e75fbbd1fb66ed35d9637aa5eecad0988"}],"shade/operatorcloud.py":[{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"e8d38841e561062cd32b18c9dcacafca25167633","unresolved":false,"context_lines":[{"line_number":1960,"context_line":"            return self.manager.submit_task(_tasks.AggregateRemoveHost("},{"line_number":1961,"context_line":"                aggregate\u003daggregate[\u0027id\u0027], host\u003dhost_name))"},{"line_number":1962,"context_line":""},{"line_number":1963,"context_line":"    def get_volume_type_access(self, name_or_id):"},{"line_number":1964,"context_line":"        volume_type \u003d self.get_volume_type(name_or_id)"},{"line_number":1965,"context_line":"        if not volume_type:"},{"line_number":1966,"context_line":"            raise OpenStackCloudException("}],"source_content_type":"text/x-python","patch_set":8,"id":"7a3c09a3_04308ae7","line":1963,"updated":"2017-01-16 19:58:34.000000000","message":"Please add documentation.","commit_id":"316898a5702fd085565fd45dfe5db66d2a8a3098"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"e8d38841e561062cd32b18c9dcacafca25167633","unresolved":false,"context_lines":[{"line_number":1972,"context_line":"            )"},{"line_number":1973,"context_line":"        except cinder_exceptions.ClientException as e:"},{"line_number":1974,"context_line":"            if e.http_status \u003d\u003d 404:"},{"line_number":1975,"context_line":"                return"},{"line_number":1976,"context_line":"            raise OpenStackCloudException("},{"line_number":1977,"context_line":"                \"Add volume type access failed: %s (%s/%s)\" % ("},{"line_number":1978,"context_line":"                    e.http_reason, e.http_host, e.http_path))"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a3c09a3_e41e1eba","line":1975,"updated":"2017-01-16 19:58:34.000000000","message":"Why return None here? 404 is \"Not Found\", right? Shouldn\u0027t the check above take care of that?","commit_id":"316898a5702fd085565fd45dfe5db66d2a8a3098"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"e8d38841e561062cd32b18c9dcacafca25167633","unresolved":false,"context_lines":[{"line_number":1975,"context_line":"                return"},{"line_number":1976,"context_line":"            raise OpenStackCloudException("},{"line_number":1977,"context_line":"                \"Add volume type access failed: %s (%s/%s)\" % ("},{"line_number":1978,"context_line":"                    e.http_reason, e.http_host, e.http_path))"},{"line_number":1979,"context_line":""},{"line_number":1980,"context_line":"    def add_volume_type_access(self, name_or_id, project_id):"},{"line_number":1981,"context_line":"        volume_type \u003d self.get_volume_type(name_or_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a3c09a3_a47976ca","line":1978,"updated":"2017-01-16 19:58:34.000000000","message":"I\u0027m not sure that formatting the exception this way (using HTTP specific data) makes sense here given we aren\u0027t doing that anywhere else. Any reason to not use our shade_exceptions() context manager?\n\nAlso, these http_* attributes are not valid for this cinder exception type. I hit that when testing this. Functional tests are good. :)","commit_id":"316898a5702fd085565fd45dfe5db66d2a8a3098"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"e8d38841e561062cd32b18c9dcacafca25167633","unresolved":false,"context_lines":[{"line_number":1977,"context_line":"                \"Add volume type access failed: %s (%s/%s)\" % ("},{"line_number":1978,"context_line":"                    e.http_reason, e.http_host, e.http_path))"},{"line_number":1979,"context_line":""},{"line_number":1980,"context_line":"    def add_volume_type_access(self, name_or_id, project_id):"},{"line_number":1981,"context_line":"        volume_type \u003d self.get_volume_type(name_or_id)"},{"line_number":1982,"context_line":"        if not volume_type:"},{"line_number":1983,"context_line":"            raise OpenStackCloudException("}],"source_content_type":"text/x-python","patch_set":8,"id":"7a3c09a3_a4433641","line":1980,"updated":"2017-01-16 19:58:34.000000000","message":"Same issues for this method as above.","commit_id":"316898a5702fd085565fd45dfe5db66d2a8a3098"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"e8d38841e561062cd32b18c9dcacafca25167633","unresolved":false,"context_lines":[{"line_number":1993,"context_line":"                \"Add volume type access failed: %s (%s/%s)\" % ("},{"line_number":1994,"context_line":"                    e.http_reason, e.http_host, e.http_path))"},{"line_number":1995,"context_line":""},{"line_number":1996,"context_line":"    def remove_volume_type_access(self, name, project_id):"},{"line_number":1997,"context_line":"        volume_type \u003d self.get_volume_type(name)"},{"line_number":1998,"context_line":"        if not volume_type:"},{"line_number":1999,"context_line":"            raise OpenStackCloudException(\"VolumeType not found: %s\" % name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a3c09a3_247666a4","line":1996,"updated":"2017-01-16 19:58:34.000000000","message":"Same issues for this method as above.","commit_id":"316898a5702fd085565fd45dfe5db66d2a8a3098"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"3a12c9b170a15a5dd6700396c3a3681518180cf7","unresolved":false,"context_lines":[{"line_number":2001,"context_line":"                _tasks.VolumeTypeAccessAdd("},{"line_number":2002,"context_line":"                    volume_type\u003dvolume_type, project\u003dproject_id))"},{"line_number":2003,"context_line":""},{"line_number":2004,"context_line":"    def remove_volume_type_access(self, name_or_id, project_id):"},{"line_number":2005,"context_line":"        volume_type \u003d self.get_volume_type(name_or_id)"},{"line_number":2006,"context_line":"        if not volume_type:"},{"line_number":2007,"context_line":"            raise OpenStackCloudException("}],"source_content_type":"text/x-python","patch_set":11,"id":"7a3c09a3_ff7e8468","line":2004,"updated":"2017-01-17 14:20:53.000000000","message":"Need a docstring here.  :)","commit_id":"4a43547c6705c219000492af9b075526bf722cdd"}],"shade/tests/functional/test_volume_type.py":[{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"a747cb3de677b985bf0df7e0d9efab684573be62","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                self.operator_cloud.current_project_id)"},{"line_number":74,"context_line":"            self.assertFalse(\"Expected exception (volume_type not found).\")"},{"line_number":75,"context_line":"        except OpenStackCloudException:"},{"line_number":76,"context_line":"            pass"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def test_volume_type_access_missing_project(self):"},{"line_number":79,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a3c09a3_4cf7f48a","line":76,"updated":"2017-01-17 14:20:13.000000000","message":"This doesn\u0027t really work too well. Instead, use testtools.ExpectedException(). E.g.,\n\n   with testtools.ExpectedException(\n       OpenStackCloudException,\n       \"VolumeType not found.*\"\n   ):\n       self.operator_cloud.add_volume_type_access(\n           \u0027MISSING_VOLUME_TYPE\u0027,\n           self.operator_cloud.current_project_id)\n\nSee: http://testtools.readthedocs.io/en/latest/for-test-authors.html#expectedexception","commit_id":"4a43547c6705c219000492af9b075526bf722cdd"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"a747cb3de677b985bf0df7e0d9efab684573be62","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                \u0027MISSING_PROJECT_IT\u0027)"},{"line_number":83,"context_line":"            self.assertFalse(\"Expected exception (project not found).\")"},{"line_number":84,"context_line":"        except OpenStackCloudException:"},{"line_number":85,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a3c09a3_ff2204a2","line":85,"updated":"2017-01-17 14:20:13.000000000","message":"Use ExpectedException.","commit_id":"4a43547c6705c219000492af9b075526bf722cdd"}]}
