)]}'
{"nova/tests/unit/api/openstack/compute/test_flavors.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bb653dad2e953be83efec60796b29862c911b20d","unresolved":false,"context_lines":[{"line_number":591,"context_line":"        self.controller \u003d self.Controller()"},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"    def tearDown(self):"},{"line_number":594,"context_line":"        self._disabled_flavor.destroy()"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"        super(DisabledFlavorsWithRealDBTestV21, self).tearDown()"},{"line_number":597,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da0c15f0_943cf930","line":594,"range":{"start_line":594,"start_character":13,"end_line":594,"end_character":29},"updated":"2016-03-25 14:09:43.000000000","message":"This was already a problem before this change, but if self._create_disabled_instance_type() fails we don\u0027t have self._disabled_flavor, but apparently it hasn\u0027t been an issue so far and it could be cleaned up later if we cared. It would be easier to just use an addCleanup in setUp though.","commit_id":"411988fc4e122b6ed5e9286a7d81cda194b5a0a6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bb653dad2e953be83efec60796b29862c911b20d","unresolved":false,"context_lines":[{"line_number":603,"context_line":"                                vcpu_weight\u003d1, disabled\u003dTrue, is_public\u003dTrue,"},{"line_number":604,"context_line":"                                extra_specs\u003d{}, projects\u003d[])"},{"line_number":605,"context_line":"        flavor.create()"},{"line_number":606,"context_line":"        self._disabled_flavor \u003d flavor"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"        return flavor"},{"line_number":609,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da0c15f0_f493b5f8","line":606,"range":{"start_line":606,"start_character":8,"end_line":606,"end_character":38},"updated":"2016-03-25 14:09:43.000000000","message":"This seems unnecessary. This method already returns the flavor which sets self.disabled_type, which is what\u0027s actually used in the tests. It seems like this is only here for the tearDown, but we could use self.disabled_type in there. It\u0027d be cleaner, IMO, not to be setting class member variables in this helper method if they aren\u0027t used anywhere else and we already have self.disabled_type.","commit_id":"411988fc4e122b6ed5e9286a7d81cda194b5a0a6"}],"nova/tests/unit/api/openstack/compute/test_flavors_extra_specs.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bb653dad2e953be83efec60796b29862c911b20d","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        fakes.stub_out_key_pair_funcs(self.stubs)"},{"line_number":73,"context_line":"        self.controller \u003d self.flavorextraspecs.FlavorExtraSpecsController()"},{"line_number":74,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":75,"context_line":"        objects.Flavor.get_by_flavor_id(ctxt, \u00271\u0027).destroy()"},{"line_number":76,"context_line":"        flavor \u003d objects.Flavor(context\u003dctxt, name\u003d\u00271\u0027, flavorid\u003d\u00271\u0027,"},{"line_number":77,"context_line":"                                memory_mb\u003d512, vcpus\u003d2, root_gb\u003d1,"},{"line_number":78,"context_line":"                                ephemeral_gb\u003d0, swap\u003d0, rxtx_factor\u003d1.0,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da0c15f0_d752f3dc","line":75,"range":{"start_line":75,"start_character":8,"end_line":75,"end_character":60},"updated":"2016-03-25 14:09:43.000000000","message":"Why do we need to delete the existing flavor and then recreate it?","commit_id":"411988fc4e122b6ed5e9286a7d81cda194b5a0a6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bb653dad2e953be83efec60796b29862c911b20d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                                vcpu_weight\u003d1, disabled\u003dFalse, is_public\u003dTrue,"},{"line_number":80,"context_line":"                                extra_specs\u003d{}, projects\u003d[])"},{"line_number":81,"context_line":"        flavor.create()"},{"line_number":82,"context_line":"        self.flavor \u003d flavor"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def test_index(self):"},{"line_number":85,"context_line":"        flavor \u003d dict(test_flavor.fake_flavor,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da0c15f0_575c2325","line":82,"range":{"start_line":82,"start_character":8,"end_line":82,"end_character":28},"updated":"2016-03-25 14:09:43.000000000","message":"This seems unnecessary, it\u0027s only used in one test case. Why don\u0027t we just do this work there?","commit_id":"411988fc4e122b6ed5e9286a7d81cda194b5a0a6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c786eb72598c7c94064c54dd1bfa2f3b49e8a8a0","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                              req, 1, body\u003dbody)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def test_create_flavor_db_duplicate(self):"},{"line_number":199,"context_line":"        self.flavor.extra_specs[\u0027key1\u0027] \u003d \u0027value1\u0027"},{"line_number":200,"context_line":"        self.flavor.save()"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        body \u003d {\"extra_specs\": {\"key1\": \"value1\"}}"},{"line_number":203,"context_line":"        req \u003d self._get_request(\u00271/os-extra_specs\u0027, use_admin_context\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da0c15f0_adf60cd5","line":200,"range":{"start_line":199,"start_character":8,"end_line":200,"end_character":26},"updated":"2016-03-25 14:47:47.000000000","message":"We don\u0027t even need this since we mock out save() below to raise the exception that results in the 409.","commit_id":"411988fc4e122b6ed5e9286a7d81cda194b5a0a6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bb653dad2e953be83efec60796b29862c911b20d","unresolved":false,"context_lines":[{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    @mock.patch(\u0027nova.objects.flavor._flavor_extra_specs_add\u0027)"},{"line_number":329,"context_line":"    def test_update_item_body_uri_mismatch(self, mock_add):"},{"line_number":330,"context_line":"        mock_add.side_efecft \u003d return_create_flavor_extra_specs"},{"line_number":331,"context_line":"        body \u003d {\"key1\": \"value1\"}"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        req \u003d self._get_request(\u00271/os-extra_specs/bad\u0027, use_admin_context\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da0c15f0_5781c349","line":330,"range":{"start_line":330,"start_character":17,"end_line":330,"end_character":28},"updated":"2016-03-25 14:09:43.000000000","message":"side_effect, so I guess this test is busted since it\u0027s passing?","commit_id":"411988fc4e122b6ed5e9286a7d81cda194b5a0a6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"94487a7813d347e0b814d1dbc0ee2d6947a560cf","unresolved":false,"context_lines":[{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    @mock.patch(\u0027nova.objects.flavor._flavor_extra_specs_add\u0027)"},{"line_number":329,"context_line":"    def test_update_item_body_uri_mismatch(self, mock_add):"},{"line_number":330,"context_line":"        mock_add.side_efecft \u003d return_create_flavor_extra_specs"},{"line_number":331,"context_line":"        body \u003d {\"key1\": \"value1\"}"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        req \u003d self._get_request(\u00271/os-extra_specs/bad\u0027, use_admin_context\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da0c15f0_12ae3985","line":330,"range":{"start_line":330,"start_character":17,"end_line":330,"end_character":28},"in_reply_to":"da0c15f0_5781c349","updated":"2016-03-25 14:34:14.000000000","message":"Oh we don\u0027t even need this, we don\u0027t get this far. The REST API validates that the \u0027id\u0027 is in the body, which it\u0027s not, since \u0027bad\u0027 isn\u0027t in body here.","commit_id":"411988fc4e122b6ed5e9286a7d81cda194b5a0a6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b3d78a1f99c171dbcd97a6264f1d076404844fa","unresolved":false,"context_lines":[{"line_number":257,"context_line":"            res_dict \u003d self.controller.create(req, 1, body\u003dbody)"},{"line_number":258,"context_line":"            self.assertEqual(\u0027value1\u0027, res_dict[\u0027extra_specs\u0027][key])"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    @mock.patch(\u0027nova.db.flavor_extra_specs_update_or_create\u0027)"},{"line_number":261,"context_line":"    def test_update_item(self, mock_add):"},{"line_number":262,"context_line":"        mock_add.side_effect \u003d return_create_flavor_extra_specs"},{"line_number":263,"context_line":"        body \u003d {\"key1\": \"value1\"}"}],"source_content_type":"text/x-python","patch_set":5,"id":"da0c15f0_081ba61c","line":260,"updated":"2016-03-25 15:01:38.000000000","message":"This is still using a low-level db routine.","commit_id":"6353db68c7537716fcef23aa263a0496abd27d07"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d17f158cd208dbdbefa40802c7cfb92e78223243","unresolved":false,"context_lines":[{"line_number":268,"context_line":""},{"line_number":269,"context_line":"        self.assertEqual(\u0027value1\u0027, res_dict[\u0027key1\u0027])"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    @mock.patch(\u0027nova.db.flavor_extra_specs_update_or_create\u0027)"},{"line_number":272,"context_line":"    def test_update_item_no_admin(self, mock_add):"},{"line_number":273,"context_line":"        mock_add.side_effect \u003d return_create_flavor_extra_specs"},{"line_number":274,"context_line":"        body \u003d {\"key1\": \"value1\"}"}],"source_content_type":"text/x-python","patch_set":5,"id":"da0c15f0_a83efab5","line":271,"updated":"2016-03-25 14:57:12.000000000","message":"We probably don\u0027t even get this far, but meh.","commit_id":"6353db68c7537716fcef23aa263a0496abd27d07"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d17f158cd208dbdbefa40802c7cfb92e78223243","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update,"},{"line_number":320,"context_line":"                          req, 1, \u0027bad\u0027, body\u003dbody)"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    @mock.patch(\u0027nova.objects.flavor._flavor_extra_specs_add\u0027)"},{"line_number":323,"context_line":"    def test_update_flavor_not_found(self, mock_add):"},{"line_number":324,"context_line":"        body \u003d {\"key1\": \"value1\"}"},{"line_number":325,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da0c15f0_e85f520c","line":322,"updated":"2016-03-25 14:57:12.000000000","message":"This is probably unnecessary since we\u0027re mocking save so we don\u0027t even get here.","commit_id":"6353db68c7537716fcef23aa263a0496abd27d07"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d17f158cd208dbdbefa40802c7cfb92e78223243","unresolved":false,"context_lines":[{"line_number":330,"context_line":"            self.assertRaises(webob.exc.HTTPNotFound, self.controller.update,"},{"line_number":331,"context_line":"                              req, 1, \u0027key1\u0027, body\u003dbody)"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"    @mock.patch(\u0027nova.objects.flavor._flavor_extra_specs_add\u0027)"},{"line_number":334,"context_line":"    def test_update_flavor_db_duplicate(self, mock_add):"},{"line_number":335,"context_line":"        body \u003d {\"key1\": \"value1\"}"},{"line_number":336,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da0c15f0_28a02af4","line":333,"updated":"2016-03-25 14:57:12.000000000","message":"ditto","commit_id":"6353db68c7537716fcef23aa263a0496abd27d07"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d17f158cd208dbdbefa40802c7cfb92e78223243","unresolved":false,"context_lines":[{"line_number":343,"context_line":"            self.assertRaises(webob.exc.HTTPConflict, self.controller.update,"},{"line_number":344,"context_line":"                              req, 1, \u0027key1\u0027, body\u003dbody)"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"    @mock.patch(\u0027nova.objects.flavor._flavor_extra_specs_add\u0027)"},{"line_number":347,"context_line":"    def test_update_really_long_integer_value(self, mock_add):"},{"line_number":348,"context_line":"        value \u003d 10 ** 1000"},{"line_number":349,"context_line":"        mock_add.side_effect \u003d return_create_flavor_extra_specs"}],"source_content_type":"text/x-python","patch_set":5,"id":"da0c15f0_a8ac3aee","line":346,"updated":"2016-03-25 14:57:12.000000000","message":"We probably don\u0027t get this far.","commit_id":"6353db68c7537716fcef23aa263a0496abd27d07"}]}
