)]}'
{"cvp-func-new.groovy":[{"author":{"_account_id":397,"name":"Hanna Arhipova","email":"harhipova@mirantis.com","username":"harhipova"},"change_message_id":"ef8ef993474afcf4c41f6a071b934f5d30f01afa","unresolved":false,"context_lines":[{"line_number":1,"context_line":"/**"},{"line_number":2,"context_line":" *"},{"line_number":3,"context_line":" * Launch CVP Tempest verification of the cloud"},{"line_number":4,"context_line":" *"}],"source_content_type":"text/x-groovy","patch_set":9,"id":"04f9991e_bd0901a8","line":1,"updated":"2019-03-28 18:48:44.000000000","message":"It would be so kind of you to choose another filename, not \u0027cvp-func-new\u0027","commit_id":"41a2bbde40b2cdd27cfcce4d27c7d5da8a0e8856"},{"author":{"_account_id":206,"name":"Oleksandr Savatieiev","email":"osavatieiev@mirantis.com","username":"osavatieiev","inactive":true},"change_message_id":"8d056cedbb1941f29c29869bf8e19c84df9d1c10","unresolved":false,"context_lines":[{"line_number":25,"context_line":"validate \u003d new com.mirantis.mcp.Validate()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def saltMaster"},{"line_number":28,"context_line":"def artifacts_dir \u003d \u0027validation_artifacts/\u0027"},{"line_number":29,"context_line":"def remote_artifacts_dir \u003d \u0027/root/test/\u0027"},{"line_number":30,"context_line":"def EXTRA_PARAMS \u003d readYaml(text: env.getProperty(\u0027EXTRA_PARAMS\u0027)) ?: [:]"},{"line_number":31,"context_line":"def SALT_MASTER_CREDENTIALS\u003dEXTRA_PARAMS.get(\"SALT_MASTER_CREDENTIALS\") ?: \u0027salt\u0027"}],"source_content_type":"text/x-groovy","patch_set":9,"id":"6ebef5e6_b1f332bc","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":43},"updated":"2019-03-28 17:59:00.000000000","message":"How about to utilize the same approach that is used @ sanity. I mean properties extraction from YAML/JSON?","commit_id":"41a2bbde40b2cdd27cfcce4d27c7d5da8a0e8856"},{"author":{"_account_id":397,"name":"Hanna Arhipova","email":"harhipova@mirantis.com","username":"harhipova"},"change_message_id":"ef8ef993474afcf4c41f6a071b934f5d30f01afa","unresolved":false,"context_lines":[{"line_number":27,"context_line":"def saltMaster"},{"line_number":28,"context_line":"def artifacts_dir \u003d \u0027validation_artifacts/\u0027"},{"line_number":29,"context_line":"def remote_artifacts_dir \u003d \u0027/root/test/\u0027"},{"line_number":30,"context_line":"def EXTRA_PARAMS \u003d readYaml(text: env.getProperty(\u0027EXTRA_PARAMS\u0027)) ?: [:]"},{"line_number":31,"context_line":"def SALT_MASTER_CREDENTIALS\u003dEXTRA_PARAMS.get(\"SALT_MASTER_CREDENTIALS\") ?: \u0027salt\u0027"},{"line_number":32,"context_line":"def SERVICE_NODE \u003d EXTRA_PARAMS.get(\"SERVICE_NODE\") ?: \u0027I@salt:master\u0027"},{"line_number":33,"context_line":"def SERVICE_NODE_TARGET \u003d [\u0027expression\u0027: SERVICE_NODE, \u0027type\u0027: \u0027compound\u0027]"},{"line_number":34,"context_line":"def VERBOSE \u003d (EXTRA_PARAMS.get(\"VERBOSE\") !\u003d null) ? EXTRA_PARAMS.get(\"VERBOSE\") : true"},{"line_number":35,"context_line":"def DEBUG_MODE \u003d EXTRA_PARAMS.get(\"DEBUG_MODE\") ?: false"},{"line_number":36,"context_line":"def STOP_ON_ERROR \u003d EXTRA_PARAMS.get(\"STOP_ON_ERROR\") ?: false"},{"line_number":37,"context_line":"def GENERATE_CONFIG \u003d (EXTRA_PARAMS.get(\"GENERATE_CONFIG\") !\u003d null) ? EXTRA_PARAMS.get(\"GENERATE_CONFIG\") : true"},{"line_number":38,"context_line":"def SKIP_LIST_PATH \u003d EXTRA_PARAMS.get(\"SKIP_LIST_PATH\") ?: \"cvp-configuration/tempest/skip-list.yaml\""},{"line_number":39,"context_line":"node() {"},{"line_number":40,"context_line":"    try{"},{"line_number":41,"context_line":"        stage(\u0027Initialization\u0027) {"}],"source_content_type":"text/x-groovy","patch_set":9,"id":"f872537d_4ab8f5b4","line":38,"range":{"start_line":30,"start_character":0,"end_line":38,"end_character":101},"updated":"2019-03-28 18:48:44.000000000","message":"You can make it lighter with:\n\n  extraYamlContext \u003d env.getProperty(\u0027EXTRA_PARAMS\u0027)\n   if (extraYamlContext) {\n       common.mergeEnv(env, extraYamlContext) }","commit_id":"41a2bbde40b2cdd27cfcce4d27c7d5da8a0e8856"},{"author":{"_account_id":206,"name":"Oleksandr Savatieiev","email":"osavatieiev@mirantis.com","username":"osavatieiev","inactive":true},"change_message_id":"8d056cedbb1941f29c29869bf8e19c84df9d1c10","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        stage(\u0027Run Tempest tests\u0027) {"},{"line_number":104,"context_line":"            sh \"rm -rf ${artifacts_dir}\""},{"line_number":105,"context_line":"            sh \"mkdir -p ${artifacts_dir}\""},{"line_number":106,"context_line":"            validate.runContainer(saltMaster, TARGET_NODE, TEST_IMAGE, \u0027cvp\u0027)"},{"line_number":107,"context_line":"            args \u003d \u0027\u0027"},{"line_number":108,"context_line":"            TEMPEST_TEST_PATTERN\u003d\u0027set\u003dsmoke\u0027"}],"source_content_type":"text/x-groovy","patch_set":9,"id":"86eba435_5a520637","line":105,"range":{"start_line":105,"start_character":0,"end_line":105,"end_character":42},"updated":"2019-03-28 17:59:00.000000000","message":"Utilizing naming convention for the artifacts will help us eliminate this step. Also, cleanup is a separate activity after all.","commit_id":"41a2bbde40b2cdd27cfcce4d27c7d5da8a0e8856"},{"author":{"_account_id":397,"name":"Hanna Arhipova","email":"harhipova@mirantis.com","username":"harhipova"},"change_message_id":"ef8ef993474afcf4c41f6a071b934f5d30f01afa","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            sh \"mkdir -p ${artifacts_dir}\""},{"line_number":106,"context_line":"            validate.runContainer(saltMaster, TARGET_NODE, TEST_IMAGE, \u0027cvp\u0027)"},{"line_number":107,"context_line":"            args \u003d \u0027\u0027"},{"line_number":108,"context_line":"            TEMPEST_TEST_PATTERN\u003d\u0027set\u003dsmoke\u0027"},{"line_number":109,"context_line":"            if (EXTRA_PARAMS.get(\"concurrency\")) {"},{"line_number":110,"context_line":"                args +\u003d \u0027 -w \u0027 + EXTRA_PARAMS.get(\"concurrency\")"},{"line_number":111,"context_line":"            }"}],"source_content_type":"text/x-groovy","patch_set":9,"id":"4334ff95_5061b7cf","line":108,"range":{"start_line":108,"start_character":12,"end_line":108,"end_character":44},"updated":"2019-03-28 18:48:44.000000000","message":"I think it left after testing. Where is the reading from the job parameters?","commit_id":"41a2bbde40b2cdd27cfcce4d27c7d5da8a0e8856"},{"author":{"_account_id":61,"name":"Denis Dmitriev","email":"ddmitriev@mirantis.com","username":"ddmitriev"},"change_message_id":"774dcd2c1e64dd990e1d5df4e3ec649ea69b5ab9","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        stage(\u0027Collect results\u0027) {"},{"line_number":124,"context_line":"            validate.addFiles(saltMaster, TARGET_NODE, remote_artifacts_dir, artifacts_dir)"},{"line_number":125,"context_line":"            archiveArtifacts artifacts: \"${artifacts_dir}/report_*\""},{"line_number":126,"context_line":"            junit \"${artifacts_dir}/report_*.xml\""},{"line_number":127,"context_line":"        }"},{"line_number":128,"context_line":"    } catch (Throwable e) {"}],"source_content_type":"text/x-groovy","patch_set":9,"id":"6c08eb86_a10b8a51","line":125,"range":{"start_line":125,"start_character":12,"end_line":125,"end_character":67},"updated":"2019-03-28 17:43:52.000000000","message":"Can we use a fixed report name (if it possible to set for docker container), or find only the latest report in the artifact?\nIf there are multiple reports from different test runs - finding the relevant report turns into an euristic.","commit_id":"41a2bbde40b2cdd27cfcce4d27c7d5da8a0e8856"},{"author":{"_account_id":206,"name":"Oleksandr Savatieiev","email":"osavatieiev@mirantis.com","username":"osavatieiev","inactive":true},"change_message_id":"8d056cedbb1941f29c29869bf8e19c84df9d1c10","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        stage(\u0027Collect results\u0027) {"},{"line_number":124,"context_line":"            validate.addFiles(saltMaster, TARGET_NODE, remote_artifacts_dir, artifacts_dir)"},{"line_number":125,"context_line":"            archiveArtifacts artifacts: \"${artifacts_dir}/report_*\""},{"line_number":126,"context_line":"            junit \"${artifacts_dir}/report_*.xml\""},{"line_number":127,"context_line":"        }"},{"line_number":128,"context_line":"    } catch (Throwable e) {"}],"source_content_type":"text/x-groovy","patch_set":9,"id":"120e7a9b_fb63fe5a","line":125,"range":{"start_line":125,"start_character":12,"end_line":125,"end_character":67},"in_reply_to":"6c08eb86_a10b8a51","updated":"2019-03-28 17:59:00.000000000","message":"I strongly support Denis here. Even more, let us introduce naming convention here. Something like \u003cprefix\u003e-\u003ctype\u003e-\u003csubtype\u003e-\u003cbuildnum\u003e.\u003cext\u003e. \nFor example: \ninternal-func-api-42.xml\natt-perf-ceph-43.html","commit_id":"41a2bbde40b2cdd27cfcce4d27c7d5da8a0e8856"}],"cvp-ha.groovy":[{"author":{"_account_id":397,"name":"Hanna Arhipova","email":"harhipova@mirantis.com","username":"harhipova"},"change_message_id":"ef8ef993474afcf4c41f6a071b934f5d30f01afa","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                if (!keystone_creds) {"},{"line_number":45,"context_line":"                    keystone_creds \u003d validate._get_keystone_creds_v2(saltMaster)"},{"line_number":46,"context_line":"                }"},{"line_number":47,"context_line":"                validate.runContainer(saltMaster, TEMPEST_TARGET_NODE, TEST_IMAGE, \u0027cvp\u0027, keystone_creds, true, null)"},{"line_number":48,"context_line":"                validate.configureContainer(saltMaster, TEMPEST_TARGET_NODE, PROXY, TOOLS_REPO, TEMPEST_REPO)"},{"line_number":49,"context_line":"            }"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-groovy","patch_set":9,"id":"dca6c307_14e73129","line":47,"range":{"start_line":47,"start_character":37,"end_line":47,"end_character":116},"updated":"2019-03-28 18:48:44.000000000","message":"could you please refactor such calls in extended format, like \n  method(param1\u003dvalue1, param2\u003dvalue2, param3...)\n\nI suggest you to use this format for each method which has more than 2 parameters. \nPlease, refactor as more lines as possible.","commit_id":"41a2bbde40b2cdd27cfcce4d27c7d5da8a0e8856"}],"cvp-perf.groovy":[{"author":{"_account_id":206,"name":"Oleksandr Savatieiev","email":"osavatieiev@mirantis.com","username":"osavatieiev","inactive":true},"change_message_id":"8d056cedbb1941f29c29869bf8e19c84df9d1c10","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            if (!keystone_creds) {"},{"line_number":35,"context_line":"                keystone_creds \u003d validate._get_keystone_creds_v2(saltMaster)"},{"line_number":36,"context_line":"            }"},{"line_number":37,"context_line":"            validate.runContainer(saltMaster, TARGET_NODE, TEST_IMAGE, \u0027cvp\u0027, keystone_creds, true, null)"},{"line_number":38,"context_line":"            validate.configureContainer(saltMaster, TARGET_NODE, PROXY, TOOLS_REPO, \"\")"},{"line_number":39,"context_line":"        }"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-groovy","patch_set":9,"id":"db4a31b4_595b861d","line":37,"range":{"start_line":37,"start_character":94,"end_line":37,"end_character":104},"updated":"2019-03-28 17:59:00.000000000","message":"It would be good to have some comments on the parameters used.  :)\nNot all of us is good at reading between the lines.","commit_id":"41a2bbde40b2cdd27cfcce4d27c7d5da8a0e8856"},{"author":{"_account_id":397,"name":"Hanna Arhipova","email":"harhipova@mirantis.com","username":"harhipova"},"change_message_id":"ef8ef993474afcf4c41f6a071b934f5d30f01afa","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            if (!keystone_creds) {"},{"line_number":35,"context_line":"                keystone_creds \u003d validate._get_keystone_creds_v2(saltMaster)"},{"line_number":36,"context_line":"            }"},{"line_number":37,"context_line":"            validate.runContainer(saltMaster, TARGET_NODE, TEST_IMAGE, \u0027cvp\u0027, keystone_creds, true, null)"},{"line_number":38,"context_line":"            validate.configureContainer(saltMaster, TARGET_NODE, PROXY, TOOLS_REPO, \"\")"},{"line_number":39,"context_line":"        }"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-groovy","patch_set":9,"id":"a10314c4_58dc3856","line":37,"range":{"start_line":37,"start_character":94,"end_line":37,"end_character":104},"in_reply_to":"db4a31b4_595b861d","updated":"2019-03-28 18:48:44.000000000","message":"agree","commit_id":"41a2bbde40b2cdd27cfcce4d27c7d5da8a0e8856"}],"cvp-tempest.groovy":[{"author":{"_account_id":397,"name":"Hanna Arhipova","email":"harhipova@mirantis.com","username":"harhipova"},"change_message_id":"b5820a4e14555d31f7c345f4495bac9daf7d5468","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    common.mergeEnv(env, extraYamlContext) }"},{"line_number":35,"context_line":"def SALT_MASTER_CREDENTIALS\u003d(env.SALT_MASTER_CREDENTIALS) ? SALT_MASTER_CREDENTIALS : \u0027salt\u0027"},{"line_number":36,"context_line":"def VERBOSE \u003d (env.VERBOSE) ? VERBOSE : true"},{"line_number":37,"context_line":"def DEBUG_MODE \u003d (env.DEBUG_MODE) ? DEBUG_MODE : false"},{"line_number":38,"context_line":"def STOP_ON_ERROR \u003d (env.STOP_ON_ERROR) ? STOP_ON_ERROR : false"},{"line_number":39,"context_line":"def GENERATE_CONFIG \u003d (env.GENERATE_CONFIG) ? GENERATE_CONFIG : true"},{"line_number":40,"context_line":"def SKIP_LIST_PATH \u003d (env.SKIP_LIST_PATH) ? SKIP_LIST_PATH : \"cvp-configuration/tempest/skip-list.yaml\""}],"source_content_type":"text/x-groovy","patch_set":14,"id":"64d29c2b_04c07212","line":37,"range":{"start_line":37,"start_character":0,"end_line":37,"end_character":54},"updated":"2019-04-08 06:13:01.000000000","message":"You can use next form: \n```def DEBUG_MODE \u003d (env.DEBUG_MODE) ?: false ```\nit does the same","commit_id":"213a32e071b5e837a5138029d275a22220a76408"},{"author":{"_account_id":397,"name":"Hanna Arhipova","email":"harhipova@mirantis.com","username":"harhipova"},"change_message_id":"b5820a4e14555d31f7c345f4495bac9daf7d5468","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            deleteDir()"},{"line_number":48,"context_line":"            saltMaster \u003d salt.connection(SALT_MASTER_URL, SALT_MASTER_CREDENTIALS)"},{"line_number":49,"context_line":"            cluster_name\u003dsalt.getPillar(saltMaster, \u0027I@salt:master\u0027, \u0027_param:cluster_name\u0027)[\u0027return\u0027][0].values()[0]"},{"line_number":50,"context_line":"            os_version\u003dsalt.getPillar(saltMaster, \u0027I@salt:master\u0027, \u0027_param:openstack_version\u0027)[\u0027return\u0027][0].values()[0]"},{"line_number":51,"context_line":"            TEST_IMAGE \u003d (env.TEST_IMAGE) ? TEST_IMAGE : \"docker-prod-virtual.docker.mirantis.net/mirantis/cicd/ci-tempest:${os_version}\""},{"line_number":52,"context_line":"            runtest_node \u003d salt.runSaltProcessStep(saltMaster, \u0027I@runtest:*\u0027, \u0027test.ping\u0027)[\u0027return\u0027][0]"},{"line_number":53,"context_line":"            if (runtest_node.values()[0]) {"}],"source_content_type":"text/x-groovy","patch_set":14,"id":"ad75cb3b_8c9618ac","line":50,"range":{"start_line":50,"start_character":11,"end_line":50,"end_character":119},"updated":"2019-04-08 06:13:01.000000000","message":"Please throw an error if cluster doesn\u0027t contain OpenStack","commit_id":"213a32e071b5e837a5138029d275a22220a76408"}]}
