)]}'
{"optional-requirements.txt":[{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"5dd61d982ebe3a2f18155f16f47f82e8c9259e3a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"#  - package doesn\u0027t have releases"},{"line_number":8,"context_line":"# If these rules do not relate to your package, feel free to propose it as main"},{"line_number":9,"context_line":"# requirement to Rally (requirements.txt file)."},{"line_number":10,"context_line":"python-k8sclient\u003e\u003d0.2.0                                # Apache Software License"}],"source_content_type":"text/plain","patch_set":10,"id":"7a77a97e_b4336761","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":24},"updated":"2016-11-17 13:34:18.000000000","message":"per gitter discussion python-k8sclient will go to requirements.txt","commit_id":"84b5790f959db3da5d2b7ff02e593054706c6a40"}],"rally-jobs/rally-magnum.yaml":[{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"d51fa6cecc6f4e57f3b2e8501162559c610fd3bb","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        failure_rate:"},{"line_number":49,"context_line":"          max: 0"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"  MagnumClusters.create_and_list_clusters:"},{"line_number":52,"context_line":"    -"},{"line_number":53,"context_line":"      args:"},{"line_number":54,"context_line":"        node_count: 1"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"1a6eadb0_b964d749","line":51,"updated":"2016-12-12 15:44:10.000000000","message":"IMO we can have only one scenario that creates a cluster. We can\u0027t afford to have 4 magnum clusters in one devstack VM. One create_and_list_pods scenario is enough.","commit_id":"41cbb28a1471a1e84125c75b15f91960cc8a8714"},{"author":{"_account_id":9577,"name":"Winnie Tsang","email":"wtsang@us.ibm.com","username":"wtsang"},"change_message_id":"c0e8976bcce26866c2482bc779b284ecacb0de4d","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        failure_rate:"},{"line_number":49,"context_line":"          max: 0"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"  MagnumClusters.create_and_list_clusters:"},{"line_number":52,"context_line":"    -"},{"line_number":53,"context_line":"      args:"},{"line_number":54,"context_line":"        node_count: 1"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"1a6eadb0_f4f2c46e","line":51,"in_reply_to":"1a6eadb0_b964d749","updated":"2016-12-12 23:49:34.000000000","message":"ok, I will remove all the create cluster and create pod scenarios from the rally job. And only leave create rc scenario in there.","commit_id":"41cbb28a1471a1e84125c75b15f91960cc8a8714"},{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"af3f0d3fe934aba3728494ac2772be5c47844299","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        failure_rate:"},{"line_number":49,"context_line":"          max: 0"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"  MagnumClusters.create_and_list_clusters:"},{"line_number":52,"context_line":"    -"},{"line_number":53,"context_line":"      args:"},{"line_number":54,"context_line":"        node_count: 1"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"1a6eadb0_01096d31","line":51,"range":{"start_line":51,"start_character":2,"end_line":51,"end_character":42},"updated":"2016-12-14 12:55:52.000000000","message":"Try to remove this scenario","commit_id":"c0968b0eb99a575a09fb7ed9fa47eb9f7b767120"},{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"af3f0d3fe934aba3728494ac2772be5c47844299","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        failure_rate:"},{"line_number":76,"context_line":"          max: 0"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"  K8sPods.create_and_list_rcs:"},{"line_number":79,"context_line":"    -"},{"line_number":80,"context_line":"      args:"},{"line_number":81,"context_line":"        manifest: \"~/.rally/extra/rc_nginx.yaml.k8s\""}],"source_content_type":"text/x-yaml","patch_set":18,"id":"1a6eadb0_9c2a407d","line":78,"range":{"start_line":78,"start_character":2,"end_line":78,"end_character":30},"updated":"2016-12-14 12:55:52.000000000","message":"And keep only this one. I don\u0027t think we can handle the creation of two clusters. One for this tests and one for the test above.","commit_id":"c0968b0eb99a575a09fb7ed9fa47eb9f7b767120"},{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"af3f0d3fe934aba3728494ac2772be5c47844299","unresolved":false,"context_lines":[{"line_number":93,"context_line":"          master_flavor_id: \"m1.small\""},{"line_number":94,"context_line":"          external_network_id: \"public\""},{"line_number":95,"context_line":"          dns_nameserver: \"8.8.8.8\""},{"line_number":96,"context_line":"          docker_volume_size: 5"},{"line_number":97,"context_line":"          coe: \"kubernetes\""},{"line_number":98,"context_line":"          network_driver: \"flannel\""},{"line_number":99,"context_line":"          docker_storage_driver: \"devicemapper\""}],"source_content_type":"text/x-yaml","patch_set":18,"id":"1a6eadb0_1c3710e4","line":96,"range":{"start_line":96,"start_character":10,"end_line":96,"end_character":31},"updated":"2016-12-14 12:55:52.000000000","message":"Can you remove this line completely to not use cinder volumes for container storage and","commit_id":"c0968b0eb99a575a09fb7ed9fa47eb9f7b767120"},{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"af3f0d3fe934aba3728494ac2772be5c47844299","unresolved":false,"context_lines":[{"line_number":96,"context_line":"          docker_volume_size: 5"},{"line_number":97,"context_line":"          coe: \"kubernetes\""},{"line_number":98,"context_line":"          network_driver: \"flannel\""},{"line_number":99,"context_line":"          docker_storage_driver: \"devicemapper\""},{"line_number":100,"context_line":"          master_lb_enabled: False"},{"line_number":101,"context_line":"        clusters:"},{"line_number":102,"context_line":"          node_count: 1"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"1a6eadb0_dc5bd82c","line":99,"range":{"start_line":99,"start_character":34,"end_line":99,"end_character":46},"updated":"2016-12-14 12:55:52.000000000","message":"set this to \"overlay\" for performance.","commit_id":"c0968b0eb99a575a09fb7ed9fa47eb9f7b767120"},{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"cd632d9134bc6301c42940d6448b6dc3c159bbf2","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        failure_rate:"},{"line_number":49,"context_line":"          max: 0"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"  K8sPods.create_rcs:"},{"line_number":52,"context_line":"    -"},{"line_number":53,"context_line":"      args:"},{"line_number":54,"context_line":"        manifests: [\"~/.rally/extra/rc_nginx.yaml.k8s\"]"},{"line_number":55,"context_line":"      runner:"},{"line_number":56,"context_line":"        type: \"constant\""},{"line_number":57,"context_line":"        times: 10"},{"line_number":58,"context_line":"        concurrency: 5"},{"line_number":59,"context_line":"      context:"},{"line_number":60,"context_line":"        users:"},{"line_number":61,"context_line":"          tenants: 1"},{"line_number":62,"context_line":"          users_per_tenant: 1"},{"line_number":63,"context_line":"        cluster_templates:"},{"line_number":64,"context_line":"          image_id: \"fedora-atomic-latest\""},{"line_number":65,"context_line":"          flavor_id: \"m1.small\""},{"line_number":66,"context_line":"          master_flavor_id: \"m1.small\""},{"line_number":67,"context_line":"          external_network_id: \"public\""},{"line_number":68,"context_line":"          dns_nameserver: \"8.8.8.8\""},{"line_number":69,"context_line":"          coe: \"kubernetes\""},{"line_number":70,"context_line":"          network_driver: \"flannel\""},{"line_number":71,"context_line":"          docker_storage_driver: \"overlay\""},{"line_number":72,"context_line":"          master_lb_enabled: False"},{"line_number":73,"context_line":"        clusters:"},{"line_number":74,"context_line":"          node_count: 1"},{"line_number":75,"context_line":"        ca_certs:"},{"line_number":76,"context_line":"          directory: \"\""},{"line_number":77,"context_line":"      sla:"},{"line_number":78,"context_line":"        failure_rate:"},{"line_number":79,"context_line":"          max: 0"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"ff0f0b1f_242bd030","line":76,"range":{"start_line":51,"start_character":0,"end_line":76,"end_character":23},"updated":"2017-05-19 14:22:33.000000000","message":"Revert this change, it won\u0027t pass the gate.","commit_id":"d506091602f8c3e24468931c354f4a2c3e8f7481"}],"rally/plugins/openstack/context/magnum/bays.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f95266d4bad9bbc74352bcee489a0eeb8c16a95e","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            self.context[\"tenants\"][tenant_id][\"bay\"] \u003d bay.uuid"},{"line_number":63,"context_line":"            bay_uuid \u003d str(bay.uuid)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"            # get CA certificate for this bay"},{"line_number":66,"context_line":"            ca_cert \u003d magnum_scenario._get_ca_certificate(bay)"},{"line_number":67,"context_line":"            ca_cert_file \u003d open(bay_uuid + \"_ca.crt\", \"w\")"},{"line_number":68,"context_line":"            ca_cert_file.write(ca_cert.pem)"},{"line_number":69,"context_line":"            ca_cert_file.close()"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"            # send csr to Magnum to have it signed"},{"line_number":72,"context_line":"            csr_file_path \u003d os.path.join("},{"line_number":73,"context_line":"                os.path.dirname(os.path.realpath(__file__)),"},{"line_number":74,"context_line":"                \"../../../../../samples/tasks/scenarios/magnum/artifacts/\")"},{"line_number":75,"context_line":"            csr_file_name \u003d os.path.join(csr_file_path, \"client.csr\")"},{"line_number":76,"context_line":"            csr_file \u003d open(csr_file_name, \"r\")"},{"line_number":77,"context_line":"            csr_req \u003d {\"bay_uuid\": bay_uuid,"},{"line_number":78,"context_line":"                       \"csr\": csr_file.read()}"},{"line_number":79,"context_line":"            csr_file.close()"},{"line_number":80,"context_line":"            cert \u003d magnum_scenario._create_ca_certificate(csr_req)"},{"line_number":81,"context_line":"            cert_file \u003d open(bay_uuid + \".crt\", \"w\")"},{"line_number":82,"context_line":"            cert_file.write(cert.pem)"},{"line_number":83,"context_line":"            cert_file.close()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @logging.log_task_wrapper(LOG.info, _(\"Exit context: `Bay`\"))"},{"line_number":86,"context_line":"    def cleanup(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_93cef581","line":83,"range":{"start_line":65,"start_character":5,"end_line":83,"end_character":29},"updated":"2016-09-04 22:00:43.000000000","message":"Looks like it should be done by another new context \"magnum_ca_cert\". We shouldn\u0027t mix creation of different resources","commit_id":"000ed4ab9c211485a58f67b59a78f15955ab2726"},{"author":{"_account_id":9577,"name":"Winnie Tsang","email":"wtsang@us.ibm.com","username":"wtsang"},"change_message_id":"2eb0e3d78d574c0fa6c6d764bd37db46cfb60096","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            self.context[\"tenants\"][tenant_id][\"bay\"] \u003d bay.uuid"},{"line_number":63,"context_line":"            bay_uuid \u003d str(bay.uuid)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"            # get CA certificate for this bay"},{"line_number":66,"context_line":"            ca_cert \u003d magnum_scenario._get_ca_certificate(bay)"},{"line_number":67,"context_line":"            ca_cert_file \u003d open(bay_uuid + \"_ca.crt\", \"w\")"},{"line_number":68,"context_line":"            ca_cert_file.write(ca_cert.pem)"},{"line_number":69,"context_line":"            ca_cert_file.close()"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"            # send csr to Magnum to have it signed"},{"line_number":72,"context_line":"            csr_file_path \u003d os.path.join("},{"line_number":73,"context_line":"                os.path.dirname(os.path.realpath(__file__)),"},{"line_number":74,"context_line":"                \"../../../../../samples/tasks/scenarios/magnum/artifacts/\")"},{"line_number":75,"context_line":"            csr_file_name \u003d os.path.join(csr_file_path, \"client.csr\")"},{"line_number":76,"context_line":"            csr_file \u003d open(csr_file_name, \"r\")"},{"line_number":77,"context_line":"            csr_req \u003d {\"bay_uuid\": bay_uuid,"},{"line_number":78,"context_line":"                       \"csr\": csr_file.read()}"},{"line_number":79,"context_line":"            csr_file.close()"},{"line_number":80,"context_line":"            cert \u003d magnum_scenario._create_ca_certificate(csr_req)"},{"line_number":81,"context_line":"            cert_file \u003d open(bay_uuid + \".crt\", \"w\")"},{"line_number":82,"context_line":"            cert_file.write(cert.pem)"},{"line_number":83,"context_line":"            cert_file.close()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @logging.log_task_wrapper(LOG.info, _(\"Exit context: `Bay`\"))"},{"line_number":86,"context_line":"    def cleanup(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_d6fc42ba","line":83,"range":{"start_line":65,"start_character":5,"end_line":83,"end_character":29},"in_reply_to":"9a89bdaa_93cef581","updated":"2016-09-07 22:29:48.000000000","message":"@Roman: OK I will move this to magnum_ca_cert context","commit_id":"000ed4ab9c211485a58f67b59a78f15955ab2726"}],"rally/plugins/openstack/context/magnum/ca_certs.py":[{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"e82508326763ecaf1706e2c2a467b470ae30b1d8","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        return result"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @logging.log_task_wrapper(LOG.info, _(\"Enter context: `Ca Cert`\"))"},{"line_number":73,"context_line":"    def setup(self):"},{"line_number":74,"context_line":"        for user, tenant_id in rutils.iterate_per_tenants("},{"line_number":75,"context_line":"                self.context[\"users\"]):"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_3b01f638","line":73,"updated":"2016-11-10 12:58:29.000000000","message":"Please have a look to cluster-config --dir, it can simplify a lot this part and since we promote this workflow to user is would be nice to test it.","commit_id":"84b5790f959db3da5d2b7ff02e593054706c6a40"},{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"292f7da2b866005dde107b7141c5d3f66e7585cf","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        return result"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @logging.log_task_wrapper(LOG.info, _(\"Enter context: `Ca Cert`\"))"},{"line_number":73,"context_line":"    def setup(self):"},{"line_number":74,"context_line":"        for user, tenant_id in rutils.iterate_per_tenants("},{"line_number":75,"context_line":"                self.context[\"users\"]):"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a77a97e_d022cf00","line":73,"in_reply_to":"9a629dbe_3b01f638","updated":"2016-11-16 22:30:03.000000000","message":"I don\u0027t think we can use it from the magnumclient.\nBut we the same logic, so it\u0027s ok.\nhttps://github.com/openstack/python-magnumclient/blob/master/magnumclient/v1/clusters_shell.py#L220-L249","commit_id":"84b5790f959db3da5d2b7ff02e593054706c6a40"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"d60b333d1d65d952b0f8727cf7eeab98e79199d2","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                dir \u003d self.config.get(\"directory\")"},{"line_number":93,"context_line":"                self.context[\"ca_certs_directory\"] \u003d dir"},{"line_number":94,"context_line":"                fname \u003d os.path.join(dir, cluster_uuid + \".key\")"},{"line_number":95,"context_line":"                key_file \u003d open(fname, \"w\")"},{"line_number":96,"context_line":"                key_file.write(tls[\"key\"])"},{"line_number":97,"context_line":"                key_file.close()"},{"line_number":98,"context_line":"                # get CA certificate for this cluster"},{"line_number":99,"context_line":"                ca_cert \u003d magnum_scenario._get_ca_certificate(cluster_uuid)"},{"line_number":100,"context_line":"                fname \u003d os.path.join(dir, cluster_uuid + \"_ca.crt\")"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_d720414c","line":97,"range":{"start_line":95,"start_character":16,"end_line":97,"end_character":32},"updated":"2016-12-13 17:15:59.000000000","message":"Please use `with`","commit_id":"c0968b0eb99a575a09fb7ed9fa47eb9f7b767120"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"d60b333d1d65d952b0f8727cf7eeab98e79199d2","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                # get CA certificate for this cluster"},{"line_number":99,"context_line":"                ca_cert \u003d magnum_scenario._get_ca_certificate(cluster_uuid)"},{"line_number":100,"context_line":"                fname \u003d os.path.join(dir, cluster_uuid + \"_ca.crt\")"},{"line_number":101,"context_line":"                ca_cert_file \u003d open(fname, \"w\")"},{"line_number":102,"context_line":"                ca_cert_file.write(ca_cert.pem)"},{"line_number":103,"context_line":"                ca_cert_file.close()"},{"line_number":104,"context_line":"                # send csr to Magnum to have it signed"},{"line_number":105,"context_line":"                csr_req \u003d {\"cluster_uuid\": cluster_uuid,"},{"line_number":106,"context_line":"                           \"csr\": tls[\"csr\"]}"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_f71d3d10","line":103,"range":{"start_line":101,"start_character":16,"end_line":103,"end_character":36},"updated":"2016-12-13 17:15:59.000000000","message":"ditto","commit_id":"c0968b0eb99a575a09fb7ed9fa47eb9f7b767120"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"d60b333d1d65d952b0f8727cf7eeab98e79199d2","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                           \"csr\": tls[\"csr\"]}"},{"line_number":107,"context_line":"                cert \u003d magnum_scenario._create_ca_certificate(csr_req)"},{"line_number":108,"context_line":"                fname \u003d os.path.join(dir, cluster_uuid + \".crt\")"},{"line_number":109,"context_line":"                cert_file \u003d open(fname, \"w\")"},{"line_number":110,"context_line":"                cert_file.write(cert.pem)"},{"line_number":111,"context_line":"                cert_file.close()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    @logging.log_task_wrapper(LOG.info, _(\"Exit context: `Ca Cert`\"))"},{"line_number":114,"context_line":"    def cleanup(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_171b991c","line":111,"range":{"start_line":109,"start_character":16,"end_line":111,"end_character":33},"updated":"2016-12-13 17:15:59.000000000","message":"ditto","commit_id":"c0968b0eb99a575a09fb7ed9fa47eb9f7b767120"}],"rally/plugins/openstack/scenarios/magnum/k8sPods.py":[{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"d60b333d1d65d952b0f8727cf7eeab98e79199d2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_b75ca526","line":1,"updated":"2016-12-13 17:15:59.000000000","message":"Can we raname this file to k8spods or k8s_pods?\n\nhttps://www.python.org/dev/peps/pep-0008/#package-and-module-names","commit_id":"c0968b0eb99a575a09fb7ed9fa47eb9f7b767120"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"d60b333d1d65d952b0f8727cf7eeab98e79199d2","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        :param manifest: manifest file use to create the pod"},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        f \u003d open(manifest, \"r\")"},{"line_number":51,"context_line":"        manifest_str \u003d f.read()"},{"line_number":52,"context_line":"        if manifest_str.startswith(\"{\"):"},{"line_number":53,"context_line":"            manifest \u003d json.loads(manifest_str)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_fb028708","line":50,"range":{"start_line":50,"start_character":8,"end_line":50,"end_character":31},"updated":"2016-12-13 17:15:59.000000000","message":"please use `with`","commit_id":"c0968b0eb99a575a09fb7ed9fa47eb9f7b767120"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"d60b333d1d65d952b0f8727cf7eeab98e79199d2","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        f \u003d open(manifest, \"r\")"},{"line_number":51,"context_line":"        manifest_str \u003d f.read()"},{"line_number":52,"context_line":"        if manifest_str.startswith(\"{\"):"},{"line_number":53,"context_line":"            manifest \u003d json.loads(manifest_str)"},{"line_number":54,"context_line":"        else:"},{"line_number":55,"context_line":"            manifest \u003d yaml.load(manifest_str)"},{"line_number":56,"context_line":"        self._create_v1pod(manifest)"},{"line_number":57,"context_line":"        f.close()"},{"line_number":58,"context_line":"        self._list_v1pods()"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_f7229db8","line":55,"range":{"start_line":52,"start_character":8,"end_line":55,"end_character":46},"updated":"2016-12-13 17:15:59.000000000","message":"yaml.load can load json too.","commit_id":"c0968b0eb99a575a09fb7ed9fa47eb9f7b767120"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"d60b333d1d65d952b0f8727cf7eeab98e79199d2","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        :param manifest: manifest file use to create the rc"},{"line_number":70,"context_line":"        \"\"\""},{"line_number":71,"context_line":"        f \u003d open(manifest, \"r\")"},{"line_number":72,"context_line":"        manifest_str \u003d f.read()"},{"line_number":73,"context_line":"        if manifest_str.startswith(\"{\"):"},{"line_number":74,"context_line":"            manifest \u003d json.loads(manifest_str)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_5731910a","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":31},"updated":"2016-12-13 17:15:59.000000000","message":"ditto","commit_id":"c0968b0eb99a575a09fb7ed9fa47eb9f7b767120"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"d60b333d1d65d952b0f8727cf7eeab98e79199d2","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        \"\"\""},{"line_number":71,"context_line":"        f \u003d open(manifest, \"r\")"},{"line_number":72,"context_line":"        manifest_str \u003d f.read()"},{"line_number":73,"context_line":"        if manifest_str.startswith(\"{\"):"},{"line_number":74,"context_line":"            manifest \u003d json.loads(manifest_str)"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            manifest \u003d yaml.load(manifest_str)"},{"line_number":77,"context_line":"        self._create_v1rc(manifest)"},{"line_number":78,"context_line":"        f.close()"},{"line_number":79,"context_line":"        self._list_v1rcs()"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a6eadb0_5b145b43","line":76,"range":{"start_line":73,"start_character":8,"end_line":76,"end_character":46},"updated":"2016-12-13 17:15:59.000000000","message":"ditto","commit_id":"c0968b0eb99a575a09fb7ed9fa47eb9f7b767120"}],"rally/plugins/openstack/scenarios/magnum/k8s_pods.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ce33c8c37856738ca43c74bffd39710229a3a2d0","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        :param manifest: manifest file use to create the pod"},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        with open(manifest, \"r\") as f:"},{"line_number":49,"context_line":"            manifest_str \u003d f.read()"},{"line_number":50,"context_line":"        manifest \u003d yaml.load(manifest_str)"},{"line_number":51,"context_line":"        self._create_v1pod(manifest)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_2b6172a9","line":48,"range":{"start_line":48,"start_character":18,"end_line":48,"end_character":26},"updated":"2016-12-16 13:25:18.000000000","message":"use os.path.expanduser for all pathes","commit_id":"e9c625f6e104519cf08f5cedb1f1576d947c456f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ce33c8c37856738ca43c74bffd39710229a3a2d0","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        with open(manifest, \"r\") as f:"},{"line_number":49,"context_line":"            manifest_str \u003d f.read()"},{"line_number":50,"context_line":"        manifest \u003d yaml.load(manifest_str)"},{"line_number":51,"context_line":"        self._create_v1pod(manifest)"},{"line_number":52,"context_line":"        self._list_v1pods()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"@validation.required_services(consts.Service.MAGNUM)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_6b252a5a","line":52,"range":{"start_line":51,"start_character":7,"end_line":52,"end_character":27},"updated":"2016-12-16 13:25:18.000000000","message":"we need to check that created v1pod is included in list.\n\nsee how it is done here https://review.openstack.org/#/c/402102/14/rally/plugins/openstack/scenarios/nova/servers.py","commit_id":"e9c625f6e104519cf08f5cedb1f1576d947c456f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ce33c8c37856738ca43c74bffd39710229a3a2d0","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        :param manifest: manifest file use to create the rc"},{"line_number":64,"context_line":"        \"\"\""},{"line_number":65,"context_line":"        with open(manifest, \"r\") as f:"},{"line_number":66,"context_line":"            manifest_str \u003d f.read()"},{"line_number":67,"context_line":"        manifest \u003d yaml.load(manifest_str)"},{"line_number":68,"context_line":"        self._create_v1rc(manifest)"},{"line_number":69,"context_line":"        self._list_v1rcs()"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a6eadb0_cb1e3e0b","line":69,"range":{"start_line":65,"start_character":8,"end_line":69,"end_character":26},"updated":"2016-12-16 13:25:18.000000000","message":"same here","commit_id":"e9c625f6e104519cf08f5cedb1f1576d947c456f"},{"author":{"_account_id":20031,"name":"Mathieu Velten","email":"mathieu.velten@cern.ch","username":"MatMaul"},"change_message_id":"f48f8080ca06a10091ddc6f2092a3d7e8b4a590d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        msg \u003d (\"Pod isn\u0027t created\")"},{"line_number":53,"context_line":"        self.assertTrue(pod, err_msg\u003dmsg)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        pod_list \u003d self._list_v1pods().items"},{"line_number":56,"context_line":"        msg \u003d (\"Pod not included in list of available pods\\n\""},{"line_number":57,"context_line":"               \"Created pod : {}\\n\""},{"line_number":58,"context_line":"               \"Pool of pods: {}\").format(pod, pod_list)"}],"source_content_type":"text/x-python","patch_set":20,"id":"ba5201f7_b6f8e27d","line":55,"updated":"2017-01-11 10:23:49.000000000","message":"Any reason for the next few lines ? It already waits for the pod to be up and running in _create_v1pod. And it seems to be wrong, since the returned pods include a lot more infos than the initial spec so assertIn should never be true. At least it never was on my few tests (the pod was here and running).","commit_id":"340783e3cbdab6e7f1ad12025a677f2c81b04f89"},{"author":{"_account_id":20031,"name":"Mathieu Velten","email":"mathieu.velten@cern.ch","username":"MatMaul"},"change_message_id":"daa586ad32e89c258cc9812c4ce01c03ff22eeac","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        msg \u003d (\"Pod isn\u0027t created\")"},{"line_number":53,"context_line":"        self.assertTrue(pod, err_msg\u003dmsg)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        pod_list \u003d self._list_v1pods().items"},{"line_number":56,"context_line":"        msg \u003d (\"Pod not included in list of available pods\\n\""},{"line_number":57,"context_line":"               \"Created pod : {}\\n\""},{"line_number":58,"context_line":"               \"Pool of pods: {}\").format(pod, pod_list)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_3687ea10","line":55,"in_reply_to":"7a3c09a3_18114aad","updated":"2017-01-13 09:49:34.000000000","message":"Indeed the assert is failing on my side. I think it makes sense, assertIn does a classic \"in\" between the element and the list, and the returned pods by the API have transient infos included like status/readiness, update timestamps. We should look up for the name of the pod, or just ditch this part since it should never be false except if the API server has a gigantic consistency bug :)","commit_id":"340783e3cbdab6e7f1ad12025a677f2c81b04f89"},{"author":{"_account_id":9591,"name":"Ton Ngo","email":"ton@us.ibm.com","username":"tango"},"change_message_id":"8c9e8234c991772174bb87d6a643e060cfc5afdd","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        msg \u003d (\"Pod isn\u0027t created\")"},{"line_number":53,"context_line":"        self.assertTrue(pod, err_msg\u003dmsg)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        pod_list \u003d self._list_v1pods().items"},{"line_number":56,"context_line":"        msg \u003d (\"Pod not included in list of available pods\\n\""},{"line_number":57,"context_line":"               \"Created pod : {}\\n\""},{"line_number":58,"context_line":"               \"Pool of pods: {}\").format(pod, pod_list)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_18114aad","line":55,"in_reply_to":"ba5201f7_b6f8e27d","updated":"2017-01-13 07:53:14.000000000","message":"Our intention here is to check that the pod we expect is in the list of pods returned from listing the pods.  If this is not true, then the error message would indicate the result found.  Are you seeing the Assert failing?  If so, it means our pod and pod_list comparison needs to be fixed.","commit_id":"340783e3cbdab6e7f1ad12025a677f2c81b04f89"},{"author":{"_account_id":20031,"name":"Mathieu Velten","email":"mathieu.velten@cern.ch","username":"MatMaul"},"change_message_id":"f48f8080ca06a10091ddc6f2092a3d7e8b4a590d","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        msg \u003d (\"RC isn\u0027t created\")"},{"line_number":77,"context_line":"        self.assertTrue(rc, err_msg\u003dmsg)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        rc_list \u003d self._list_v1rcs().items"},{"line_number":80,"context_line":"        msg \u003d (\"RC not included in list of available rcs\\n\""},{"line_number":81,"context_line":"               \"Created rc : {}\\n\""},{"line_number":82,"context_line":"               \"Pool of rcs: {}\").format(rc, rc_list)"}],"source_content_type":"text/x-python","patch_set":20,"id":"ba5201f7_16ee0eb4","line":79,"updated":"2017-01-11 10:23:49.000000000","message":"Same here.","commit_id":"340783e3cbdab6e7f1ad12025a677f2c81b04f89"},{"author":{"_account_id":9591,"name":"Ton Ngo","email":"ton@us.ibm.com","username":"tango"},"change_message_id":"8c9e8234c991772174bb87d6a643e060cfc5afdd","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        msg \u003d (\"RC isn\u0027t created\")"},{"line_number":77,"context_line":"        self.assertTrue(rc, err_msg\u003dmsg)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        rc_list \u003d self._list_v1rcs().items"},{"line_number":80,"context_line":"        msg \u003d (\"RC not included in list of available rcs\\n\""},{"line_number":81,"context_line":"               \"Created rc : {}\\n\""},{"line_number":82,"context_line":"               \"Pool of rcs: {}\").format(rc, rc_list)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_62a3709f","line":79,"in_reply_to":"ba5201f7_16ee0eb4","updated":"2017-01-13 07:53:14.000000000","message":"Similar design to above, but it could fail independently.","commit_id":"340783e3cbdab6e7f1ad12025a677f2c81b04f89"}],"rally/plugins/openstack/scenarios/magnum/utils.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f95266d4bad9bbc74352bcee489a0eeb8c16a95e","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        \"\"\""},{"line_number":183,"context_line":"        return self.clients(\"magnum\").certificates.create(**csr_req)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def _get_k8s_api_client(self):"},{"line_number":186,"context_line":"        bay_uuid \u003d self._get_rally_bay().uuid"},{"line_number":187,"context_line":"        bay \u003d self._get_bay(bay_uuid)"},{"line_number":188,"context_line":"        baymodel \u003d self._get_baymodel(bay.baymodel_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_53262d69","line":185,"updated":"2016-09-04 22:00:43.000000000","message":"Could we put that inside osclients? Initializing of clients inside utils will make a mess","commit_id":"000ed4ab9c211485a58f67b59a78f15955ab2726"},{"author":{"_account_id":9577,"name":"Winnie Tsang","email":"wtsang@us.ibm.com","username":"wtsang"},"change_message_id":"dd6bfebfeb9fd64ff1dc3c3ae90ed86ec79e3dff","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        \"\"\""},{"line_number":183,"context_line":"        return self.clients(\"magnum\").certificates.create(**csr_req)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def _get_k8s_api_client(self):"},{"line_number":186,"context_line":"        bay_uuid \u003d self._get_rally_bay().uuid"},{"line_number":187,"context_line":"        bay \u003d self._get_bay(bay_uuid)"},{"line_number":188,"context_line":"        baymodel \u003d self._get_baymodel(bay.baymodel_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8ec9b2_2cfdd16e","line":185,"in_reply_to":"9a89bdaa_1bf173cd","updated":"2016-09-19 16:09:46.000000000","message":"@Roman:k8s_client that is creating here is for a specific bay only, it can\u0027t be use by other bay. when I move this code to osclient, I\u0027m wondering how can I send in the bay object in so it will tie to that bay. I assume your are are thinking to make this k8s_client just \"like\" the other openstack_client, it will have its\u0027 k8s_scenario that is the subclass of OpenstackScenario, and OpenstackScenario.__init__ will create this k8s_client. But I\u0027m not sure how could that work. \nOr did I misunderstand your cooment, you just want me to move the code to osclient but I can still create this k8s_client in utils.py here?","commit_id":"000ed4ab9c211485a58f67b59a78f15955ab2726"},{"author":{"_account_id":9577,"name":"Winnie Tsang","email":"wtsang@us.ibm.com","username":"wtsang"},"change_message_id":"2eb0e3d78d574c0fa6c6d764bd37db46cfb60096","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        \"\"\""},{"line_number":183,"context_line":"        return self.clients(\"magnum\").certificates.create(**csr_req)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def _get_k8s_api_client(self):"},{"line_number":186,"context_line":"        bay_uuid \u003d self._get_rally_bay().uuid"},{"line_number":187,"context_line":"        bay \u003d self._get_bay(bay_uuid)"},{"line_number":188,"context_line":"        baymodel \u003d self._get_baymodel(bay.baymodel_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_1bf173cd","line":185,"in_reply_to":"9a89bdaa_53262d69","updated":"2016-09-07 22:29:48.000000000","message":"OK, will move this code to osclients","commit_id":"000ed4ab9c211485a58f67b59a78f15955ab2726"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"f95266d4bad9bbc74352bcee489a0eeb8c16a95e","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        return self.clients(\"magnum\").certificates.create(**csr_req)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def _get_k8s_api_client(self):"},{"line_number":186,"context_line":"        bay_uuid \u003d self._get_rally_bay().uuid"},{"line_number":187,"context_line":"        bay \u003d self._get_bay(bay_uuid)"},{"line_number":188,"context_line":"        baymodel \u003d self._get_baymodel(bay.baymodel_id)"},{"line_number":189,"context_line":"        key_file \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_f30021ad","line":186,"updated":"2016-09-04 22:00:43.000000000","message":"Better to use bay context to get any bay created by rally","commit_id":"000ed4ab9c211485a58f67b59a78f15955ab2726"},{"author":{"_account_id":9577,"name":"Winnie Tsang","email":"wtsang@us.ibm.com","username":"wtsang"},"change_message_id":"2eb0e3d78d574c0fa6c6d764bd37db46cfb60096","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        return self.clients(\"magnum\").certificates.create(**csr_req)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def _get_k8s_api_client(self):"},{"line_number":186,"context_line":"        bay_uuid \u003d self._get_rally_bay().uuid"},{"line_number":187,"context_line":"        bay \u003d self._get_bay(bay_uuid)"},{"line_number":188,"context_line":"        baymodel \u003d self._get_baymodel(bay.baymodel_id)"},{"line_number":189,"context_line":"        key_file \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_fb1e8f0a","line":186,"in_reply_to":"9a89bdaa_f30021ad","updated":"2016-09-07 22:29:48.000000000","message":"@Roman, may you show me some sample on how to get the bay context here","commit_id":"000ed4ab9c211485a58f67b59a78f15955ab2726"},{"author":{"_account_id":20031,"name":"Mathieu Velten","email":"mathieu.velten@cern.ch","username":"MatMaul"},"change_message_id":"f48f8080ca06a10091ddc6f2092a3d7e8b4a590d","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        \"\"\""},{"line_number":213,"context_line":"        k8s_api \u003d self._get_k8s_api_client()"},{"line_number":214,"context_line":"        podname \u003d manifest[\"metadata\"][\"name\"] + \"-\""},{"line_number":215,"context_line":"        for i in range(5):"},{"line_number":216,"context_line":"            podname \u003d podname + random.choice(string.ascii_lowercase)"},{"line_number":217,"context_line":"        manifest[\"metadata\"][\"name\"] \u003d podname"},{"line_number":218,"context_line":"        resp \u003d k8s_api.create_namespaced_pod("}],"source_content_type":"text/x-python","patch_set":20,"id":"ba5201f7_164a8eac","line":215,"updated":"2017-01-11 10:23:49.000000000","message":"Any reason to randomize the name ? We are always in a new cluster I think so no clash expected.","commit_id":"340783e3cbdab6e7f1ad12025a677f2c81b04f89"},{"author":{"_account_id":20031,"name":"Mathieu Velten","email":"mathieu.velten@cern.ch","username":"MatMaul"},"change_message_id":"daa586ad32e89c258cc9812c4ce01c03ff22eeac","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        \"\"\""},{"line_number":213,"context_line":"        k8s_api \u003d self._get_k8s_api_client()"},{"line_number":214,"context_line":"        podname \u003d manifest[\"metadata\"][\"name\"] + \"-\""},{"line_number":215,"context_line":"        for i in range(5):"},{"line_number":216,"context_line":"            podname \u003d podname + random.choice(string.ascii_lowercase)"},{"line_number":217,"context_line":"        manifest[\"metadata\"][\"name\"] \u003d podname"},{"line_number":218,"context_line":"        resp \u003d k8s_api.create_namespaced_pod("}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_56a3969e","line":215,"in_reply_to":"7a3c09a3_78032eb9","updated":"2017-01-13 09:49:34.000000000","message":"ok thx.","commit_id":"340783e3cbdab6e7f1ad12025a677f2c81b04f89"},{"author":{"_account_id":9591,"name":"Ton Ngo","email":"ton@us.ibm.com","username":"tango"},"change_message_id":"8c9e8234c991772174bb87d6a643e060cfc5afdd","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        \"\"\""},{"line_number":213,"context_line":"        k8s_api \u003d self._get_k8s_api_client()"},{"line_number":214,"context_line":"        podname \u003d manifest[\"metadata\"][\"name\"] + \"-\""},{"line_number":215,"context_line":"        for i in range(5):"},{"line_number":216,"context_line":"            podname \u003d podname + random.choice(string.ascii_lowercase)"},{"line_number":217,"context_line":"        manifest[\"metadata\"][\"name\"] \u003d podname"},{"line_number":218,"context_line":"        resp \u003d k8s_api.create_namespaced_pod("}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_78032eb9","line":215,"in_reply_to":"ba5201f7_164a8eac","updated":"2017-01-13 07:53:14.000000000","message":"There is a few reasons for using random names.  Earlier comments from Rally reviewers indicated that the common practice is to use random names and no hard-coded name.  In addition, we may create multiple pods in a scenarios, and we want to leave open the possibility of running scenarios on an existing cluster.","commit_id":"340783e3cbdab6e7f1ad12025a677f2c81b04f89"},{"author":{"_account_id":20031,"name":"Mathieu Velten","email":"mathieu.velten@cern.ch","username":"MatMaul"},"change_message_id":"f48f8080ca06a10091ddc6f2092a3d7e8b4a590d","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        \"\"\""},{"line_number":255,"context_line":"        k8s_api \u003d self._get_k8s_api_client()"},{"line_number":256,"context_line":"        suffix \u003d \"-\""},{"line_number":257,"context_line":"        for i in range(5):"},{"line_number":258,"context_line":"            suffix \u003d suffix + random.choice(string.ascii_lowercase)"},{"line_number":259,"context_line":"        rcname \u003d manifest[\"metadata\"][\"name\"] + suffix"},{"line_number":260,"context_line":"        manifest[\"metadata\"][\"name\"] \u003d rcname"}],"source_content_type":"text/x-python","patch_set":20,"id":"ba5201f7_96d4bebd","line":257,"updated":"2017-01-11 10:23:49.000000000","message":"Same.","commit_id":"340783e3cbdab6e7f1ad12025a677f2c81b04f89"},{"author":{"_account_id":9591,"name":"Ton Ngo","email":"ton@us.ibm.com","username":"tango"},"change_message_id":"8c9e8234c991772174bb87d6a643e060cfc5afdd","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        \"\"\""},{"line_number":255,"context_line":"        k8s_api \u003d self._get_k8s_api_client()"},{"line_number":256,"context_line":"        suffix \u003d \"-\""},{"line_number":257,"context_line":"        for i in range(5):"},{"line_number":258,"context_line":"            suffix \u003d suffix + random.choice(string.ascii_lowercase)"},{"line_number":259,"context_line":"        rcname \u003d manifest[\"metadata\"][\"name\"] + suffix"},{"line_number":260,"context_line":"        manifest[\"metadata\"][\"name\"] \u003d rcname"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_d830a2a1","line":257,"in_reply_to":"ba5201f7_96d4bebd","updated":"2017-01-13 07:53:14.000000000","message":"ditto","commit_id":"340783e3cbdab6e7f1ad12025a677f2c81b04f89"},{"author":{"_account_id":20031,"name":"Mathieu Velten","email":"mathieu.velten@cern.ch","username":"MatMaul"},"change_message_id":"daa586ad32e89c258cc9812c4ce01c03ff22eeac","unresolved":false,"context_lines":[{"line_number":258,"context_line":"            suffix \u003d suffix + random.choice(string.ascii_lowercase)"},{"line_number":259,"context_line":"        rcname \u003d manifest[\"metadata\"][\"name\"] + suffix"},{"line_number":260,"context_line":"        manifest[\"metadata\"][\"name\"] \u003d rcname"},{"line_number":261,"context_line":"        try:"},{"line_number":262,"context_line":"            podname \u003d manifest[\"spec\"][\"selector\"][\"name\"] + suffix"},{"line_number":263,"context_line":"        except KeyError:"},{"line_number":264,"context_line":"            podname \u003d suffix[1:]"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_b6ef5aaf","line":261,"updated":"2017-01-13 09:49:34.000000000","message":"I think we can remove the next 4 lines, randomizing the RC name is enough, the RC already add a random suffix to the pod name when it creates the replicas.","commit_id":"340783e3cbdab6e7f1ad12025a677f2c81b04f89"},{"author":{"_account_id":20031,"name":"Mathieu Velten","email":"mathieu.velten@cern.ch","username":"MatMaul"},"change_message_id":"f48f8080ca06a10091ddc6f2092a3d7e8b4a590d","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            resp \u003d k8s_api.read_namespaced_replication_controller("},{"line_number":274,"context_line":"                name\u003drcname,"},{"line_number":275,"context_line":"                namespace\u003d\"default\")"},{"line_number":276,"context_line":"            status \u003d resp.status.replicas"},{"line_number":277,"context_line":"            if status \u003d\u003d expectd_status:"},{"line_number":278,"context_line":"                return resp"},{"line_number":279,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"ba5201f7_d9903951","line":276,"updated":"2017-01-11 10:23:49.000000000","message":"We should test against availableReplicas, the current code doesn\u0027t test that the pods actually exist.\nhttps://kubernetes.io/docs/api-reference/v1/definitions/#_v1_replicationcontrollerstatus","commit_id":"340783e3cbdab6e7f1ad12025a677f2c81b04f89"},{"author":{"_account_id":9591,"name":"Ton Ngo","email":"ton@us.ibm.com","username":"tango"},"change_message_id":"df7bb1c2a4e67902f3b420788d79689bfdaafb20","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            resp \u003d k8s_api.read_namespaced_replication_controller("},{"line_number":274,"context_line":"                name\u003drcname,"},{"line_number":275,"context_line":"                namespace\u003d\"default\")"},{"line_number":276,"context_line":"            status \u003d resp.status.replicas"},{"line_number":277,"context_line":"            if status \u003d\u003d expectd_status:"},{"line_number":278,"context_line":"                return resp"},{"line_number":279,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a3905b3_eda00693","line":276,"in_reply_to":"7a3c09a3_b85d96ee","updated":"2017-01-20 00:08:37.000000000","message":"@Mathieu:  we tried checking for the field availableReplicas but found that it is not included in the status.  After the pods are in running state, we only see 3 fields in the RC status:  replicas, fullyLabeledReplicas, observedGeneration.  \nAre you able to see this field availableReplicas in a later version of Kubernetes?  The current version Magnum uses is still 1.2, although we expect to move to 1.4.7 soon.","commit_id":"340783e3cbdab6e7f1ad12025a677f2c81b04f89"},{"author":{"_account_id":9591,"name":"Ton Ngo","email":"ton@us.ibm.com","username":"tango"},"change_message_id":"8c9e8234c991772174bb87d6a643e060cfc5afdd","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            resp \u003d k8s_api.read_namespaced_replication_controller("},{"line_number":274,"context_line":"                name\u003drcname,"},{"line_number":275,"context_line":"                namespace\u003d\"default\")"},{"line_number":276,"context_line":"            status \u003d resp.status.replicas"},{"line_number":277,"context_line":"            if status \u003d\u003d expectd_status:"},{"line_number":278,"context_line":"                return resp"},{"line_number":279,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_b85d96ee","line":276,"in_reply_to":"ba5201f7_d9903951","updated":"2017-01-13 07:53:14.000000000","message":"Good suggestion, we will check for availableReplicas instead","commit_id":"340783e3cbdab6e7f1ad12025a677f2c81b04f89"}]}
