)]}'
{"kuryr_tempest_plugin/tests/scenario/base.py":[{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"5dfacc12b6e876774ec7c417f851889c413581dd","unresolved":false,"context_lines":[{"line_number":959,"context_line":"                if kuryr_pod_name.startswith(KURYR_CONTROLLER):"},{"line_number":960,"context_line":"                    return kuryr_pod_name"},{"line_number":961,"context_line":""},{"line_number":962,"context_line":"    def restart_kuryr_controller_pod(self, kuryr_pod_name):"},{"line_number":963,"context_line":"        system_namespace \u003d CONF.kuryr_kubernetes.kube_system_namespace"},{"line_number":964,"context_line":"        self.delete_pod("},{"line_number":965,"context_line":"            pod_name\u003dkuryr_pod_name,"},{"line_number":966,"context_line":"            body\u003d{\"kind\": \"DeleteOptions\","},{"line_number":967,"context_line":"                  \"apiVersion\": \"v1\","},{"line_number":968,"context_line":"                  \"gracePeriodSeconds\": 0},"},{"line_number":969,"context_line":"            namespace\u003dsystem_namespace)"},{"line_number":970,"context_line":""},{"line_number":971,"context_line":"    def restart_kuryr_controller(self):"},{"line_number":972,"context_line":"        system_namespace \u003d CONF.kuryr_kubernetes.kube_system_namespace"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_41215f9d","line":969,"range":{"start_line":962,"start_character":0,"end_line":969,"end_character":39},"updated":"2019-08-22 07:50:55.000000000","message":"exactly the same as the next function","commit_id":"7576599c581c5ea211037da08949038a2bb79b9f"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"392b570a43bdcd1f1c3e0fc403b6e35a09c45bd2","unresolved":false,"context_lines":[{"line_number":959,"context_line":"                if kuryr_pod_name.startswith(KURYR_CONTROLLER):"},{"line_number":960,"context_line":"                    return kuryr_pod_name"},{"line_number":961,"context_line":""},{"line_number":962,"context_line":"    def restart_kuryr_controller_pod(self, kuryr_pod_name):"},{"line_number":963,"context_line":"        system_namespace \u003d CONF.kuryr_kubernetes.kube_system_namespace"},{"line_number":964,"context_line":"        self.delete_pod("},{"line_number":965,"context_line":"            pod_name\u003dkuryr_pod_name,"},{"line_number":966,"context_line":"            body\u003d{\"kind\": \"DeleteOptions\","},{"line_number":967,"context_line":"                  \"apiVersion\": \"v1\","},{"line_number":968,"context_line":"                  \"gracePeriodSeconds\": 0},"},{"line_number":969,"context_line":"            namespace\u003dsystem_namespace)"},{"line_number":970,"context_line":""},{"line_number":971,"context_line":"    def restart_kuryr_controller(self):"},{"line_number":972,"context_line":"        system_namespace \u003d CONF.kuryr_kubernetes.kube_system_namespace"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_7d707ba5","line":969,"range":{"start_line":962,"start_character":0,"end_line":969,"end_character":39},"in_reply_to":"7faddb67_41215f9d","updated":"2019-08-27 05:49:39.000000000","message":"It\u0027s similar but not the same.\nThis one is to restart a specific pod. \nThe other one restart all the kuryr controller pods.","commit_id":"7576599c581c5ea211037da08949038a2bb79b9f"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"4ff7f8e9612adb524833fadccdb8cc7081de77bc","unresolved":false,"context_lines":[{"line_number":950,"context_line":""},{"line_number":951,"context_line":"        return port_pool_dict"},{"line_number":952,"context_line":""},{"line_number":953,"context_line":"    def get_kuryr_controller_pod(self, node):"},{"line_number":954,"context_line":"        system_namespace \u003d CONF.kuryr_kubernetes.kube_system_namespace"},{"line_number":955,"context_line":"        for kuryr_pod_name in self.get_controller_pod_names():"},{"line_number":956,"context_line":"            if self.get_pod_node_name(kuryr_pod_name,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_a73bc0ce","line":953,"range":{"start_line":953,"start_character":4,"end_line":953,"end_character":45},"updated":"2019-09-04 07:40:13.000000000","message":"get_kuryr_controller_at_node instead?","commit_id":"c3725582fb944641af272ae0d8441f87c0970a97"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"d3b9e891423ce9fb911ce2d08c156b94ef9ca522","unresolved":false,"context_lines":[{"line_number":950,"context_line":""},{"line_number":951,"context_line":"        return port_pool_dict"},{"line_number":952,"context_line":""},{"line_number":953,"context_line":"    def get_kuryr_controller_pod(self, node):"},{"line_number":954,"context_line":"        system_namespace \u003d CONF.kuryr_kubernetes.kube_system_namespace"},{"line_number":955,"context_line":"        for kuryr_pod_name in self.get_controller_pod_names():"},{"line_number":956,"context_line":"            if self.get_pod_node_name(kuryr_pod_name,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_b2da20e6","line":953,"range":{"start_line":953,"start_character":4,"end_line":953,"end_character":45},"in_reply_to":"7faddb67_a73bc0ce","updated":"2019-09-04 11:47:12.000000000","message":"Done","commit_id":"c3725582fb944641af272ae0d8441f87c0970a97"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"4ff7f8e9612adb524833fadccdb8cc7081de77bc","unresolved":false,"context_lines":[{"line_number":959,"context_line":""},{"line_number":960,"context_line":"    def restart_kuryr_controller_pod(self, kuryr_pod_name):"},{"line_number":961,"context_line":"        system_namespace \u003d CONF.kuryr_kubernetes.kube_system_namespace"},{"line_number":962,"context_line":"        self.delete_pod("},{"line_number":963,"context_line":"            pod_name\u003dkuryr_pod_name,"},{"line_number":964,"context_line":"            body\u003d{\"kind\": \"DeleteOptions\","},{"line_number":965,"context_line":"                  \"apiVersion\": \"v1\","},{"line_number":966,"context_line":"                  \"gracePeriodSeconds\": 0},"},{"line_number":967,"context_line":"            namespace\u003dsystem_namespace)"},{"line_number":968,"context_line":""},{"line_number":969,"context_line":"    def restart_kuryr_controller(self):"},{"line_number":970,"context_line":"        system_namespace \u003d CONF.kuryr_kubernetes.kube_system_namespace"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_c73b5cc5","line":967,"range":{"start_line":962,"start_character":0,"end_line":967,"end_character":39},"updated":"2019-09-04 07:40:13.000000000","message":"as this is exactly the same as in next function, perhaps worth to split it to a different function (def _delete_pod(...)) and use them in both.\n\nIn addition, perhaps worh doing this function generic, restart_pod, and make the namespace an argument","commit_id":"c3725582fb944641af272ae0d8441f87c0970a97"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"d3b9e891423ce9fb911ce2d08c156b94ef9ca522","unresolved":false,"context_lines":[{"line_number":959,"context_line":""},{"line_number":960,"context_line":"    def restart_kuryr_controller_pod(self, kuryr_pod_name):"},{"line_number":961,"context_line":"        system_namespace \u003d CONF.kuryr_kubernetes.kube_system_namespace"},{"line_number":962,"context_line":"        self.delete_pod("},{"line_number":963,"context_line":"            pod_name\u003dkuryr_pod_name,"},{"line_number":964,"context_line":"            body\u003d{\"kind\": \"DeleteOptions\","},{"line_number":965,"context_line":"                  \"apiVersion\": \"v1\","},{"line_number":966,"context_line":"                  \"gracePeriodSeconds\": 0},"},{"line_number":967,"context_line":"            namespace\u003dsystem_namespace)"},{"line_number":968,"context_line":""},{"line_number":969,"context_line":"    def restart_kuryr_controller(self):"},{"line_number":970,"context_line":"        system_namespace \u003d CONF.kuryr_kubernetes.kube_system_namespace"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_cd929d9f","line":967,"range":{"start_line":962,"start_character":0,"end_line":967,"end_character":39},"in_reply_to":"7faddb67_c73b5cc5","updated":"2019-09-04 11:47:12.000000000","message":"Not sure about restart_pod but I\u0027ll add the _delete_pod","commit_id":"c3725582fb944641af272ae0d8441f87c0970a97"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"4ff7f8e9612adb524833fadccdb8cc7081de77bc","unresolved":false,"context_lines":[{"line_number":1023,"context_line":"        pod_name_list.extend((pod1_name, pod2_name))"},{"line_number":1024,"context_line":"        return pod_name_list"},{"line_number":1025,"context_line":""},{"line_number":1026,"context_line":"    def restore_security_group_rules("},{"line_number":1027,"context_line":"            self, security_group_id, original_sg_rules):"},{"line_number":1028,"context_line":"        not_allowed_in_sg \u003d (\u0027id\u0027,"},{"line_number":1029,"context_line":"                             \u0027revision_number\u0027,"},{"line_number":1030,"context_line":"                             \u0027created_at\u0027,"},{"line_number":1031,"context_line":"                             \u0027updated_at\u0027)"},{"line_number":1032,"context_line":"        sec_grp_client \u003d self.admin_manager.security_group_rules_client"},{"line_number":1033,"context_line":"        rules \u003d sec_grp_client.list_security_group_rules("},{"line_number":1034,"context_line":"            security_group_id\u003dsecurity_group_id)[\u0027security_group_rules\u0027]"},{"line_number":1035,"context_line":"        for rule in rules:"},{"line_number":1036,"context_line":"            sec_grp_client.delete_security_group_rule(rule[\u0027id\u0027])"},{"line_number":1037,"context_line":""},{"line_number":1038,"context_line":"        for rule in original_sg_rules:"},{"line_number":1039,"context_line":"            for (key, value) in rule.items():"},{"line_number":1040,"context_line":"                if not value or key in not_allowed_in_sg:"},{"line_number":1041,"context_line":"                    rule.pop(key, None)"},{"line_number":1042,"context_line":"            sec_grp_client.create_security_group_rule(**rule)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_e76bf8b5","line":1042,"range":{"start_line":1026,"start_character":0,"end_line":1042,"end_character":61},"updated":"2019-09-04 07:40:13.000000000","message":"this looks more like \u0027utils\u0027 type of function, rather than base","commit_id":"c3725582fb944641af272ae0d8441f87c0970a97"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"d3b9e891423ce9fb911ce2d08c156b94ef9ca522","unresolved":false,"context_lines":[{"line_number":1023,"context_line":"        pod_name_list.extend((pod1_name, pod2_name))"},{"line_number":1024,"context_line":"        return pod_name_list"},{"line_number":1025,"context_line":""},{"line_number":1026,"context_line":"    def restore_security_group_rules("},{"line_number":1027,"context_line":"            self, security_group_id, original_sg_rules):"},{"line_number":1028,"context_line":"        not_allowed_in_sg \u003d (\u0027id\u0027,"},{"line_number":1029,"context_line":"                             \u0027revision_number\u0027,"},{"line_number":1030,"context_line":"                             \u0027created_at\u0027,"},{"line_number":1031,"context_line":"                             \u0027updated_at\u0027)"},{"line_number":1032,"context_line":"        sec_grp_client \u003d self.admin_manager.security_group_rules_client"},{"line_number":1033,"context_line":"        rules \u003d sec_grp_client.list_security_group_rules("},{"line_number":1034,"context_line":"            security_group_id\u003dsecurity_group_id)[\u0027security_group_rules\u0027]"},{"line_number":1035,"context_line":"        for rule in rules:"},{"line_number":1036,"context_line":"            sec_grp_client.delete_security_group_rule(rule[\u0027id\u0027])"},{"line_number":1037,"context_line":""},{"line_number":1038,"context_line":"        for rule in original_sg_rules:"},{"line_number":1039,"context_line":"            for (key, value) in rule.items():"},{"line_number":1040,"context_line":"                if not value or key in not_allowed_in_sg:"},{"line_number":1041,"context_line":"                    rule.pop(key, None)"},{"line_number":1042,"context_line":"            sec_grp_client.create_security_group_rule(**rule)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_98ddc56e","line":1042,"range":{"start_line":1026,"start_character":0,"end_line":1042,"end_character":61},"in_reply_to":"7faddb67_e76bf8b5","updated":"2019-09-04 11:47:12.000000000","message":"If it\u0027s something that you think is important I can move it in a following patch (maybe with other functions as well).","commit_id":"c3725582fb944641af272ae0d8441f87c0970a97"}],"kuryr_tempest_plugin/tests/scenario/test_ha.py":[{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"8bf409ed9afdcff8722dbf194d9daf4ceefb5f9f","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        annotation \u003d self.get_kuryr_leader_annotation()"},{"line_number":145,"context_line":"        self.assertIsNotNone(annotation)"},{"line_number":146,"context_line":"        leader \u003d annotation[\u0027holderIdentity\u0027]"},{"line_number":147,"context_line":"        return leader !\u003d self.original_leader"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_service_controller_transition(self):"},{"line_number":150,"context_line":"        controller_deployment \u003d ("}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_1d37abe5","line":147,"range":{"start_line":147,"start_character":8,"end_line":147,"end_character":45},"updated":"2019-09-02 08:26:51.000000000","message":"what if several tests run concurrently? perhaps safer to pass  the original_leader as a parameter instead of having a global var","commit_id":"3f2f052afe1e20471afacd5e172f083c91c37739"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"b488356eab1eab8577504407aa6972c68eaf37b8","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        annotation \u003d self.get_kuryr_leader_annotation()"},{"line_number":145,"context_line":"        self.assertIsNotNone(annotation)"},{"line_number":146,"context_line":"        leader \u003d annotation[\u0027holderIdentity\u0027]"},{"line_number":147,"context_line":"        return leader !\u003d self.original_leader"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def test_service_controller_transition(self):"},{"line_number":150,"context_line":"        controller_deployment \u003d ("}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_e06ea262","line":147,"range":{"start_line":147,"start_character":8,"end_line":147,"end_character":45},"in_reply_to":"7faddb67_1d37abe5","updated":"2019-09-02 10:20:54.000000000","message":"As for running tests concurrently - it\u0027s a good comment. I\u0027ll  have to run it in serial.\nI\u0027ll use a parameter","commit_id":"3f2f052afe1e20471afacd5e172f083c91c37739"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"8bf409ed9afdcff8722dbf194d9daf4ceefb5f9f","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        # Scale to 2 replicas"},{"line_number":160,"context_line":"        self.scale_controller_deployment(2)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        # Create a new service and check connectivity"},{"line_number":163,"context_line":"        self.create_setup_for_service_test()"},{"line_number":164,"context_line":"        first_service_ip \u003d self.service_ip"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        # Get current leader annotation"},{"line_number":167,"context_line":"        annotation \u003d self.get_kuryr_leader_annotation()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_3d51470e","line":164,"range":{"start_line":162,"start_character":0,"end_line":164,"end_character":42},"updated":"2019-09-02 08:26:51.000000000","message":"why using services instead of pods?","commit_id":"3f2f052afe1e20471afacd5e172f083c91c37739"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"b488356eab1eab8577504407aa6972c68eaf37b8","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        # Scale to 2 replicas"},{"line_number":160,"context_line":"        self.scale_controller_deployment(2)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        # Create a new service and check connectivity"},{"line_number":163,"context_line":"        self.create_setup_for_service_test()"},{"line_number":164,"context_line":"        first_service_ip \u003d self.service_ip"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        # Get current leader annotation"},{"line_number":167,"context_line":"        annotation \u003d self.get_kuryr_leader_annotation()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_407e961b","line":164,"range":{"start_line":162,"start_character":0,"end_line":164,"end_character":42},"in_reply_to":"7faddb67_3d51470e","updated":"2019-09-02 10:20:54.000000000","message":"This way we ensure both services and pods are unaffected.","commit_id":"3f2f052afe1e20471afacd5e172f083c91c37739"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"8bf409ed9afdcff8722dbf194d9daf4ceefb5f9f","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        non_leader_ip \u003d self.get_node_ip(nodes.pop())"},{"line_number":174,"context_line":"        self.assertIsNotNone(non_leader_ip)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        # Get the current security group of the opesnhift LoadBalancer"},{"line_number":177,"context_line":"        api_service_ip \u003d self.get_service_ip(\u0027kubernetes\u0027)"},{"line_number":178,"context_line":"        ports \u003d self.admin_manager.ports_client.list_ports()"},{"line_number":179,"context_line":"        api_security_group_id \u003d [port[\u0027security_groups\u0027][0] for port in ports["},{"line_number":180,"context_line":"            \u0027ports\u0027] if port[\u0027fixed_ips\u0027][0]["},{"line_number":181,"context_line":"            \u0027ip_address\u0027] \u003d\u003d api_service_ip][0]"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        # Block connectivity of the openshift LB from the"},{"line_number":184,"context_line":"        # exisisting controller node"},{"line_number":185,"context_line":"        sec_grp_client \u003d self.admin_manager.security_group_rules_client"},{"line_number":186,"context_line":"        original_sg_rules \u003d sec_grp_client.list_security_group_rules("},{"line_number":187,"context_line":"            security_group_id\u003dapi_security_group_id)[\u0027security_group_rules\u0027]"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        self.addCleanup("},{"line_number":190,"context_line":"            self.restore_security_group_rules, api_security_group_id,"},{"line_number":191,"context_line":"            original_sg_rules)"},{"line_number":192,"context_line":"        sg_rules_to_remove \u003d [rule[\u0027id\u0027] for rule in original_sg_rules if rule["},{"line_number":193,"context_line":"            \u0027port_range_max\u0027] \u003d\u003d 443]"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        sg_rules_client \u003d self.admin_manager.security_group_rules_client"},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_1d932ba5","line":193,"range":{"start_line":176,"start_character":0,"end_line":193,"end_character":37},"updated":"2019-09-02 08:26:51.000000000","message":"why doing it this way? this may affect concurrent tests. Plus, if you remove that rule on the loadbalancers... all the traffic will be block, right? you will only allow traffic from kuryr-controller (the non leader) but what about the other calls to the API? such as the kuryr-cnis?","commit_id":"3f2f052afe1e20471afacd5e172f083c91c37739"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"b488356eab1eab8577504407aa6972c68eaf37b8","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        non_leader_ip \u003d self.get_node_ip(nodes.pop())"},{"line_number":174,"context_line":"        self.assertIsNotNone(non_leader_ip)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        # Get the current security group of the opesnhift LoadBalancer"},{"line_number":177,"context_line":"        api_service_ip \u003d self.get_service_ip(\u0027kubernetes\u0027)"},{"line_number":178,"context_line":"        ports \u003d self.admin_manager.ports_client.list_ports()"},{"line_number":179,"context_line":"        api_security_group_id \u003d [port[\u0027security_groups\u0027][0] for port in ports["},{"line_number":180,"context_line":"            \u0027ports\u0027] if port[\u0027fixed_ips\u0027][0]["},{"line_number":181,"context_line":"            \u0027ip_address\u0027] \u003d\u003d api_service_ip][0]"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        # Block connectivity of the openshift LB from the"},{"line_number":184,"context_line":"        # exisisting controller node"},{"line_number":185,"context_line":"        sec_grp_client \u003d self.admin_manager.security_group_rules_client"},{"line_number":186,"context_line":"        original_sg_rules \u003d sec_grp_client.list_security_group_rules("},{"line_number":187,"context_line":"            security_group_id\u003dapi_security_group_id)[\u0027security_group_rules\u0027]"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        self.addCleanup("},{"line_number":190,"context_line":"            self.restore_security_group_rules, api_security_group_id,"},{"line_number":191,"context_line":"            original_sg_rules)"},{"line_number":192,"context_line":"        sg_rules_to_remove \u003d [rule[\u0027id\u0027] for rule in original_sg_rules if rule["},{"line_number":193,"context_line":"            \u0027port_range_max\u0027] \u003d\u003d 443]"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        sg_rules_client \u003d self.admin_manager.security_group_rules_client"},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_20c7da47","line":193,"range":{"start_line":176,"start_character":0,"end_line":193,"end_character":37},"in_reply_to":"7faddb67_1d932ba5","updated":"2019-09-02 10:20:54.000000000","message":"So it\u0027s the way to make a transition and when it\u0027s done I restore to the previous state so all the traffic should be ok then.","commit_id":"3f2f052afe1e20471afacd5e172f083c91c37739"}]}
