)]}'
{"doc/source/coding.rst":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"3b98154254ccc219a1cbcd1c0d1d4465a291390c","unresolved":false,"context_lines":[{"line_number":105,"context_line":"- In functional tests, use demo_cloud for unprivileged access to cloud unless"},{"line_number":106,"context_line":"  absolutely necessary to use operator_cloud. The primary users of shade are"},{"line_number":107,"context_line":"  end users, with operators an advanced set of people who can do extra things."},{"line_number":108,"context_line":"  We want to make sure we don\u0027t accidentally break unprivileged users."}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_80061fcc","line":108,"updated":"2016-07-19 18:38:23.000000000","message":"I would love documentation on method of recording the cassettes so non-monty-taylor humans can also do this work as needed.","commit_id":"ac070abea2bd4769f5e0c474685524768ec4fa66"}],"shade/tests/cassettes/citycloud/test_compute/TestCompute/test_set_and_delete_metadata.yaml":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"9ac17b020f27df72c7d042e413cd628763736619","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"dada55a8_a5a3754e","updated":"2016-07-19 18:34:10.000000000","message":"Maybe openstack is a bit chatty?","commit_id":"ac070abea2bd4769f5e0c474685524768ec4fa66"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"e4abe88fb5c8284f266db0f580fefd47b9909b2a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"dada55a8_60edeb24","in_reply_to":"dada55a8_a5a3754e","updated":"2016-07-19 18:40:31.000000000","message":"ikr?","commit_id":"ac070abea2bd4769f5e0c474685524768ec4fa66"}],"shade/tests/functional/test_compute.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"9ac17b020f27df72c7d042e413cd628763736619","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        self.assertEqual(\u0027active\u0027, image[\u0027status\u0027])"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def test_set_and_delete_metadata(self):"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        self.addCleanup(self._cleanup_servers_and_volumes, self.server_name)"},{"line_number":225,"context_line":"        self.demo_cloud.create_server("},{"line_number":226,"context_line":"            name\u003dself.server_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_45ac3934","line":223,"updated":"2016-07-19 18:34:10.000000000","message":"NIT: unrelated whitespace change.","commit_id":"ac070abea2bd4769f5e0c474685524768ec4fa66"}],"shade/tests/functional/test_floating_ip_pool.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"9ac17b020f27df72c7d042e413cd628763736619","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Functional tests for floating IP pool resource (managed by nova)"},{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from testscenarios import load_tests_apply_scenarios as load_tests  # noqa"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from shade.tests.functional import base"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_a53ff5d4","line":22,"range":{"start_line":22,"start_character":68,"end_line":22,"end_character":74},"updated":"2016-07-19 18:34:10.000000000","message":"NIT: I think there is some magic that can be used to avoid needing to \"# noqa\" all of these lines, the same way we exempt the i18n stuff from the module import rule. No need to change this though unless there is another reason to reroll this patch.","commit_id":"ac070abea2bd4769f5e0c474685524768ec4fa66"}],"shade/tests/functional/test_inventory.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"9ac17b020f27df72c7d042e413cd628763736619","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        # is not allocated from devstack."},{"line_number":34,"context_line":"        self.inventory \u003d inventory.OpenStackInventory()"},{"line_number":35,"context_line":"        self.server_name \u003d \u0027test_inventory_server\u0027"},{"line_number":36,"context_line":"        self.nova \u003d self.demo_cloud.nova_client"},{"line_number":37,"context_line":"        self.flavor \u003d pick_flavor(self.nova.flavors.list())"},{"line_number":38,"context_line":"        if self.flavor is None:"},{"line_number":39,"context_line":"            self.assertTrue(False, \u0027no sensible flavor available\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_c5130965","line":36,"range":{"start_line":36,"start_character":20,"end_line":36,"end_character":47},"updated":"2016-07-19 18:34:10.000000000","message":"is there a reason to change from operator cloud to demo cloud? Should this have been rolled inot the previous change that used demo vs operator cloud?","commit_id":"ac070abea2bd4769f5e0c474685524768ec4fa66"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"e4abe88fb5c8284f266db0f580fefd47b9909b2a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        # is not allocated from devstack."},{"line_number":34,"context_line":"        self.inventory \u003d inventory.OpenStackInventory()"},{"line_number":35,"context_line":"        self.server_name \u003d \u0027test_inventory_server\u0027"},{"line_number":36,"context_line":"        self.nova \u003d self.demo_cloud.nova_client"},{"line_number":37,"context_line":"        self.flavor \u003d pick_flavor(self.nova.flavors.list())"},{"line_number":38,"context_line":"        if self.flavor is None:"},{"line_number":39,"context_line":"            self.assertTrue(False, \u0027no sensible flavor available\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_e0e39b03","line":36,"in_reply_to":"dada55a8_c5130965","updated":"2016-07-19 18:40:31.000000000","message":"So, going through the tests, I\u0027m either updating them to OperatorFunctionalTestCase as base classes, or swapping operator_cloud to demo_cloud if I can - but anything that uses operator_cloud needs _something_ done to it.\n\nNow, I could split this into two patches, one that introduces the OperatorFunctionalTestCase and one that does the betamax stuff ...","commit_id":"ac070abea2bd4769f5e0c474685524768ec4fa66"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"9ac17b020f27df72c7d042e413cd628763736619","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        if self.image is None:"},{"line_number":42,"context_line":"            self.assertTrue(False, \u0027no sensible image available\u0027)"},{"line_number":43,"context_line":"        self.addCleanup(self._cleanup_servers)"},{"line_number":44,"context_line":"        self.demo_cloud.create_server("},{"line_number":45,"context_line":"            name\u003dself.server_name, image\u003dself.image, flavor\u003dself.flavor,"},{"line_number":46,"context_line":"            wait\u003dTrue, auto_ip\u003dTrue)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_a516d552","line":44,"updated":"2016-07-19 18:34:10.000000000","message":"same as above","commit_id":"ac070abea2bd4769f5e0c474685524768ec4fa66"}],"shade/tests/functional/test_network.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"9ac17b020f27df72c7d042e413cd628763736619","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        self.assertFalse(net1[\u0027router:external\u0027])"},{"line_number":55,"context_line":"        self.assertTrue(net1[\u0027admin_state_up\u0027])"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_list_networks_filtered(self):"},{"line_number":58,"context_line":"        net1 \u003d self.demo_cloud.create_network(name\u003dself.network_name)"},{"line_number":59,"context_line":"        self.assertIsNotNone(net1)"},{"line_number":60,"context_line":"        net2 \u003d self.demo_cloud.create_network("},{"line_number":61,"context_line":"            name\u003dself.network_name + \u0027other\u0027)"},{"line_number":62,"context_line":"        self.assertIsNotNone(net2)"},{"line_number":63,"context_line":"        match \u003d self.demo_cloud.list_networks("},{"line_number":64,"context_line":"            filters\u003ddict(name\u003dself.network_name))"},{"line_number":65,"context_line":"        self.assertEqual(1, len(match))"},{"line_number":66,"context_line":"        self.assertEqual(net1[\u0027name\u0027], match[0][\u0027name\u0027])"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class TestAdminNetwork(base.OperatorFunctionalTestCase):"},{"line_number":70,"context_line":"    def setUp(self):"},{"line_number":71,"context_line":"        super(TestAdminNetwork, self).setUp()"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def test_create_network_advanced(self):"},{"line_number":74,"context_line":"        net1 \u003d self.operator_cloud.create_network("}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_003cefc6","line":71,"range":{"start_line":57,"start_character":0,"end_line":71,"end_character":45},"updated":"2016-07-19 18:34:10.000000000","message":"I am assuming this is because \"admin Network\" is not available on all clouds? should this have been reshuffled earlier in a patch chain?\n\nNo need to respin, just curious why changing this here.","commit_id":"ac070abea2bd4769f5e0c474685524768ec4fa66"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"e4abe88fb5c8284f266db0f580fefd47b9909b2a","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class TestAdminNetwork(base.OperatorFunctionalTestCase):"},{"line_number":70,"context_line":"    def setUp(self):"},{"line_number":71,"context_line":"        super(TestAdminNetwork, self).setUp()"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def test_create_network_advanced(self):"},{"line_number":74,"context_line":"        net1 \u003d self.operator_cloud.create_network("}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_e091db53","line":71,"in_reply_to":"dada55a8_003cefc6","updated":"2016-07-19 18:40:31.000000000","message":"Yeah - same as the reply on the previous comment. The introduction of OperatorFunctionalTestCase (which we need so that we can skipTest on clouds where we don\u0027t have an admin account) meant we had to poke at some of these.","commit_id":"ac070abea2bd4769f5e0c474685524768ec4fa66"}],"shade/tests/functional/test_port.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"9ac17b020f27df72c7d042e413cd628763736619","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        self.assertTrue(\u0027id\u0027 in port)"},{"line_number":88,"context_line":"        self.assertEqual(port.get(\u0027name\u0027), port_name)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        updated_port \u003d self.demo_cloud.get_port(name_or_id\u003dport[\u0027id\u0027])"},{"line_number":91,"context_line":"        # extra_dhcp_opts is added later by Neutron..."},{"line_number":92,"context_line":"        if \u0027extra_dhcp_opts\u0027 in updated_port and \u0027extra_dhcp_opts\u0027 not in port:"},{"line_number":93,"context_line":"            del updated_port[\u0027extra_dhcp_opts\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_00434f43","line":90,"range":{"start_line":90,"start_character":28,"end_line":90,"end_character":69},"updated":"2016-07-19 18:34:10.000000000","message":"see earlier comment on operator vs demo cloud question and should this have changed in the earlier patchset (applies to all here).","commit_id":"ac070abea2bd4769f5e0c474685524768ec4fa66"}]}
