)]}'
{"octavia_tempest_plugin/common/constants.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"da0ffad209fc556d8c3ece6cdaa4c8d85986931f","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"# Other constants"},{"line_number":86,"context_line":"ACTIVE \u003d \u0027ACTIVE\u0027"},{"line_number":87,"context_line":"PENDING_UPDATE \u003d \u0027PENDING_UPDATE\u0027"},{"line_number":88,"context_line":"ADMIN_STATE_UP_TRUE \u003d \u0027true\u0027"},{"line_number":89,"context_line":"ASC \u003d \u0027asc\u0027"},{"line_number":90,"context_line":"DELETED \u003d \u0027DELETED\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fce034c_aba773a7","line":87,"updated":"2019-04-16 07:32:22.000000000","message":"I commented on this in your other patch as well -- this section needs to be cleaned up... And either this CR or that one might conflict after the other merges?","commit_id":"03fe897e47f7fceab13e21cf5ab74f1ed96aa8a0"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"f4ee707b17aa355fa5c0993970cf83787b624ead","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"# Other constants"},{"line_number":86,"context_line":"ACTIVE \u003d \u0027ACTIVE\u0027"},{"line_number":87,"context_line":"PENDING_UPDATE \u003d \u0027PENDING_UPDATE\u0027"},{"line_number":88,"context_line":"ADMIN_STATE_UP_TRUE \u003d \u0027true\u0027"},{"line_number":89,"context_line":"ASC \u003d \u0027asc\u0027"},{"line_number":90,"context_line":"DELETED \u003d \u0027DELETED\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_7f92a94d","line":87,"in_reply_to":"3fce034c_aba773a7","updated":"2019-05-08 09:32:55.000000000","message":"Let\u0027s tentatively try this one first.","commit_id":"03fe897e47f7fceab13e21cf5ab74f1ed96aa8a0"}],"octavia_tempest_plugin/tests/spare_pool_scenario/v2/test_spare_pool.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"619830530f310e565b2d2cbfcb58ccf5e6b003aa","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @classmethod"},{"line_number":31,"context_line":"    def skip_checks(cls):"},{"line_number":32,"context_line":"        super(SparePoolTest, cls).skip_checks()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"},{"line_number":35,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_c02fe785","line":32,"updated":"2019-03-13 20:40:22.000000000","message":"This is an \"amphora provider\" specific test as well.","commit_id":"c99e7bf22bab59fb79817d35d249a9450d3871f8"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"49855fbff9d37c67a788e81f98dfb7e8807e6432","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @classmethod"},{"line_number":31,"context_line":"    def skip_checks(cls):"},{"line_number":32,"context_line":"        super(SparePoolTest, cls).skip_checks()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"},{"line_number":35,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_128f8075","line":32,"in_reply_to":"5fc1f717_c02fe785","updated":"2019-03-18 09:41:57.000000000","message":"Done","commit_id":"c99e7bf22bab59fb79817d35d249a9450d3871f8"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"619830530f310e565b2d2cbfcb58ccf5e6b003aa","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        super(SparePoolTest, cls).resource_setup()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @decorators.idempotent_id(\u00272ba3a2c2-de9d-4556-9535-cbe9209b4eaa\u0027)"},{"line_number":40,"context_line":"    def test_failover_to_spare_amp(self):"},{"line_number":41,"context_line":"        \"\"\"Tests failover to amphora in spare pool."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        * Check amphora spare pool availability"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_808a3f67","line":40,"updated":"2019-03-13 20:40:22.000000000","message":"We might want to clarify that this test is using the HM failover and not the failover API.","commit_id":"c99e7bf22bab59fb79817d35d249a9450d3871f8"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"49855fbff9d37c67a788e81f98dfb7e8807e6432","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        super(SparePoolTest, cls).resource_setup()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @decorators.idempotent_id(\u00272ba3a2c2-de9d-4556-9535-cbe9209b4eaa\u0027)"},{"line_number":40,"context_line":"    def test_failover_to_spare_amp(self):"},{"line_number":41,"context_line":"        \"\"\"Tests failover to amphora in spare pool."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        * Check amphora spare pool availability"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_529988c1","line":40,"in_reply_to":"5fc1f717_808a3f67","updated":"2019-03-18 09:41:57.000000000","message":"Done","commit_id":"c99e7bf22bab59fb79817d35d249a9450d3871f8"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"619830530f310e565b2d2cbfcb58ccf5e6b003aa","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        self._setup_lb_network_kwargs(lb_kwargs, 4)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer(**lb_kwargs)"},{"line_number":64,"context_line":"        self.lb_id \u003d lb[const.ID]"},{"line_number":65,"context_line":"        self.addClassResourceCleanup(self.mem_lb_client.cleanup_loadbalancer,"},{"line_number":66,"context_line":"                                     self.lb_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_607713a2","line":63,"updated":"2019-03-13 20:40:22.000000000","message":"You could enhance this to check that the initial LB boot used the available spare by checking the amphora API. and checking AMP IDs.","commit_id":"c99e7bf22bab59fb79817d35d249a9450d3871f8"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"49855fbff9d37c67a788e81f98dfb7e8807e6432","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        self._setup_lb_network_kwargs(lb_kwargs, 4)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer(**lb_kwargs)"},{"line_number":64,"context_line":"        self.lb_id \u003d lb[const.ID]"},{"line_number":65,"context_line":"        self.addClassResourceCleanup(self.mem_lb_client.cleanup_loadbalancer,"},{"line_number":66,"context_line":"                                     self.lb_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_3b7b3e28","line":63,"in_reply_to":"5fc1f717_607713a2","updated":"2019-03-18 09:41:57.000000000","message":"Done","commit_id":"c99e7bf22bab59fb79817d35d249a9450d3871f8"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"da0ffad209fc556d8c3ece6cdaa4c8d85986931f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3fce034c_cb275f12","updated":"2019-04-16 07:32:22.000000000","message":"A whole lot of the code in this test is reused from others, around the setup of a default \"working\" LB with listener/pool/members and the webservers backing the members... Could this be decomposed/shared?","commit_id":"03fe897e47f7fceab13e21cf5ab74f1ed96aa8a0"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"f4ee707b17aa355fa5c0993970cf83787b624ead","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3fce034c_5431aeeb","in_reply_to":"3fce034c_cb275f12","updated":"2019-05-08 09:32:55.000000000","message":"It could and likely should. Question is: does that block this patch from merging now? Can we do it as a follow-up?","commit_id":"03fe897e47f7fceab13e21cf5ab74f1ed96aa8a0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"24774e14ec7ab840018366b6f499df2acbb3fd53","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    def skip_checks(cls):"},{"line_number":32,"context_line":"        super(SparePoolTest, cls).skip_checks()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        if CONF.load_balancer.provider not in [\u0027amphora\u0027, \u0027octavia\u0027]:"},{"line_number":35,"context_line":"            raise cls.skipException(\"Amphora tests require provider \u0027amphora\u0027 \""},{"line_number":36,"context_line":"                                    \"or \u0027octavia\u0027 (alias to \u0027amphora\u0027, \""},{"line_number":37,"context_line":"                                    \"deprecated) set\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_12b5f2ee","line":34,"updated":"2019-05-02 17:49:25.000000000","message":"Needs a tempest feature flag for \"spares enabled\".","commit_id":"03fe897e47f7fceab13e21cf5ab74f1ed96aa8a0"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"f4ee707b17aa355fa5c0993970cf83787b624ead","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    def skip_checks(cls):"},{"line_number":32,"context_line":"        super(SparePoolTest, cls).skip_checks()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        if CONF.load_balancer.provider not in [\u0027amphora\u0027, \u0027octavia\u0027]:"},{"line_number":35,"context_line":"            raise cls.skipException(\"Amphora tests require provider \u0027amphora\u0027 \""},{"line_number":36,"context_line":"                                    \"or \u0027octavia\u0027 (alias to \u0027amphora\u0027, \""},{"line_number":37,"context_line":"                                    \"deprecated) set\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_5f2b25ea","line":34,"in_reply_to":"dfbec78f_12b5f2ee","updated":"2019-05-08 09:32:55.000000000","message":"Done","commit_id":"03fe897e47f7fceab13e21cf5ab74f1ed96aa8a0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"da0ffad209fc556d8c3ece6cdaa4c8d85986931f","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            query_params\u003d\u0027{loadbalancer_id}\u003d{lb_id}\u0027.format("},{"line_number":99,"context_line":"                loadbalancer_id\u003dconst.LOADBALANCER_ID, lb_id\u003dself.lb_id))"},{"line_number":100,"context_line":"        self.assertTrue(any(s_amp[const.ID] \u003d\u003d amp[0][const.ID]"},{"line_number":101,"context_line":"                            for s_amp in spare_amps))"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        listener_name \u003d data_utils.rand_name(\"lb_member_listener1_spare\")"},{"line_number":104,"context_line":"        listener_kwargs \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fce034c_6be0abcd","line":101,"updated":"2019-04-16 07:32:22.000000000","message":"So, if these tests are run in parallel mode (are they by default? probably not?) then it\u0027s possible the amps that were detected as spares earlier could be used for other LBs and this could get different ones, causing the test to fail. Do we already have guidance that this test suite *MUST* be run serially?","commit_id":"03fe897e47f7fceab13e21cf5ab74f1ed96aa8a0"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"f4ee707b17aa355fa5c0993970cf83787b624ead","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            query_params\u003d\u0027{loadbalancer_id}\u003d{lb_id}\u0027.format("},{"line_number":99,"context_line":"                loadbalancer_id\u003dconst.LOADBALANCER_ID, lb_id\u003dself.lb_id))"},{"line_number":100,"context_line":"        self.assertTrue(any(s_amp[const.ID] \u003d\u003d amp[0][const.ID]"},{"line_number":101,"context_line":"                            for s_amp in spare_amps))"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        listener_name \u003d data_utils.rand_name(\"lb_member_listener1_spare\")"},{"line_number":104,"context_line":"        listener_kwargs \u003d {"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_822b8280","line":101,"in_reply_to":"3fce034c_6be0abcd","updated":"2019-05-08 09:32:55.000000000","message":"Done","commit_id":"03fe897e47f7fceab13e21cf5ab74f1ed96aa8a0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"da0ffad209fc556d8c3ece6cdaa4c8d85986931f","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        # Send some traffic"},{"line_number":223,"context_line":"        self.check_members_balanced(self.lb_vip_address)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"        # Confirm one of spare amphorae was used"},{"line_number":226,"context_line":"        amp \u003d self.os_admin.amphora_client.list_amphorae("},{"line_number":227,"context_line":"            query_params\u003d\u0027{loadbalancer_id}\u003d{lb_id}\u0027.format("},{"line_number":228,"context_line":"                loadbalancer_id\u003dconst.LOADBALANCER_ID, lb_id\u003dself.lb_id))"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fce034c_4b14cfa0","line":225,"updated":"2019-04-16 07:32:22.000000000","message":"Same is true here -- the environment you\u0027re testing in must be static for this to work. Not only do the tests need to run serially, it\u0027s best if the environment isn\u0027t being used at all. This means it\u0027s going to be really hard to run this in production, for example after a deployment.\n\nI wonder if it would be possible to check to see if the spares are at least different than the first time they were checked, if they don\u0027t match here? :/","commit_id":"03fe897e47f7fceab13e21cf5ab74f1ed96aa8a0"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"f4ee707b17aa355fa5c0993970cf83787b624ead","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        # Send some traffic"},{"line_number":223,"context_line":"        self.check_members_balanced(self.lb_vip_address)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"        # Confirm one of spare amphorae was used"},{"line_number":226,"context_line":"        amp \u003d self.os_admin.amphora_client.list_amphorae("},{"line_number":227,"context_line":"            query_params\u003d\u0027{loadbalancer_id}\u003d{lb_id}\u0027.format("},{"line_number":228,"context_line":"                loadbalancer_id\u003dconst.LOADBALANCER_ID, lb_id\u003dself.lb_id))"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfbec78f_2222d6a5","line":225,"in_reply_to":"3fce034c_4b14cfa0","updated":"2019-05-08 09:32:55.000000000","message":"Done","commit_id":"03fe897e47f7fceab13e21cf5ab74f1ed96aa8a0"}],"zuul.d/projects.yaml":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"9104c63b07c4abec726d5b3fcc3ff3feefde777d","unresolved":false,"context_lines":[{"line_number":12,"context_line":"        - octavia-v2-dsvm-noop-py2-api-stable-rocky"},{"line_number":13,"context_line":"        - octavia-v2-dsvm-noop-py2-api-stable-queens"},{"line_number":14,"context_line":"        - octavia-v2-dsvm-scenario"},{"line_number":15,"context_line":"        - octavia-v2-dsvm-spare-pool"},{"line_number":16,"context_line":"        - octavia-v2-dsvm-py2-scenario"},{"line_number":17,"context_line":"        - octavia-v2-dsvm-py2-scenario-stable-rocky"},{"line_number":18,"context_line":"        - octavia-v2-dsvm-py2-scenario-stable-queens"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"9fdfeff1_743f62b5","line":15,"updated":"2019-02-05 21:49:35.000000000","message":"These should probably be non-voting initially.","commit_id":"7d8aea7d8ef7bf025c569af7bca2fa84f7aa206f"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"ad1656eb5460cc4c579004aab281e0226988e3ad","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Note: Some official OpenStack wide jobs are still defined in the"},{"line_number":2,"context_line":"#       project-config repository"},{"line_number":3,"context_line":"- project:"},{"line_number":4,"context_line":"    templates:"},{"line_number":5,"context_line":"      - check-requirements"},{"line_number":6,"context_line":"      - publish-openstack-docs-pti"},{"line_number":7,"context_line":"      - tempest-plugin-jobs"},{"line_number":8,"context_line":"    check:"},{"line_number":9,"context_line":"      jobs:"},{"line_number":10,"context_line":"        - octavia-v2-dsvm-noop-api"},{"line_number":11,"context_line":"        - octavia-v2-dsvm-noop-py2-api"},{"line_number":12,"context_line":"        - octavia-v2-dsvm-noop-py2-api-stable-rocky"},{"line_number":13,"context_line":"        - octavia-v2-dsvm-noop-py2-api-stable-queens"},{"line_number":14,"context_line":"        - octavia-v2-dsvm-scenario"},{"line_number":15,"context_line":"        - octavia-v2-dsvm-py2-scenario"},{"line_number":16,"context_line":"        - octavia-v2-dsvm-py2-scenario-stable-rocky"},{"line_number":17,"context_line":"        - octavia-v2-dsvm-py2-scenario-stable-queens"},{"line_number":18,"context_line":"        - octavia-v2-dsvm-scenario-centos-7:"},{"line_number":19,"context_line":"            voting: false"},{"line_number":20,"context_line":"        - octavia-v2-dsvm-scenario-ubuntu-bionic:"},{"line_number":21,"context_line":"            voting: false"},{"line_number":22,"context_line":"        - octavia-v2-dsvm-scenario-two-node:"},{"line_number":23,"context_line":"            voting: false"},{"line_number":24,"context_line":"        - octavia-v2-dsvm-py2-scenario-two-node:"},{"line_number":25,"context_line":"            voting: false"},{"line_number":26,"context_line":"        - octavia-v2-dsvm-tls-barbican:"},{"line_number":27,"context_line":"            voting: false"},{"line_number":28,"context_line":"        - octavia-v2-dsvm-spare-pool:"},{"line_number":29,"context_line":"            voting: false"},{"line_number":30,"context_line":"        - octavia-v2-dsvm-spare-pool-stable-stein:"},{"line_number":31,"context_line":"            voting: false"},{"line_number":32,"context_line":"        - octavia-v2-dsvm-py2-spare-pool:"},{"line_number":33,"context_line":"            voting: false"},{"line_number":34,"context_line":"        - octavia-v2-dsvm-py2-spare-pool-stable/rocky:"},{"line_number":35,"context_line":"            voting: false"},{"line_number":36,"context_line":"        - octavia-v2-dsvm-py2-spare-pool-stable/queens:"},{"line_number":37,"context_line":"            voting: false"},{"line_number":38,"context_line":"    gate:"},{"line_number":39,"context_line":"      queue: octavia"},{"line_number":40,"context_line":"      jobs:"},{"line_number":41,"context_line":"        - octavia-v2-dsvm-noop-api"},{"line_number":42,"context_line":"        - octavia-v2-dsvm-noop-py2-api"},{"line_number":43,"context_line":"        - octavia-v2-dsvm-noop-py2-api-stable-rocky"},{"line_number":44,"context_line":"        - octavia-v2-dsvm-noop-py2-api-stable-queens"},{"line_number":45,"context_line":"        - octavia-v2-dsvm-scenario"},{"line_number":46,"context_line":"        - octavia-v2-dsvm-py2-scenario"},{"line_number":47,"context_line":"        - octavia-v2-dsvm-py2-scenario-stable-rocky"},{"line_number":48,"context_line":"        - octavia-v2-dsvm-py2-scenario-stable-queens"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"5fc1f717_1251ea36","line":48,"range":{"start_line":3,"start_character":2,"end_line":48,"end_character":0},"updated":"2019-04-05 21:04:45.000000000","message":"Job octavia-v2-dsvm-py2-spare-pool-stable/rocky not defined","commit_id":"98481e5a53fdbf70ef97632bf2996f3fe0e0baee"}]}
