)]}'
{"etc/refstack.conf.sample":[{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"4859fd34a6f3b1d6b5e4344585576eb38e1ccdee","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"# The GitHub API URL of the repository and location of any additional"},{"line_number":153,"context_line":"# guideline sources which will need to be parsed by the refstack API."},{"line_number":154,"context_line":"# This, for now, mostly pertains to add-on capabilities.\u0027"},{"line_number":155,"context_line":"#additional_capability_urls \u003d []"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"# This is the base URL that is used for retrieving specific capability"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"3fa0c359_34f579cb","line":154,"range":{"start_line":154,"start_character":2,"end_line":154,"end_character":57},"updated":"2018-02-26 10:09:24.000000000","message":"Probably don\u0027t need this comment.","commit_id":"20e6deda9869d912a46ba8af342bec7cd268fa6e"},{"author":{"_account_id":24728,"name":"megan guiney","email":"meganmguiney@gmail.com","username":"mguiney"},"change_message_id":"1601ace4457bf71d8524f4ce452ab1a8344855a3","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"# The GitHub API URL of the repository and location of any additional"},{"line_number":153,"context_line":"# guideline sources which will need to be parsed by the refstack API."},{"line_number":154,"context_line":"# This, for now, mostly pertains to add-on capabilities.\u0027"},{"line_number":155,"context_line":"#additional_capability_urls \u003d []"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"# This is the base URL that is used for retrieving specific capability"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"1f9dbf25_77942745","line":154,"range":{"start_line":154,"start_character":2,"end_line":154,"end_character":57},"in_reply_to":"3fa0c359_34f579cb","updated":"2018-03-01 13:07:29.000000000","message":"Done","commit_id":"20e6deda9869d912a46ba8af342bec7cd268fa6e"}],"refstack-ui/app/components/guidelines/guidelines.html":[{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"dbdf3eba725499ddd54760e9985d407bafbeacd9","unresolved":false,"context_lines":[{"line_number":8,"context_line":"        \u003cselect ng-model\u003d\"ctrl.version\""},{"line_number":9,"context_line":"                ng-change\u003d\"ctrl.update()\""},{"line_number":10,"context_line":"                class\u003d\"form-control\""},{"line_number":11,"context_line":"                ng-options\u003d\"versionFile.slice(0,-5) for versionFile in ctrl.versionList\"\u003e"},{"line_number":12,"context_line":"        \u003c/select\u003e"},{"line_number":13,"context_line":"    \u003c/div\u003e"},{"line_number":14,"context_line":"    \u003cdiv class\u003d\"col-md-4\"\u003e"}],"source_content_type":"text/html","patch_set":20,"id":"9f6a8fd7_19170348","line":11,"range":{"start_line":11,"start_character":28,"end_line":11,"end_character":87},"updated":"2018-04-30 20:26:24.000000000","message":"After testing, there were issues with ctrl.version and ctrl.versionFile becoming out of sync.\n\nSo, lets treat ctrl.versionList as if it held each version Object containing the name and file now.\n\n  versionObj.name.slice(0,-5) for versionObj in ctrl.versionList","commit_id":"2b541e662f56c33a9498851e701006f366b6d53a"},{"author":{"_account_id":24728,"name":"megan guiney","email":"meganmguiney@gmail.com","username":"mguiney"},"change_message_id":"de2285bc06071fe56b493c66058b2b98dfc602bc","unresolved":false,"context_lines":[{"line_number":8,"context_line":"        \u003cselect ng-model\u003d\"ctrl.version\""},{"line_number":9,"context_line":"                ng-change\u003d\"ctrl.update()\""},{"line_number":10,"context_line":"                class\u003d\"form-control\""},{"line_number":11,"context_line":"                ng-options\u003d\"versionFile.slice(0,-5) for versionFile in ctrl.versionList\"\u003e"},{"line_number":12,"context_line":"        \u003c/select\u003e"},{"line_number":13,"context_line":"    \u003c/div\u003e"},{"line_number":14,"context_line":"    \u003cdiv class\u003d\"col-md-4\"\u003e"}],"source_content_type":"text/html","patch_set":20,"id":"9f6a8fd7_c8d21635","line":11,"range":{"start_line":11,"start_character":28,"end_line":11,"end_character":87},"in_reply_to":"9f6a8fd7_19170348","updated":"2018-05-03 15:42:26.000000000","message":"Done","commit_id":"2b541e662f56c33a9498851e701006f366b6d53a"}],"refstack-ui/app/components/guidelines/guidelinesController.js":[{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"bf59b96d3bd444b76afeefdd047c518623499ae7","unresolved":false,"context_lines":[{"line_number":61,"context_line":"         * call, the function to update the capabilities is called."},{"line_number":62,"context_line":"         * Sample API return array: [\"2015.03.json\", \"2015.04.json\"]"},{"line_number":63,"context_line":"         */"},{"line_number":64,"context_line":"        function getVersionList(gl_type \u003d \u0027Powered\u0027) {"},{"line_number":65,"context_line":"            var content_url \u003d refstackApiUrl + \u0027/guidelines\u0027;"},{"line_number":66,"context_line":"            ctrl.versionsRequest \u003d"},{"line_number":67,"context_line":"                $http.get(content_url).success(function (data) {"}],"source_content_type":"text/javascript","patch_set":11,"id":"9f6a8fd7_3f650fe2","line":64,"range":{"start_line":64,"start_character":32,"end_line":64,"end_character":51},"updated":"2018-04-17 21:48:40.000000000","message":"defaults are not fully supported","commit_id":"37a1abe6e3bc3c12b375fb542c47930bd6ce78c0"},{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"dbdf3eba725499ddd54760e9985d407bafbeacd9","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        /** The target OpenStack marketing program to show capabilities for. */"},{"line_number":41,"context_line":"        ctrl.target \u003d \u0027platform\u0027;"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        /** The various possible capability statuses. */"},{"line_number":44,"context_line":"        ctrl.status \u003d {"},{"line_number":45,"context_line":"            required: true,"}],"source_content_type":"text/javascript","patch_set":20,"id":"9f6a8fd7_6ea43709","line":42,"updated":"2018-04-30 20:26:24.000000000","message":"Instantiate ctrl.gl_type here to \u0027powered\u0027.","commit_id":"2b541e662f56c33a9498851e701006f366b6d53a"},{"author":{"_account_id":24728,"name":"megan guiney","email":"meganmguiney@gmail.com","username":"mguiney"},"change_message_id":"de2285bc06071fe56b493c66058b2b98dfc602bc","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        /** The target OpenStack marketing program to show capabilities for. */"},{"line_number":41,"context_line":"        ctrl.target \u003d \u0027platform\u0027;"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        /** The various possible capability statuses. */"},{"line_number":44,"context_line":"        ctrl.status \u003d {"},{"line_number":45,"context_line":"            required: true,"}],"source_content_type":"text/javascript","patch_set":20,"id":"9f6a8fd7_68674a53","line":42,"in_reply_to":"9f6a8fd7_6ea43709","updated":"2018-05-03 15:42:26.000000000","message":"Done","commit_id":"2b541e662f56c33a9498851e701006f366b6d53a"},{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"dbdf3eba725499ddd54760e9985d407bafbeacd9","unresolved":false,"context_lines":[{"line_number":63,"context_line":"         * Sample API return array: [\"2015.03.json\", \"2015.04.json\"]"},{"line_number":64,"context_line":"         */"},{"line_number":65,"context_line":"        function getVersionList() {"},{"line_number":66,"context_line":"            if (ctrl.target \u003d\u003d\u003d \u0027dns\u0027 || ctrl.target \u003d\u003d\u003d \u0027orchestration\u0027) {"},{"line_number":67,"context_line":"                ctrl.gl_type \u003d ctrl.target;"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"            } else {"},{"line_number":70,"context_line":"                ctrl.gl_type \u003d \u0027powered\u0027;"},{"line_number":71,"context_line":"            }"},{"line_number":72,"context_line":"            var content_url \u003d refstackApiUrl + \u0027/guidelines\u0027;"},{"line_number":73,"context_line":"            ctrl.versionsRequest \u003d"},{"line_number":74,"context_line":"                $http.get(content_url).success(function (data) {"}],"source_content_type":"text/javascript","patch_set":20,"id":"9f6a8fd7_2eae3fe7","line":71,"range":{"start_line":66,"start_character":0,"end_line":71,"end_character":13},"updated":"2018-04-30 20:26:24.000000000","message":"Move this block into ctrl.updateTargetCapabilities so we can use the updated ctrl.gl_type value for checking if the version list needs refreshing.","commit_id":"2b541e662f56c33a9498851e701006f366b6d53a"},{"author":{"_account_id":24728,"name":"megan guiney","email":"meganmguiney@gmail.com","username":"mguiney"},"change_message_id":"de2285bc06071fe56b493c66058b2b98dfc602bc","unresolved":false,"context_lines":[{"line_number":63,"context_line":"         * Sample API return array: [\"2015.03.json\", \"2015.04.json\"]"},{"line_number":64,"context_line":"         */"},{"line_number":65,"context_line":"        function getVersionList() {"},{"line_number":66,"context_line":"            if (ctrl.target \u003d\u003d\u003d \u0027dns\u0027 || ctrl.target \u003d\u003d\u003d \u0027orchestration\u0027) {"},{"line_number":67,"context_line":"                ctrl.gl_type \u003d ctrl.target;"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"            } else {"},{"line_number":70,"context_line":"                ctrl.gl_type \u003d \u0027powered\u0027;"},{"line_number":71,"context_line":"            }"},{"line_number":72,"context_line":"            var content_url \u003d refstackApiUrl + \u0027/guidelines\u0027;"},{"line_number":73,"context_line":"            ctrl.versionsRequest \u003d"},{"line_number":74,"context_line":"                $http.get(content_url).success(function (data) {"}],"source_content_type":"text/javascript","patch_set":20,"id":"9f6a8fd7_48da86e9","line":71,"range":{"start_line":66,"start_character":0,"end_line":71,"end_character":13},"in_reply_to":"9f6a8fd7_2eae3fe7","updated":"2018-05-03 15:42:26.000000000","message":"Done","commit_id":"2b541e662f56c33a9498851e701006f366b6d53a"},{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"dbdf3eba725499ddd54760e9985d407bafbeacd9","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            var content_url \u003d refstackApiUrl + \u0027/guidelines\u0027;"},{"line_number":73,"context_line":"            ctrl.versionsRequest \u003d"},{"line_number":74,"context_line":"                $http.get(content_url).success(function (data) {"},{"line_number":75,"context_line":"                    let gl_files \u003d data[ctrl.gl_type];"},{"line_number":76,"context_line":"                    let gl_names \u003d gl_files.map((gl_obj) \u003d\u003e gl_obj.name);"},{"line_number":77,"context_line":"                    ctrl.versionList \u003d gl_names.sort().reverse();"},{"line_number":78,"context_line":"                    let file_names \u003d gl_files.map((gl_obj) \u003d\u003e gl_obj.file);"},{"line_number":79,"context_line":"                    ctrl.fileList \u003d file_names.sort().reverse();"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"                    // Default to the first approved guideline which is expected"},{"line_number":82,"context_line":"                    // to be at index 1."},{"line_number":83,"context_line":"                    ctrl.version \u003d ctrl.versionList[1];"},{"line_number":84,"context_line":"                    ctrl.versionFile \u003d ctrl.fileList[1];"},{"line_number":85,"context_line":"                    ctrl.update();"},{"line_number":86,"context_line":"                }).error(function (error) {"},{"line_number":87,"context_line":"                    ctrl.showError \u003d true;"},{"line_number":88,"context_line":"                    ctrl.error \u003d \u0027Error retrieving version list: \u0027 +"}],"source_content_type":"text/javascript","patch_set":20,"id":"9f6a8fd7_ae5fafe3","line":85,"range":{"start_line":75,"start_character":0,"end_line":85,"end_character":34},"updated":"2018-04-30 20:26:24.000000000","message":"Updating should be isolated into a separate function as it is not necessary to send another GET request to the same endpoint over and over when the version list needs updating.\n\nJust set ctrl.guidelineData \u003d data here, so in the other function you can reuse ctrl.guidelineData to set the correct version list.\n\n        function updateVersionList() {\n            let gl_files \u003d ctrl.guidelineData[ctrl.gl_type];\n            ctrl.versionList \u003d $filter(\u0027orderBy\u0027)(gl_files, \u0027name\u0027, true);\n\n            // Default to the first approved guideline which is expected\n            // to be at index 1.\n            ctrl.version \u003d ctrl.versionList[1];\n            update();\n\n        }\n\nSetting ctrl.versionList to just the array of version objects keeps the name and file together so we when a specific version is chosen in the dropdown, we can use whichever property (i.e. name or file) we need.\n\nMake sure to inject \u0027$filter\u0027 on lines 22 and 29 of this file so we can use it.","commit_id":"2b541e662f56c33a9498851e701006f366b6d53a"},{"author":{"_account_id":24728,"name":"megan guiney","email":"meganmguiney@gmail.com","username":"mguiney"},"change_message_id":"de2285bc06071fe56b493c66058b2b98dfc602bc","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            var content_url \u003d refstackApiUrl + \u0027/guidelines\u0027;"},{"line_number":73,"context_line":"            ctrl.versionsRequest \u003d"},{"line_number":74,"context_line":"                $http.get(content_url).success(function (data) {"},{"line_number":75,"context_line":"                    let gl_files \u003d data[ctrl.gl_type];"},{"line_number":76,"context_line":"                    let gl_names \u003d gl_files.map((gl_obj) \u003d\u003e gl_obj.name);"},{"line_number":77,"context_line":"                    ctrl.versionList \u003d gl_names.sort().reverse();"},{"line_number":78,"context_line":"                    let file_names \u003d gl_files.map((gl_obj) \u003d\u003e gl_obj.file);"},{"line_number":79,"context_line":"                    ctrl.fileList \u003d file_names.sort().reverse();"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"                    // Default to the first approved guideline which is expected"},{"line_number":82,"context_line":"                    // to be at index 1."},{"line_number":83,"context_line":"                    ctrl.version \u003d ctrl.versionList[1];"},{"line_number":84,"context_line":"                    ctrl.versionFile \u003d ctrl.fileList[1];"},{"line_number":85,"context_line":"                    ctrl.update();"},{"line_number":86,"context_line":"                }).error(function (error) {"},{"line_number":87,"context_line":"                    ctrl.showError \u003d true;"},{"line_number":88,"context_line":"                    ctrl.error \u003d \u0027Error retrieving version list: \u0027 +"}],"source_content_type":"text/javascript","patch_set":20,"id":"9f6a8fd7_41b1018f","line":85,"range":{"start_line":75,"start_character":0,"end_line":85,"end_character":34},"in_reply_to":"9f6a8fd7_ae5fafe3","updated":"2018-05-03 15:42:26.000000000","message":"Done","commit_id":"2b541e662f56c33a9498851e701006f366b6d53a"},{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"dbdf3eba725499ddd54760e9985d407bafbeacd9","unresolved":false,"context_lines":[{"line_number":97,"context_line":"         */"},{"line_number":98,"context_line":"        function update() {"},{"line_number":99,"context_line":"            ctrl.content_url \u003d refstackApiUrl + \u0027/guidelines/\u0027"},{"line_number":100,"context_line":"                + ctrl.versionFile;"},{"line_number":101,"context_line":"            let get_params \u003d {\u0027gl_file\u0027: ctrl.versionFile};"},{"line_number":102,"context_line":"            ctrl.capsRequest \u003d"},{"line_number":103,"context_line":"                $http.get(ctrl.content_url, get_params).success("},{"line_number":104,"context_line":"                function (data) {"}],"source_content_type":"text/javascript","patch_set":20,"id":"9f6a8fd7_d99d0bbc","line":101,"range":{"start_line":100,"start_character":18,"end_line":101,"end_character":57},"updated":"2018-04-30 20:26:24.000000000","message":"ctrl.versionFile should now be ctrl.version.file if the above changes were implemented.","commit_id":"2b541e662f56c33a9498851e701006f366b6d53a"},{"author":{"_account_id":24728,"name":"megan guiney","email":"meganmguiney@gmail.com","username":"mguiney"},"change_message_id":"de2285bc06071fe56b493c66058b2b98dfc602bc","unresolved":false,"context_lines":[{"line_number":97,"context_line":"         */"},{"line_number":98,"context_line":"        function update() {"},{"line_number":99,"context_line":"            ctrl.content_url \u003d refstackApiUrl + \u0027/guidelines/\u0027"},{"line_number":100,"context_line":"                + ctrl.versionFile;"},{"line_number":101,"context_line":"            let get_params \u003d {\u0027gl_file\u0027: ctrl.versionFile};"},{"line_number":102,"context_line":"            ctrl.capsRequest \u003d"},{"line_number":103,"context_line":"                $http.get(ctrl.content_url, get_params).success("},{"line_number":104,"context_line":"                function (data) {"}],"source_content_type":"text/javascript","patch_set":20,"id":"9f6a8fd7_c162f116","line":101,"range":{"start_line":100,"start_character":18,"end_line":101,"end_character":57},"in_reply_to":"9f6a8fd7_d99d0bbc","updated":"2018-05-03 15:42:26.000000000","message":"Done","commit_id":"2b541e662f56c33a9498851e701006f366b6d53a"},{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"dbdf3eba725499ddd54760e9985d407bafbeacd9","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            // If it has not been updated since a powered gl listing, we"},{"line_number":142,"context_line":"            // will need to update the list"},{"line_number":143,"context_line":"            var current_target \u003d ctrl.versionFile.split(\u0027.\u0027)[0];"},{"line_number":144,"context_line":"            if ((ctrl.gl_type \u003d\u003d\u003d \u0027powered\u0027 \u0026\u0026 isNaN(current_target) ||"},{"line_number":145,"context_line":"                    ctrl.target !\u003d\u003d current_target) \u0026\u0026 !ctrl.updated) {"},{"line_number":146,"context_line":"                ctrl.updated \u003d true;"},{"line_number":147,"context_line":"                getVersionList();"},{"line_number":148,"context_line":"                return;"}],"source_content_type":"text/javascript","patch_set":20,"id":"9f6a8fd7_937214ad","line":145,"range":{"start_line":144,"start_character":12,"end_line":145,"end_character":71},"updated":"2018-04-30 20:26:24.000000000","message":"Seems this is true every time a user changes the target program. So the version list is always updated even in cases when it shouldn\u0027t be (Like when switching between compute and object or switching versions for OpenStack Powered Platforms. So this should be reworked a bit to cover only cases where the version list needs to be refreshed.\n\nI think a better way of doing it is to compare old gl_type with new gl_type. I think something like this should work:\n\n    var old_type \u003d ctrl.gl_type;\n    if (ctrl.target \u003d\u003d\u003d \u0027dns\u0027 || ctrl.target \u003d\u003d\u003d \u0027orchestration\u0027) {\n        ctrl.gl_type \u003d ctrl.target;\n\n    } else {\n        ctrl.gl_type \u003d \u0027powered\u0027;\n    }\n\n    console.log(ctrl.gl_type);\n    // If it has not been updated since a powered gl listing, we\n    // will need to update the list\n    var current_target \u003d ctrl.versionFile.split(\u0027.\u0027)[0];\n    if ((old_type !\u003d\u003d \u0027powered\u0027 \u0026\u0026 ctrl.gl_type \u003d\u003d\u003d \u0027powered\u0027 ||\n            (ctrl.gl_type !\u003d\u003d \u0027powered\u0027 \u0026\u0026 \n            ctrl.target !\u003d\u003d current_target)) \u0026\u0026 !ctrl.updated) {","commit_id":"2b541e662f56c33a9498851e701006f366b6d53a"},{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"dbdf3eba725499ddd54760e9985d407bafbeacd9","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            if ((ctrl.gl_type \u003d\u003d\u003d \u0027powered\u0027 \u0026\u0026 isNaN(current_target) ||"},{"line_number":145,"context_line":"                    ctrl.target !\u003d\u003d current_target) \u0026\u0026 !ctrl.updated) {"},{"line_number":146,"context_line":"                ctrl.updated \u003d true;"},{"line_number":147,"context_line":"                getVersionList();"},{"line_number":148,"context_line":"                return;"},{"line_number":149,"context_line":"            }"},{"line_number":150,"context_line":"            ctrl.updated \u003d false;"}],"source_content_type":"text/javascript","patch_set":20,"id":"9f6a8fd7_0e5edb11","line":147,"range":{"start_line":147,"start_character":16,"end_line":147,"end_character":32},"updated":"2018-04-30 20:26:24.000000000","message":"Should call updateVersionList here instead of getVersionList. Ex:\n\n  updateVersionList();","commit_id":"2b541e662f56c33a9498851e701006f366b6d53a"},{"author":{"_account_id":24728,"name":"megan guiney","email":"meganmguiney@gmail.com","username":"mguiney"},"change_message_id":"de2285bc06071fe56b493c66058b2b98dfc602bc","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            if ((ctrl.gl_type \u003d\u003d\u003d \u0027powered\u0027 \u0026\u0026 isNaN(current_target) ||"},{"line_number":145,"context_line":"                    ctrl.target !\u003d\u003d current_target) \u0026\u0026 !ctrl.updated) {"},{"line_number":146,"context_line":"                ctrl.updated \u003d true;"},{"line_number":147,"context_line":"                getVersionList();"},{"line_number":148,"context_line":"                return;"},{"line_number":149,"context_line":"            }"},{"line_number":150,"context_line":"            ctrl.updated \u003d false;"}],"source_content_type":"text/javascript","patch_set":20,"id":"9f6a8fd7_7c3628ea","line":147,"range":{"start_line":147,"start_character":16,"end_line":147,"end_character":32},"in_reply_to":"9f6a8fd7_0e5edb11","updated":"2018-05-03 15:42:26.000000000","message":"Done","commit_id":"2b541e662f56c33a9498851e701006f366b6d53a"},{"author":{"_account_id":9626,"name":"Paul Van Eck","email":"pvaneck@us.ibm.com","username":"pvaneck"},"change_message_id":"dbdf3eba725499ddd54760e9985d407bafbeacd9","unresolved":false,"context_lines":[{"line_number":290,"context_line":"     * test list corresponding to Interop WG capabilities with the selected"},{"line_number":291,"context_line":"     * statuses."},{"line_number":292,"context_line":"     */"},{"line_number":293,"context_line":"    function TestListModalController($uibModalInstance, $http, version,"},{"line_number":294,"context_line":"        target, status, refstackApiUrl) {"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"        var ctrl \u003d this;"}],"source_content_type":"text/javascript","patch_set":20,"id":"9f6a8fd7_53647ce5","line":293,"range":{"start_line":293,"start_character":13,"end_line":293,"end_character":36},"updated":"2018-04-30 20:26:24.000000000","message":"This also needs to be updated to work on the new add on guidelines along with the API endpoint.","commit_id":"2b541e662f56c33a9498851e701006f366b6d53a"},{"author":{"_account_id":24728,"name":"megan guiney","email":"meganmguiney@gmail.com","username":"mguiney"},"change_message_id":"de2285bc06071fe56b493c66058b2b98dfc602bc","unresolved":false,"context_lines":[{"line_number":290,"context_line":"     * test list corresponding to Interop WG capabilities with the selected"},{"line_number":291,"context_line":"     * statuses."},{"line_number":292,"context_line":"     */"},{"line_number":293,"context_line":"    function TestListModalController($uibModalInstance, $http, version,"},{"line_number":294,"context_line":"        target, status, refstackApiUrl) {"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"        var ctrl \u003d this;"}],"source_content_type":"text/javascript","patch_set":20,"id":"9f6a8fd7_dc897426","line":293,"range":{"start_line":293,"start_character":13,"end_line":293,"end_character":36},"in_reply_to":"9f6a8fd7_53647ce5","updated":"2018-05-03 15:42:26.000000000","message":"Done","commit_id":"2b541e662f56c33a9498851e701006f366b6d53a"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"8a097ec38eecaeb116c08e6139082e9a9664cebd","unresolved":false,"context_lines":[{"line_number":79,"context_line":"         * version list is called."},{"line_number":80,"context_line":"        */"},{"line_number":81,"context_line":"        function getVersionList() {"},{"line_number":82,"context_line":"            var content_url \u003d refstackApiUrl + \u0027/guidelines\u0027;"},{"line_number":83,"context_line":"            ctrl.versionsRequest \u003d"},{"line_number":84,"context_line":"                $http.get(content_url).success(function (data) {"},{"line_number":85,"context_line":"                    ctrl.guidelineData \u003d data;"}],"source_content_type":"text/javascript","patch_set":27,"id":"5f7c97a3_2c8963c9","line":82,"range":{"start_line":82,"start_character":1,"end_line":82,"end_character":61},"updated":"2018-05-07 22:43:22.000000000","message":"This call is returning a new data structure, which is causing the test at https://github.com/openstack/refstack/blob/6d473eed7d53a22e6c96dd637be250c9a31dbbab/refstack-ui/tests/unit/ControllerSpec.js#L159 to fail. The mock structure needs to be updated to reflect actual output from that endpoint.\n\nFormer output looks something like: [\u0027next.json\u0027, \u00272015.03.json\u0027, \u00272017.08.json\u0027]\nNew output looks something like this: {\"orchestration\": [{\"name\": \"2018.02.json\", \"file\": \"orchestration.2018.02.json\"}, {\"name\": \"next.json\", \"file\": \"orchestration.next.json\"}], \"dns\": [{\"name\": \"2018.02.json\", \"file\": \"dns.2018.02.json\"}, {\"name\": \"next.json\", \"file\": \"dns.next.json\"}], \"powered\": [{\"name\": \"2015.03.json\", \"file\": \"2015.03.json\"}, {\"name\": \"2015.04.json\", \"file\": \"2015.04.json\"}, {\"name\": \"2015.05.json\", \"file\": \"2015.05.json\"}, {\"name\": \"2015.07.json\", \"file\": \"2015.07.json\"}, {\"name\": \"2016.01.json\", \"file\": \"2016.01.json\"}, {\"name\": \"2016.08.json\", \"file\": \"2016.08.json\"}, {\"name\": \"2017.01.json\", \"file\": \"2017.01.json\"}, {\"name\": \"2017.09.json\", \"file\": \"2017.09.json\"}, {\"name\": \"2018.02.json\", \"file\": \"2018.02.json\"}, {\"name\": \"next.json\", \"file\": \"next.json\"}]}\n\nSee my refstack server (or a similar url for your own) vs the original for reference.\n\nhttps://71.193.207.139/v1/guidelines\nhttps://refstack.openstack.org/api/v1/guidelines","commit_id":"56abfdce908032209a93a9249c6301a2eb02f0f4"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"8a097ec38eecaeb116c08e6139082e9a9664cebd","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        .module(\u0027refstackApp\u0027)"},{"line_number":286,"context_line":"        .controller(\u0027TestListModalController\u0027, TestListModalController);"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    TestListModalController.$inject \u003d ["},{"line_number":289,"context_line":"        \u0027$uibModalInstance\u0027, \u0027$http\u0027, \u0027version\u0027,"},{"line_number":290,"context_line":"        \u0027version_file\u0027, \u0027target\u0027, \u0027status\u0027,"},{"line_number":291,"context_line":"        \u0027refstackApiUrl\u0027"},{"line_number":292,"context_line":"    ];"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    /**"},{"line_number":295,"context_line":"     * Test List Modal Controller"}],"source_content_type":"text/javascript","patch_set":27,"id":"5f7c97a3_6c143b4f","line":292,"range":{"start_line":288,"start_character":0,"end_line":292,"end_character":6},"updated":"2018-05-07 22:43:22.000000000","message":"The expected signature has changed, and the tests that run against the modal controller need to be updated to reflect that. For example:\n\nhttps://github.com/openstack/refstack/blob/6d473eed7d53a22e6c96dd637be250c9a31dbbab/refstack-ui/tests/unit/ControllerSpec.js#L282-L313","commit_id":"56abfdce908032209a93a9249c6301a2eb02f0f4"}],"refstack-ui/app/components/results/resultsController.js":[{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"8a097ec38eecaeb116c08e6139082e9a9664cebd","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                return;"},{"line_number":213,"context_line":"            }"},{"line_number":214,"context_line":"            var content_url \u003d refstackApiUrl + \u0027/guidelines\u0027;"},{"line_number":215,"context_line":"            ctrl.versionsRequest \u003d"},{"line_number":216,"context_line":"                $http.get(content_url).success(function (data) {"},{"line_number":217,"context_line":"                    ctrl.versionList \u003d data.sort().reverse();"},{"line_number":218,"context_line":"                }).error(function (error) {"},{"line_number":219,"context_line":"                    raiseAlert(\u0027danger\u0027, error.title,"},{"line_number":220,"context_line":"                               \u0027Unable to retrieve version list\u0027);"}],"source_content_type":"text/javascript","patch_set":27,"id":"5f7c97a3_37dd3070","line":217,"range":{"start_line":215,"start_character":0,"end_line":217,"end_character":61},"updated":"2018-05-07 22:43:22.000000000","message":"Since the guidelines endpoint returns a map instead of a list, this test fails because as far as I can tell maps don\u0027t have a sort function.","commit_id":"56abfdce908032209a93a9249c6301a2eb02f0f4"}],"refstack-ui/tests/unit/ControllerSpec.js":[{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"8a097ec38eecaeb116c08e6139082e9a9664cebd","unresolved":false,"context_lines":[{"line_number":527,"context_line":"            $httpBackend.when(\u0027GET\u0027, fakeApiUrl +"},{"line_number":528,"context_line":"                \u0027/results/1234\u0027).respond(fakeResultResponse);"},{"line_number":529,"context_line":"            $httpBackend.when(\u0027GET\u0027, fakeApiUrl +"},{"line_number":530,"context_line":"                \u0027/guidelines\u0027).respond([\u00272015.03.json\u0027, \u00272015.04.json\u0027]);"},{"line_number":531,"context_line":"            $httpBackend.when(\u0027GET\u0027, fakeApiUrl +"},{"line_number":532,"context_line":"                \u0027/guidelines/2015.04.json\u0027).respond(fakeCapabilityResponse);"},{"line_number":533,"context_line":"        }));"}],"source_content_type":"text/javascript","patch_set":27,"id":"5f7c97a3_f7bfb8f8","line":530,"updated":"2018-05-07 22:43:22.000000000","message":"Need to check against new guidelines response signature","commit_id":"56abfdce908032209a93a9249c6301a2eb02f0f4"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"8a097ec38eecaeb116c08e6139082e9a9664cebd","unresolved":false,"context_lines":[{"line_number":538,"context_line":"                $httpBackend.expectGET(fakeApiUrl +"},{"line_number":539,"context_line":"                \u0027/results/1234\u0027).respond(fakeResultResponse);"},{"line_number":540,"context_line":"                $httpBackend.expectGET(fakeApiUrl +"},{"line_number":541,"context_line":"                \u0027/guidelines\u0027).respond([\u00272015.03.json\u0027, \u00272015.04.json\u0027]);"},{"line_number":542,"context_line":"                // Should call request with latest version."},{"line_number":543,"context_line":"                $httpBackend.expectGET(fakeApiUrl +"},{"line_number":544,"context_line":"                \u0027/guidelines/2015.04.json\u0027).respond(fakeCapabilityResponse);"}],"source_content_type":"text/javascript","patch_set":27,"id":"5f7c97a3_5746ac23","line":541,"updated":"2018-05-07 22:43:22.000000000","message":"Need to check against new guidelines response signature","commit_id":"56abfdce908032209a93a9249c6301a2eb02f0f4"}],"refstack/api/app.py":[{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"4859fd34a6f3b1d6b5e4344585576eb38e1ccdee","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                default\u003d[],"},{"line_number":93,"context_line":"                help\u003d\u0027The GitHub API URL of the repository and location of \u0027"},{"line_number":94,"context_line":"                     \u0027any additional guideline sources which will need to \u0027"},{"line_number":95,"context_line":"                     \u0027be parsed by the refstack API. This, for now, mostly \u0027"},{"line_number":96,"context_line":"                     \u0027pertains to add-on capabilities.\u0027),"},{"line_number":97,"context_line":"    cfg.StrOpt(\u0027github_raw_base_url\u0027,"},{"line_number":98,"context_line":"               default\u003d\u0027https://raw.githubusercontent.com\u0027"},{"line_number":99,"context_line":"                       \u0027/openstack/interop/master/\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa0c359_f4fab1b7","line":96,"range":{"start_line":95,"start_character":53,"end_line":96,"end_character":55},"updated":"2018-02-26 10:09:24.000000000","message":"Don\u0027t need this comment, especially since there are third parties that use RefStack Server.","commit_id":"20e6deda9869d912a46ba8af342bec7cd268fa6e"},{"author":{"_account_id":24728,"name":"megan guiney","email":"meganmguiney@gmail.com","username":"mguiney"},"change_message_id":"1601ace4457bf71d8524f4ce452ab1a8344855a3","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                default\u003d[],"},{"line_number":93,"context_line":"                help\u003d\u0027The GitHub API URL of the repository and location of \u0027"},{"line_number":94,"context_line":"                     \u0027any additional guideline sources which will need to \u0027"},{"line_number":95,"context_line":"                     \u0027be parsed by the refstack API. This, for now, mostly \u0027"},{"line_number":96,"context_line":"                     \u0027pertains to add-on capabilities.\u0027),"},{"line_number":97,"context_line":"    cfg.StrOpt(\u0027github_raw_base_url\u0027,"},{"line_number":98,"context_line":"               default\u003d\u0027https://raw.githubusercontent.com\u0027"},{"line_number":99,"context_line":"                       \u0027/openstack/interop/master/\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f9dbf25_f75fd7e2","line":96,"range":{"start_line":95,"start_character":53,"end_line":96,"end_character":55},"in_reply_to":"3fa0c359_f4fab1b7","updated":"2018-03-01 13:07:29.000000000","message":"Done","commit_id":"20e6deda9869d912a46ba8af342bec7cd268fa6e"},{"author":{"_account_id":7822,"name":"Chris Hoge (not involved in upstream development)","email":"chris@hogepodge.com","username":"hogepodge"},"change_message_id":"97c16c25b9f34a3dd7b2b794ff960c14cf4deb89","unresolved":false,"context_lines":[{"line_number":90,"context_line":"               ),"},{"line_number":91,"context_line":"    cfg.StrOpt(\u0027additional_capability_urls\u0027,"},{"line_number":92,"context_line":"               default\u003d[],"},{"line_number":93,"context_line":"               help\u003d(\u0027The GitHub API URL of the repository and location of \u0027"},{"line_number":94,"context_line":"                     \u0027any additional guideline sources which will need to \u0027"},{"line_number":95,"context_line":"                     \u0027be parsed by the refstack API.\u0027)),"},{"line_number":96,"context_line":"    cfg.StrOpt(\u0027github_raw_base_url\u0027,"},{"line_number":97,"context_line":"               default\u003d\u0027https://raw.githubusercontent.com\u0027"},{"line_number":98,"context_line":"                       \u0027/openstack/interop/master/\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_166ce434","line":95,"range":{"start_line":93,"start_character":22,"end_line":95,"end_character":52},"updated":"2018-03-20 17:56:15.000000000","message":"There\u0027s going to be a pretty strict format for file names here. We should document it.","commit_id":"180db81ea2b055e1357a66fc7de1e230f4acdd1a"}]}
