)]}'
{".zuul.d/rally-task-barbican.yaml":[{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"50ff8cf7eabcca8e25488b1ad5144a2a6d508190","unresolved":false,"context_lines":[{"line_number":7,"context_line":"      - name: openstack/rally"},{"line_number":8,"context_line":"      - name: openstack/rally-openstack"},{"line_number":9,"context_line":"      - name: openstack/barbican"},{"line_number":10,"context_line":"      - name: openstack/python-barbicanclient"},{"line_number":11,"context_line":"    vars:"},{"line_number":12,"context_line":"      devstack_plugins:"},{"line_number":13,"context_line":"        rally-openstack: https://git.openstack.org/openstack/rally-openstack"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3f79a3b5_ca1c6916","line":10,"updated":"2018-10-08 02:41:24.000000000","message":"Please remove this line, it should not be required.","commit_id":"294bb05b19941437d91d9edb684b219025ff89e5"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"f6f0182a8003a9339e14d0247cc3f48350278524","unresolved":false,"context_lines":[{"line_number":7,"context_line":"      - name: openstack/rally"},{"line_number":8,"context_line":"      - name: openstack/rally-openstack"},{"line_number":9,"context_line":"      - name: openstack/barbican"},{"line_number":10,"context_line":"      - name: openstack/python-barbicanclient"},{"line_number":11,"context_line":"    vars:"},{"line_number":12,"context_line":"      devstack_plugins:"},{"line_number":13,"context_line":"        rally-openstack: https://git.openstack.org/openstack/rally-openstack"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3f79a3b5_5d479d7b","line":10,"in_reply_to":"3f79a3b5_ca1c6916","updated":"2018-10-09 13:52:41.000000000","message":"Done","commit_id":"294bb05b19941437d91d9edb684b219025ff89e5"},{"author":{"_account_id":26109,"name":"Aakarsh","email":"aakarsh.g2012@gmail.com","username":"agopi"},"change_message_id":"28d9a2ce3d277c6700dcd104a443d5f647ae2da2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    vars:"},{"line_number":12,"context_line":"      devstack_plugins:"},{"line_number":13,"context_line":"        rally-openstack: https://git.openstack.org/openstack/rally-openstack"},{"line_number":14,"context_line":"        barbican: https://git.openstack.org/openstack/brabican"},{"line_number":15,"context_line":"      devstack_services:"},{"line_number":16,"context_line":"        barbican: true"},{"line_number":17,"context_line":"        # disable redundant services for the job"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"3f79a3b5_a3ea489d","line":14,"range":{"start_line":14,"start_character":54,"end_line":14,"end_character":62},"updated":"2018-10-09 21:19:44.000000000","message":"requires an edit","commit_id":"ea277c50a5a3fbf5de8bd940fa4245ff834ee4ab"}],".zuul.d/zuul.yaml":[{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"50ff8cf7eabcca8e25488b1ad5144a2a6d508190","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            # use_existing_users key did not trigger proper ansible tasks"},{"line_number":56,"context_line":"            voting: false"},{"line_number":57,"context_line":"        - rally-task-cinder"},{"line_number":58,"context_line":"        - rally-task-barbican:"},{"line_number":59,"context_line":"            voting: false"},{"line_number":60,"context_line":"        # NOTE(andreykurilin): this requires more thing to configure before"},{"line_number":61,"context_line":"        #   launching."},{"line_number":62,"context_line":"        #- rally-task-designate"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3f79a3b5_0aa6e1c1","line":59,"range":{"start_line":58,"start_character":0,"end_line":59,"end_character":25},"updated":"2018-10-08 02:41:24.000000000","message":"Move up to rally-task-cinder front.Sort them in alphabetic order","commit_id":"294bb05b19941437d91d9edb684b219025ff89e5"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"f6f0182a8003a9339e14d0247cc3f48350278524","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            # use_existing_users key did not trigger proper ansible tasks"},{"line_number":56,"context_line":"            voting: false"},{"line_number":57,"context_line":"        - rally-task-cinder"},{"line_number":58,"context_line":"        - rally-task-barbican:"},{"line_number":59,"context_line":"            voting: false"},{"line_number":60,"context_line":"        # NOTE(andreykurilin): this requires more thing to configure before"},{"line_number":61,"context_line":"        #   launching."},{"line_number":62,"context_line":"        #- rally-task-designate"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3f79a3b5_9d29b59d","line":59,"range":{"start_line":58,"start_character":0,"end_line":59,"end_character":25},"in_reply_to":"3f79a3b5_0aa6e1c1","updated":"2018-10-09 13:52:41.000000000","message":"Done","commit_id":"294bb05b19941437d91d9edb684b219025ff89e5"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"50ff8cf7eabcca8e25488b1ad5144a2a6d508190","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        - rally-docker-check"},{"line_number":108,"context_line":"        - rally-task-simple-job"},{"line_number":109,"context_line":"        - rally-task-cinder"},{"line_number":110,"context_line":"        - rally-task-barbican"},{"line_number":111,"context_line":"        #- rally-task-heat"},{"line_number":112,"context_line":"        - rally-task-ironic"},{"line_number":113,"context_line":"        - rally-task-keystone-glance-swift"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3f79a3b5_eac7e564","line":110,"updated":"2018-10-08 02:41:24.000000000","message":"Remove this line. we could not check it on gates if the job is not voted in check.","commit_id":"294bb05b19941437d91d9edb684b219025ff89e5"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"f6f0182a8003a9339e14d0247cc3f48350278524","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        - rally-docker-check"},{"line_number":108,"context_line":"        - rally-task-simple-job"},{"line_number":109,"context_line":"        - rally-task-cinder"},{"line_number":110,"context_line":"        - rally-task-barbican"},{"line_number":111,"context_line":"        #- rally-task-heat"},{"line_number":112,"context_line":"        - rally-task-ironic"},{"line_number":113,"context_line":"        - rally-task-keystone-glance-swift"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3f79a3b5_fd1a297e","line":110,"in_reply_to":"3f79a3b5_eac7e564","updated":"2018-10-09 13:52:41.000000000","message":"Done","commit_id":"294bb05b19941437d91d9edb684b219025ff89e5"}],"CHANGELOG.rst":[{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"999fcd578725ecac99b48046e46f6086c6070f32","unresolved":false,"context_lines":[{"line_number":38,"context_line":"* The documentation for ``existing@openstack`` plugin is extended with"},{"line_number":39,"context_line":"  information about accepted system environment variables via"},{"line_number":40,"context_line":"  ``rally env create --from-sysenv`` command."},{"line_number":41,"context_line":"* Extended documentation for ``existing@openstack`` plugin which includes"},{"line_number":42,"context_line":"  accepted system environment variables for ``rally env create --from-sysenv``"},{"line_number":43,"context_line":"  action."},{"line_number":44,"context_line":"* Added barbican scenarios."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Chianged"}],"source_content_type":"text/x-rst","patch_set":30,"id":"3f79a3b5_af3f8920","line":43,"range":{"start_line":41,"start_character":0,"end_line":43,"end_character":9},"updated":"2018-10-10 02:12:47.000000000","message":"Please remove this item, The up item is the new for the change.","commit_id":"a294f5991b6032d3ab08631f4ef37b70d6730764"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"d32cd65183b15f5ce727ca22e7da1775173cf1e5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"* The documentation for ``existing@openstack`` plugin is extended with"},{"line_number":39,"context_line":"  information about accepted system environment variables via"},{"line_number":40,"context_line":"  ``rally env create --from-sysenv`` command."},{"line_number":41,"context_line":"* Extended documentation for ``existing@openstack`` plugin which includes"},{"line_number":42,"context_line":"  accepted system environment variables for ``rally env create --from-sysenv``"},{"line_number":43,"context_line":"  action."},{"line_number":44,"context_line":"* Added barbican scenarios."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Chianged"}],"source_content_type":"text/x-rst","patch_set":30,"id":"3f79a3b5_0f7f9ddf","line":43,"range":{"start_line":41,"start_character":0,"end_line":43,"end_character":9},"in_reply_to":"3f79a3b5_af3f8920","updated":"2018-10-10 02:15:54.000000000","message":"Done","commit_id":"a294f5991b6032d3ab08631f4ef37b70d6730764"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"999fcd578725ecac99b48046e46f6086c6070f32","unresolved":false,"context_lines":[{"line_number":43,"context_line":"  action."},{"line_number":44,"context_line":"* Added barbican scenarios."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Chianged"},{"line_number":47,"context_line":"~~~~~~~"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"* Our requirements are updated as like upper-constraints (the list of"}],"source_content_type":"text/x-rst","patch_set":30,"id":"3f79a3b5_6f13b1b8","line":46,"updated":"2018-10-10 02:12:47.000000000","message":"* Changed","commit_id":"a294f5991b6032d3ab08631f4ef37b70d6730764"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"d32cd65183b15f5ce727ca22e7da1775173cf1e5","unresolved":false,"context_lines":[{"line_number":43,"context_line":"  action."},{"line_number":44,"context_line":"* Added barbican scenarios."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Chianged"},{"line_number":47,"context_line":"~~~~~~~"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"* Our requirements are updated as like upper-constraints (the list of"}],"source_content_type":"text/x-rst","patch_set":30,"id":"3f79a3b5_2f8299c8","line":46,"in_reply_to":"3f79a3b5_6f13b1b8","updated":"2018-10-10 02:15:54.000000000","message":"Done","commit_id":"a294f5991b6032d3ab08631f4ef37b70d6730764"}],"rally-jobs/barbican.yaml":[{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"50ff8cf7eabcca8e25488b1ad5144a2a6d508190","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"  version: 2"},{"line_number":3,"context_line":"  title: Task for rally-task-barbican-job"},{"line_number":4,"context_line":"  description: Testing just one cinder scenario to verify that rally-task-barbican works"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3f79a3b5_6ad3d538","line":1,"updated":"2018-10-08 02:41:24.000000000","message":"Please add other scenarios into workload. it would be better to check every scenario.","commit_id":"294bb05b19941437d91d9edb684b219025ff89e5"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"f6f0182a8003a9339e14d0247cc3f48350278524","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"  version: 2"},{"line_number":3,"context_line":"  title: Task for rally-task-barbican-job"},{"line_number":4,"context_line":"  description: Testing just one cinder scenario to verify that rally-task-barbican works"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3f79a3b5_e3ca8a6d","line":1,"in_reply_to":"3f79a3b5_6ad3d538","updated":"2018-10-09 13:52:41.000000000","message":"Done","commit_id":"294bb05b19941437d91d9edb684b219025ff89e5"}],"rally_openstack/cleanup/resources.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"477843ad019fb8be9983687e3ad3dcd46a6afbce","unresolved":false,"context_lines":[{"line_number":1047,"context_line":"# BARBICAN"},{"line_number":1048,"context_line":""},{"line_number":1049,"context_line":""},{"line_number":1050,"context_line":"@base.resource(\"barbican\", \"secrets\", order\u003d1500, tenant_resource\u003dTrue)"},{"line_number":1051,"context_line":"class BarbicanSecrets(base.ResourceManager):"},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    def id(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_4ee60dea","line":1050,"range":{"start_line":1050,"start_character":0,"end_line":1050,"end_character":71},"updated":"2018-09-26 16:13:12.000000000","message":"It looks like you need to add `admin_required\u003dTrue` and `perform_for_admin_only\u003dTrue`. Not sure that secrets are tenant resources.","commit_id":"713f68522b55d16eda909d2e7b65d796a6589a24"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"ae759604a0a21bccc98ef3484d0aba9ebbf0c4c9","unresolved":false,"context_lines":[{"line_number":1047,"context_line":"# BARBICAN"},{"line_number":1048,"context_line":""},{"line_number":1049,"context_line":""},{"line_number":1050,"context_line":"@base.resource(\"barbican\", \"secrets\", order\u003d1500, tenant_resource\u003dTrue)"},{"line_number":1051,"context_line":"class BarbicanSecrets(base.ResourceManager):"},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    def id(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_d1507c2f","line":1050,"range":{"start_line":1050,"start_character":0,"end_line":1050,"end_character":71},"in_reply_to":"3f79a3b5_4ee60dea","updated":"2018-09-26 17:12:24.000000000","message":"Done","commit_id":"713f68522b55d16eda909d2e7b65d796a6589a24"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"477843ad019fb8be9983687e3ad3dcd46a6afbce","unresolved":false,"context_lines":[{"line_number":1050,"context_line":"@base.resource(\"barbican\", \"secrets\", order\u003d1500, tenant_resource\u003dTrue)"},{"line_number":1051,"context_line":"class BarbicanSecrets(base.ResourceManager):"},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    def id(self):"},{"line_number":1054,"context_line":"        return self.raw_resource.secret_ref"},{"line_number":1055,"context_line":""},{"line_number":1056,"context_line":"    def list(self):"},{"line_number":1057,"context_line":"        # Not sure what to put here"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_2ecdd12f","line":1054,"range":{"start_line":1053,"start_character":0,"end_line":1054,"end_character":43},"updated":"2018-09-26 16:13:12.000000000","message":"if the id is similar to name, can you override name method as well?\n\n   def name(self):\n       return self.id()","commit_id":"713f68522b55d16eda909d2e7b65d796a6589a24"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"ae759604a0a21bccc98ef3484d0aba9ebbf0c4c9","unresolved":false,"context_lines":[{"line_number":1050,"context_line":"@base.resource(\"barbican\", \"secrets\", order\u003d1500, tenant_resource\u003dTrue)"},{"line_number":1051,"context_line":"class BarbicanSecrets(base.ResourceManager):"},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    def id(self):"},{"line_number":1054,"context_line":"        return self.raw_resource.secret_ref"},{"line_number":1055,"context_line":""},{"line_number":1056,"context_line":"    def list(self):"},{"line_number":1057,"context_line":"        # Not sure what to put here"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_9130c408","line":1054,"range":{"start_line":1053,"start_character":0,"end_line":1054,"end_character":43},"in_reply_to":"3f79a3b5_2ecdd12f","updated":"2018-09-26 17:12:24.000000000","message":"Done","commit_id":"713f68522b55d16eda909d2e7b65d796a6589a24"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"477843ad019fb8be9983687e3ad3dcd46a6afbce","unresolved":false,"context_lines":[{"line_number":1053,"context_line":"    def id(self):"},{"line_number":1054,"context_line":"        return self.raw_resource.secret_ref"},{"line_number":1055,"context_line":""},{"line_number":1056,"context_line":"    def list(self):"},{"line_number":1057,"context_line":"        # Not sure what to put here"},{"line_number":1058,"context_line":"        return []"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_4e34cd49","line":1058,"range":{"start_line":1056,"start_character":0,"end_line":1058,"end_character":17},"updated":"2018-09-26 16:13:12.000000000","message":"You need something like:\n\n    def _client(self):\n        return image.Image(self.admin)\n\n    def list(self):\n        return self._client().list_secrets()\n\n    def delete(self):\n        self._client().delete_secret(self.id())","commit_id":"713f68522b55d16eda909d2e7b65d796a6589a24"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"ae759604a0a21bccc98ef3484d0aba9ebbf0c4c9","unresolved":false,"context_lines":[{"line_number":1053,"context_line":"    def id(self):"},{"line_number":1054,"context_line":"        return self.raw_resource.secret_ref"},{"line_number":1055,"context_line":""},{"line_number":1056,"context_line":"    def list(self):"},{"line_number":1057,"context_line":"        # Not sure what to put here"},{"line_number":1058,"context_line":"        return []"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_7116485b","line":1058,"range":{"start_line":1056,"start_character":0,"end_line":1058,"end_character":17},"in_reply_to":"3f79a3b5_4e34cd49","updated":"2018-09-26 17:12:24.000000000","message":"Done","commit_id":"713f68522b55d16eda909d2e7b65d796a6589a24"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7e930483e32f1aa6d0cb8442c38d6ddec13f7f62","unresolved":false,"context_lines":[{"line_number":1050,"context_line":"@base.resource(\"barbican\", \"secrets\", order\u003d1500, perform_for_admin_only\u003dTrue)"},{"line_number":1051,"context_line":"class BarbicanSecrets(base.ResourceManager):"},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    def id(self):"},{"line_number":1054,"context_line":"        return self.id()"},{"line_number":1055,"context_line":""},{"line_number":1056,"context_line":"    def list(self):"},{"line_number":1057,"context_line":"        return self._client().list_secrets()"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_da708176","line":1054,"range":{"start_line":1053,"start_character":4,"end_line":1054,"end_character":24},"updated":"2018-09-27 12:36:06.000000000","message":"it is recursion which shows that this method is not covered by unittests ;)\n\nYou need separate `id` method which takes the ID from self.raw_resource and method `name` which returns a name of the resource, so it can be filtered (to understand whether it was created by Rally or not[0])\n\n[0] - https://github.com/openstack/rally-openstack/blob/master/rally_openstack/cleanup/manager.py#L172-L176","commit_id":"27f83c81b1235d6e19a68be5b1046f701e0ca9da"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"c7aa66c4fb420bc740db33529bb858b5da56abd9","unresolved":false,"context_lines":[{"line_number":1050,"context_line":"@base.resource(\"barbican\", \"secrets\", order\u003d1500, perform_for_admin_only\u003dTrue)"},{"line_number":1051,"context_line":"class BarbicanSecrets(base.ResourceManager):"},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    def id(self):"},{"line_number":1054,"context_line":"        return self.id()"},{"line_number":1055,"context_line":""},{"line_number":1056,"context_line":"    def list(self):"},{"line_number":1057,"context_line":"        return self._client().list_secrets()"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_9d38c0d4","line":1054,"range":{"start_line":1053,"start_character":4,"end_line":1054,"end_character":24},"in_reply_to":"3f79a3b5_da708176","updated":"2018-09-27 14:41:39.000000000","message":"Done","commit_id":"27f83c81b1235d6e19a68be5b1046f701e0ca9da"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7e930483e32f1aa6d0cb8442c38d6ddec13f7f62","unresolved":false,"context_lines":[{"line_number":1054,"context_line":"        return self.id()"},{"line_number":1055,"context_line":""},{"line_number":1056,"context_line":"    def list(self):"},{"line_number":1057,"context_line":"        return self._client().list_secrets()"},{"line_number":1058,"context_line":""},{"line_number":1059,"context_line":"    def delete(self):"},{"line_number":1060,"context_line":"        return self._client().delete_secret(self.id())"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_daf5e1cd","line":1057,"range":{"start_line":1057,"start_character":15,"end_line":1057,"end_character":29},"updated":"2018-09-27 12:36:06.000000000","message":"you need to declare `_client` method as like I did in the comment to previous patch-set","commit_id":"27f83c81b1235d6e19a68be5b1046f701e0ca9da"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"c7aa66c4fb420bc740db33529bb858b5da56abd9","unresolved":false,"context_lines":[{"line_number":1054,"context_line":"        return self.id()"},{"line_number":1055,"context_line":""},{"line_number":1056,"context_line":"    def list(self):"},{"line_number":1057,"context_line":"        return self._client().list_secrets()"},{"line_number":1058,"context_line":""},{"line_number":1059,"context_line":"    def delete(self):"},{"line_number":1060,"context_line":"        return self._client().delete_secret(self.id())"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_7d2da48d","line":1057,"range":{"start_line":1057,"start_character":15,"end_line":1057,"end_character":29},"in_reply_to":"3f79a3b5_daf5e1cd","updated":"2018-09-27 14:41:39.000000000","message":"Done","commit_id":"27f83c81b1235d6e19a68be5b1046f701e0ca9da"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"f9e1f8432fbef2bf7cde22fea48499c7b93ff5ab","unresolved":false,"context_lines":[{"line_number":1047,"context_line":"# BARBICAN"},{"line_number":1048,"context_line":""},{"line_number":1049,"context_line":""},{"line_number":1050,"context_line":"@base.resource(\"barbican\", \"secrets\", order\u003d1500, perform_for_admin_only\u003dTrue)"},{"line_number":1051,"context_line":"class BarbicanSecrets(base.ResourceManager):"},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    def id(self):"}],"source_content_type":"text/x-python","patch_set":35,"id":"3f79a3b5_16922afd","line":1050,"range":{"start_line":1050,"start_character":15,"end_line":1050,"end_character":78},"updated":"2018-10-11 13:37:50.000000000","message":"add here \u0027admin_required\u003dTrue\u0027","commit_id":"38906ebff7d583d71fdcec5201a8b6b43c2736ba"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"fe116e2ef03ca6cdb5c94600f3920e64ba2b9fcc","unresolved":false,"context_lines":[{"line_number":1047,"context_line":"# BARBICAN"},{"line_number":1048,"context_line":""},{"line_number":1049,"context_line":""},{"line_number":1050,"context_line":"@base.resource(\"barbican\", \"secrets\", order\u003d1500, perform_for_admin_only\u003dTrue)"},{"line_number":1051,"context_line":"class BarbicanSecrets(base.ResourceManager):"},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    def id(self):"}],"source_content_type":"text/x-python","patch_set":35,"id":"3f79a3b5_794a7124","line":1050,"range":{"start_line":1050,"start_character":15,"end_line":1050,"end_character":78},"in_reply_to":"3f79a3b5_16922afd","updated":"2018-10-11 13:49:21.000000000","message":"Done","commit_id":"38906ebff7d583d71fdcec5201a8b6b43c2736ba"}],"rally_openstack/scenarios/barbican/secrets.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"bd24051433867c4c1ffeb3855c7b8682fc9c69eb","unresolved":false,"context_lines":[{"line_number":25,"context_line":"@validation.add(\"required_platform\", platform\u003d\"openstack\", users\u003dTrue)"},{"line_number":26,"context_line":"@scenario.configure(context\u003d{\"cleanup@openstack\": [\"barbican\"]},"},{"line_number":27,"context_line":"                    name\u003d\"BarbicanSecrets.list\")"},{"line_number":28,"context_line":"class BarbicanSecretsList(barbicanutils.BarbicanBase):"},{"line_number":29,"context_line":"    def run(self):"},{"line_number":30,"context_line":"        \"\"\"List secrets.\"\"\""},{"line_number":31,"context_line":"        self.admin_barbican.list_secrets()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_e375b998","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":54},"updated":"2018-09-26 10:28:04.000000000","message":"Do all actions performed in these scenarios require admin privileges?","commit_id":"5b26b2d56ce018278eed903d42202b489dd229eb"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"50718b286f4570a01c36c420c608772d8f21b662","unresolved":false,"context_lines":[{"line_number":25,"context_line":"@validation.add(\"required_platform\", platform\u003d\"openstack\", users\u003dTrue)"},{"line_number":26,"context_line":"@scenario.configure(context\u003d{\"cleanup@openstack\": [\"barbican\"]},"},{"line_number":27,"context_line":"                    name\u003d\"BarbicanSecrets.list\")"},{"line_number":28,"context_line":"class BarbicanSecretsList(barbicanutils.BarbicanBase):"},{"line_number":29,"context_line":"    def run(self):"},{"line_number":30,"context_line":"        \"\"\"List secrets.\"\"\""},{"line_number":31,"context_line":"        self.admin_barbican.list_secrets()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_0e8c9537","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":54},"in_reply_to":"3f79a3b5_2dd2bafe","updated":"2018-09-26 16:02:17.000000000","message":"In this case, you need to modify L25 and similar ones, to require admin instead of users. It should be like:\n\n    @validation.add(\"required_platform\", platform\u003d\"openstack\", admin\u003dTrue)","commit_id":"5b26b2d56ce018278eed903d42202b489dd229eb"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"3b0521b4e260429c411a4e8c4ccca6967d64d0ec","unresolved":false,"context_lines":[{"line_number":25,"context_line":"@validation.add(\"required_platform\", platform\u003d\"openstack\", users\u003dTrue)"},{"line_number":26,"context_line":"@scenario.configure(context\u003d{\"cleanup@openstack\": [\"barbican\"]},"},{"line_number":27,"context_line":"                    name\u003d\"BarbicanSecrets.list\")"},{"line_number":28,"context_line":"class BarbicanSecretsList(barbicanutils.BarbicanBase):"},{"line_number":29,"context_line":"    def run(self):"},{"line_number":30,"context_line":"        \"\"\"List secrets.\"\"\""},{"line_number":31,"context_line":"        self.admin_barbican.list_secrets()"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_2dd2bafe","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":54},"in_reply_to":"3f79a3b5_e375b998","updated":"2018-09-26 15:11:13.000000000","message":"Yes in order for the scenarios to work they require admin privileges.","commit_id":"5b26b2d56ce018278eed903d42202b489dd229eb"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"477843ad019fb8be9983687e3ad3dcd46a6afbce","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    def run(self):"},{"line_number":66,"context_line":"        \"\"\"Create and Delete secret.\"\"\""},{"line_number":67,"context_line":"        secret \u003d self.admin_barbican.create_secret()"},{"line_number":68,"context_line":"        self.admin_barbican.delete_secret(secret.secret_ref)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"@validation.add(\"required_services\", services\u003d[consts.Service.BARBICAN])"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_8e78a5f7","line":68,"range":{"start_line":68,"start_character":49,"end_line":68,"end_character":59},"updated":"2018-09-26 16:13:12.000000000","message":"Does secret_ref refer to name or to uuid?","commit_id":"713f68522b55d16eda909d2e7b65d796a6589a24"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"ae759604a0a21bccc98ef3484d0aba9ebbf0c4c9","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    def run(self):"},{"line_number":66,"context_line":"        \"\"\"Create and Delete secret.\"\"\""},{"line_number":67,"context_line":"        secret \u003d self.admin_barbican.create_secret()"},{"line_number":68,"context_line":"        self.admin_barbican.delete_secret(secret.secret_ref)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"@validation.add(\"required_services\", services\u003d[consts.Service.BARBICAN])"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_d1187cce","line":68,"range":{"start_line":68,"start_character":49,"end_line":68,"end_character":59},"in_reply_to":"3f79a3b5_8e78a5f7","updated":"2018-09-26 17:12:24.000000000","message":"yes","commit_id":"713f68522b55d16eda909d2e7b65d796a6589a24"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"477843ad019fb8be9983687e3ad3dcd46a6afbce","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        :param secret_ref: Name of the secret to get"},{"line_number":80,"context_line":"        \"\"\""},{"line_number":81,"context_line":"        if secret_ref is None:"},{"line_number":82,"context_line":"            secret_name \u003d self.admin_barbican.create_secret()"},{"line_number":83,"context_line":"            self.admin_barbican.get_secret(secret_name.secret_ref)"},{"line_number":84,"context_line":"        else:"},{"line_number":85,"context_line":"            self.admin_barbican.get_secret(secret_ref)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_ee235905","line":82,"range":{"start_line":82,"start_character":12,"end_line":82,"end_character":23},"updated":"2018-09-26 16:13:12.000000000","message":"let\u0027s use \u0027secret\u0027 variable name","commit_id":"713f68522b55d16eda909d2e7b65d796a6589a24"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"ae759604a0a21bccc98ef3484d0aba9ebbf0c4c9","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        :param secret_ref: Name of the secret to get"},{"line_number":80,"context_line":"        \"\"\""},{"line_number":81,"context_line":"        if secret_ref is None:"},{"line_number":82,"context_line":"            secret_name \u003d self.admin_barbican.create_secret()"},{"line_number":83,"context_line":"            self.admin_barbican.get_secret(secret_name.secret_ref)"},{"line_number":84,"context_line":"        else:"},{"line_number":85,"context_line":"            self.admin_barbican.get_secret(secret_ref)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_f1681823","line":82,"range":{"start_line":82,"start_character":12,"end_line":82,"end_character":23},"in_reply_to":"3f79a3b5_ee235905","updated":"2018-09-26 17:12:24.000000000","message":"Done","commit_id":"713f68522b55d16eda909d2e7b65d796a6589a24"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"d317279ce0d63a68474123076661fd99797c761c","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            self.admin_barbican \u003d secrets.BarbicanService("},{"line_number":31,"context_line":"                self._admin_clients, name_generator\u003dself.generate_random_name,"},{"line_number":32,"context_line":"                atomic_inst\u003dself.atomic_actions())"},{"line_number":33,"context_line":"        if hasattr(self, \"_clients\"):"},{"line_number":34,"context_line":"            self.barbican \u003d secrets.BarbicanService("},{"line_number":35,"context_line":"                self._clients,"},{"line_number":36,"context_line":"                name_generator\u003dself.generate_random_name,"},{"line_number":37,"context_line":"                atomic_inst\u003dself.atomic_actions())"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"@validation.add(\"required_services\", services\u003d[consts.Service.BARBICAN])"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_c2fe2137","line":37,"range":{"start_line":33,"start_character":0,"end_line":37,"end_character":50},"updated":"2018-09-30 07:41:22.000000000","message":"looks self.barbican is useless.","commit_id":"174f6748b82937752fa27183511780cacb477100"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"e27982c8fe625898f1ee00e17551b5f4ab327021","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            self.admin_barbican \u003d secrets.BarbicanService("},{"line_number":31,"context_line":"                self._admin_clients, name_generator\u003dself.generate_random_name,"},{"line_number":32,"context_line":"                atomic_inst\u003dself.atomic_actions())"},{"line_number":33,"context_line":"        if hasattr(self, \"_clients\"):"},{"line_number":34,"context_line":"            self.barbican \u003d secrets.BarbicanService("},{"line_number":35,"context_line":"                self._clients,"},{"line_number":36,"context_line":"                name_generator\u003dself.generate_random_name,"},{"line_number":37,"context_line":"                atomic_inst\u003dself.atomic_actions())"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"@validation.add(\"required_services\", services\u003d[consts.Service.BARBICAN])"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_c32b7979","line":37,"range":{"start_line":33,"start_character":0,"end_line":37,"end_character":50},"in_reply_to":"3f79a3b5_c2fe2137","updated":"2018-10-01 13:20:52.000000000","message":"Done","commit_id":"174f6748b82937752fa27183511780cacb477100"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"d317279ce0d63a68474123076661fd99797c761c","unresolved":false,"context_lines":[{"line_number":73,"context_line":"@scenario.configure(context\u003d{\"cleanup@openstack\": [\"barbican\"]},"},{"line_number":74,"context_line":"                    name\u003d\"BarbicanSecrets.get\")"},{"line_number":75,"context_line":"class BarbicanSecretsGet(BarbicanBase):"},{"line_number":76,"context_line":"    def run(self, secret_ref\u003dNone):"},{"line_number":77,"context_line":"        \"\"\"Get Secret."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        :param secret_ref: Name of the secret to get"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_a2af6529","line":76,"range":{"start_line":76,"start_character":18,"end_line":76,"end_character":28},"updated":"2018-09-30 07:41:22.000000000","message":"Firstly, I did not understand clearly. Is secret_ref the same property as secret_name ?  I saw secret_name is used in rally_openstack/services/barbican/secrets.py, but here names secret_ref. I prefer to use the one name.","commit_id":"174f6748b82937752fa27183511780cacb477100"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"e27982c8fe625898f1ee00e17551b5f4ab327021","unresolved":false,"context_lines":[{"line_number":73,"context_line":"@scenario.configure(context\u003d{\"cleanup@openstack\": [\"barbican\"]},"},{"line_number":74,"context_line":"                    name\u003d\"BarbicanSecrets.get\")"},{"line_number":75,"context_line":"class BarbicanSecretsGet(BarbicanBase):"},{"line_number":76,"context_line":"    def run(self, secret_ref\u003dNone):"},{"line_number":77,"context_line":"        \"\"\"Get Secret."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        :param secret_ref: Name of the secret to get"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_a3b19d47","line":76,"range":{"start_line":76,"start_character":18,"end_line":76,"end_character":28},"in_reply_to":"3f79a3b5_a2af6529","updated":"2018-10-01 13:20:52.000000000","message":"Done","commit_id":"174f6748b82937752fa27183511780cacb477100"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ad299d9597611cf2a94ed7bbb8dbfa63f9007b8d","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"@validation.add(\"required_services\", services\u003d[consts.Service.BARBICAN])"},{"line_number":36,"context_line":"@validation.add(\"required_platform\", platform\u003d\"openstack\", admin\u003dTrue)"},{"line_number":37,"context_line":"@scenario.configure(context\u003d{\"cleanup@openstack\": [\"barbican\"]},"},{"line_number":38,"context_line":"                    name\u003d\"BarbicanSecrets.list\")"},{"line_number":39,"context_line":"class BarbicanSecretsList(BarbicanBase):"},{"line_number":40,"context_line":"    def run(self):"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f79a3b5_b86023d2","line":37,"range":{"start_line":37,"start_character":20,"end_line":37,"end_character":64},"updated":"2018-10-10 12:10:48.000000000","message":"This scenario doesn\u0027t create any kind of resources, so the cleanup is redundant.","commit_id":"674fa8d1ef3dd6f582498f601b5953a0e78620cf"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"fe116e2ef03ca6cdb5c94600f3920e64ba2b9fcc","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"@validation.add(\"required_services\", services\u003d[consts.Service.BARBICAN])"},{"line_number":36,"context_line":"@validation.add(\"required_platform\", platform\u003d\"openstack\", admin\u003dTrue)"},{"line_number":37,"context_line":"@scenario.configure(context\u003d{\"cleanup@openstack\": [\"barbican\"]},"},{"line_number":38,"context_line":"                    name\u003d\"BarbicanSecrets.list\")"},{"line_number":39,"context_line":"class BarbicanSecretsList(BarbicanBase):"},{"line_number":40,"context_line":"    def run(self):"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f79a3b5_c6b18003","line":37,"range":{"start_line":37,"start_character":20,"end_line":37,"end_character":64},"in_reply_to":"3f79a3b5_b86023d2","updated":"2018-10-11 13:49:21.000000000","message":"Done","commit_id":"674fa8d1ef3dd6f582498f601b5953a0e78620cf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ad299d9597611cf2a94ed7bbb8dbfa63f9007b8d","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"@validation.add(\"required_services\", services\u003d[consts.Service.BARBICAN])"},{"line_number":46,"context_line":"@validation.add(\"required_platform\", platform\u003d\"openstack\", admin\u003dTrue)"},{"line_number":47,"context_line":"@scenario.configure(context\u003d{\"cleanup@openstack\": [\"barbican\"]},"},{"line_number":48,"context_line":"                    name\u003d\"BarbicanSecrets.create\")"},{"line_number":49,"context_line":"class BarbicanSecretsCreate(BarbicanBase):"},{"line_number":50,"context_line":"    def run(self):"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f79a3b5_3875f397","line":47,"range":{"start_line":47,"start_character":30,"end_line":47,"end_character":37},"updated":"2018-10-10 12:10:48.000000000","message":"we have 2 separate contexts (as for now). One for admin created resources, another for user created. \nSince the secrets are created by admin, we need to use \u0027admin_cleanup\u0027 here and in other scenarios as well","commit_id":"674fa8d1ef3dd6f582498f601b5953a0e78620cf"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"fe116e2ef03ca6cdb5c94600f3920e64ba2b9fcc","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"@validation.add(\"required_services\", services\u003d[consts.Service.BARBICAN])"},{"line_number":46,"context_line":"@validation.add(\"required_platform\", platform\u003d\"openstack\", admin\u003dTrue)"},{"line_number":47,"context_line":"@scenario.configure(context\u003d{\"cleanup@openstack\": [\"barbican\"]},"},{"line_number":48,"context_line":"                    name\u003d\"BarbicanSecrets.create\")"},{"line_number":49,"context_line":"class BarbicanSecretsCreate(BarbicanBase):"},{"line_number":50,"context_line":"    def run(self):"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f79a3b5_46ec90f3","line":47,"range":{"start_line":47,"start_character":30,"end_line":47,"end_character":37},"in_reply_to":"3f79a3b5_3875f397","updated":"2018-10-11 13:49:21.000000000","message":"Done","commit_id":"674fa8d1ef3dd6f582498f601b5953a0e78620cf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ad299d9597611cf2a94ed7bbb8dbfa63f9007b8d","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        self.admin_barbican.delete_secret(secret.secret_ref)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"@validation.add(\"required_services\", services\u003d[consts.Service.BARBICAN])"},{"line_number":67,"context_line":"@validation.add(\"required_platform\", platform\u003d\"openstack\", admin\u003dTrue)"},{"line_number":68,"context_line":"@scenario.configure(context\u003d{\"cleanup@openstack\": [\"barbican\"]},"},{"line_number":69,"context_line":"                    name\u003d\"BarbicanSecrets.get\")"},{"line_number":70,"context_line":"class BarbicanSecretsGet(BarbicanBase):"},{"line_number":71,"context_line":"    def run(self, secret_ref\u003dNone):"},{"line_number":72,"context_line":"        \"\"\"Get Secret."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        :param secret_ref: Name of the secret to get"},{"line_number":75,"context_line":"        \"\"\""},{"line_number":76,"context_line":"        secret \u003d self.admin_barbican.create_secret()"},{"line_number":77,"context_line":"        self.assertTrue(secret)"},{"line_number":78,"context_line":"        secret_info \u003d self.admin_barbican.get_secret(secret.secret_ref)"},{"line_number":79,"context_line":"        self.assertEqual(secret.secret_ref, secret_info.secret_ref)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"@validation.add(\"required_services\", services\u003d[consts.Service.BARBICAN])"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f79a3b5_18803749","line":79,"range":{"start_line":66,"start_character":1,"end_line":79,"end_character":67},"updated":"2018-10-10 12:10:48.000000000","message":"let\u0027s create 2 separate scenarios. One is \u0027BarbicanSecrets.get\u0027 which requires secret_ref and another - \u0027BarbicanSecrets.create_and_get\u0027 which doesn\u0027t.","commit_id":"674fa8d1ef3dd6f582498f601b5953a0e78620cf"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"fe116e2ef03ca6cdb5c94600f3920e64ba2b9fcc","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        self.admin_barbican.delete_secret(secret.secret_ref)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"@validation.add(\"required_services\", services\u003d[consts.Service.BARBICAN])"},{"line_number":67,"context_line":"@validation.add(\"required_platform\", platform\u003d\"openstack\", admin\u003dTrue)"},{"line_number":68,"context_line":"@scenario.configure(context\u003d{\"cleanup@openstack\": [\"barbican\"]},"},{"line_number":69,"context_line":"                    name\u003d\"BarbicanSecrets.get\")"},{"line_number":70,"context_line":"class BarbicanSecretsGet(BarbicanBase):"},{"line_number":71,"context_line":"    def run(self, secret_ref\u003dNone):"},{"line_number":72,"context_line":"        \"\"\"Get Secret."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        :param secret_ref: Name of the secret to get"},{"line_number":75,"context_line":"        \"\"\""},{"line_number":76,"context_line":"        secret \u003d self.admin_barbican.create_secret()"},{"line_number":77,"context_line":"        self.assertTrue(secret)"},{"line_number":78,"context_line":"        secret_info \u003d self.admin_barbican.get_secret(secret.secret_ref)"},{"line_number":79,"context_line":"        self.assertEqual(secret.secret_ref, secret_info.secret_ref)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"@validation.add(\"required_services\", services\u003d[consts.Service.BARBICAN])"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f79a3b5_219a9ec3","line":79,"range":{"start_line":66,"start_character":1,"end_line":79,"end_character":67},"in_reply_to":"3f79a3b5_18803749","updated":"2018-10-11 13:49:21.000000000","message":"Done","commit_id":"674fa8d1ef3dd6f582498f601b5953a0e78620cf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"f9e1f8432fbef2bf7cde22fea48499c7b93ff5ab","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"@validation.add(\"required_services\", services\u003d[consts.Service.BARBICAN])"},{"line_number":36,"context_line":"@validation.add(\"required_platform\", platform\u003d\"openstack\", admin\u003dTrue)"},{"line_number":37,"context_line":"@scenario.configure(context\u003d{\"cleanup@openstack\": [\"barbican\"]},"},{"line_number":38,"context_line":"                    name\u003d\"BarbicanSecrets.list\")"},{"line_number":39,"context_line":"class BarbicanSecretsList(BarbicanBase):"},{"line_number":40,"context_line":"    def run(self):"}],"source_content_type":"text/x-python","patch_set":35,"id":"3f79a3b5_9685dab0","line":37,"range":{"start_line":37,"start_character":20,"end_line":37,"end_character":64},"updated":"2018-10-11 13:37:50.000000000","message":"it is redundant. just remove this:)","commit_id":"38906ebff7d583d71fdcec5201a8b6b43c2736ba"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"fe116e2ef03ca6cdb5c94600f3920e64ba2b9fcc","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"@validation.add(\"required_services\", services\u003d[consts.Service.BARBICAN])"},{"line_number":36,"context_line":"@validation.add(\"required_platform\", platform\u003d\"openstack\", admin\u003dTrue)"},{"line_number":37,"context_line":"@scenario.configure(context\u003d{\"cleanup@openstack\": [\"barbican\"]},"},{"line_number":38,"context_line":"                    name\u003d\"BarbicanSecrets.list\")"},{"line_number":39,"context_line":"class BarbicanSecretsList(BarbicanBase):"},{"line_number":40,"context_line":"    def run(self):"}],"source_content_type":"text/x-python","patch_set":35,"id":"3f79a3b5_99474d1f","line":37,"range":{"start_line":37,"start_character":20,"end_line":37,"end_character":64},"in_reply_to":"3f79a3b5_9685dab0","updated":"2018-10-11 13:49:21.000000000","message":"Done","commit_id":"38906ebff7d583d71fdcec5201a8b6b43c2736ba"}],"rally_openstack/scenarios/barbican/utils.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"3001f74c3e05514dedcca34eeb203d90c6d0bfa1","unresolved":false,"context_lines":[{"line_number":21,"context_line":"CONF \u003d cfg.CONF"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class BarbicanScenario(scenario.OpenStackScenario):"},{"line_number":25,"context_line":"    \"\"\"Base class for Barbican scenarios with basic atomic actions.\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @atomic.action_timer(\"barbican.list_secrets\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_bf4f228a","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":51},"updated":"2018-09-21 15:38:12.000000000","message":"It is a bad practice which made things too complicated. Unfortunately, the majority of our scenarios are done in a similar way and we do not have many human resources to fix them. But it would be nice to not repeat mistakes and introduce new plugins in a right way.\n\nThere are 2 main issues related to \"scenario utils\":\n\n1) it is hard to reuse this code in other types of rally plugins. See [1] . The number of variables to transmit is huge and most of them are mandatory.\n\n2) resource names \u0026 cleanup. Cleanup for resources created in different places should be processed at a different time and should not conflict, i.e. resources created by context should be removed by context itself, resources created by scenario should be removed by special cleanup context. It is done to make it possible in future to use one context for different workloads, i.e pre-create special resources once, operate them in several scenarios, remove them. To achieve this, we have a magic generate_random_name method which uses the different naming template for different classes[2][3][4] and makes it possible to filter these resources. In case of usage of \"scenario utils\" in context plugin, the naming template will make the resources look like scenario resources. It is an issue. \n\nTo fix this, we introduced a new entity \"Service\". It is just a separate class which accepts as few as possible arguments and doesn\u0027t care when it is used. See how it looks here, for example [5][6]\n\n[1] - https://github.com/openstack/rally-openstack/blob/1.2.0/rally_openstack/contexts/manila/manila_shares.py#L83-L90\n[2] - https://github.com/openstack/rally/blob/master/rally/task/scenario.py#L96\n[3] - https://github.com/openstack/rally/blob/master/rally/task/context.py\n[4] - https://github.com/openstack/rally/blob/master/rally/common/utils.py#L259\n[5] - https://github.com/openstack/rally-openstack/blob/master/rally_openstack/services/gnocchi/metric.py#L19\n[6] - https://github.com/openstack/rally-openstack/blob/master/rally_openstack/scenarios/gnocchi/utils.py#L25","commit_id":"75decef95d812dcf75ed105ae72dc6bc498bd6df"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"bd24051433867c4c1ffeb3855c7b8682fc9c69eb","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from rally_openstack.services.barbican import secrets"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class BarbicanBase(scenario.OpenStackScenario):"},{"line_number":20,"context_line":"    \"\"\"Base class for Barbican scenarios with basic atomic actions.\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def __init__(self, context\u003dNone, admin_context\u003dNone, clients\u003dNone):"},{"line_number":23,"context_line":"        super(BarbicanBase, self).__init__(context, admin_context, clients)"},{"line_number":24,"context_line":"        if hasattr(self, \"_admin_clients\"):"},{"line_number":25,"context_line":"            self.admin_barbican \u003d secrets.BarbicanService("},{"line_number":26,"context_line":"                self._admin_clients, name_generator\u003dself.generate_random_name,"},{"line_number":27,"context_line":"                atomic_inst\u003dself.atomic_actions())"},{"line_number":28,"context_line":"        if hasattr(self, \"_clients\"):"},{"line_number":29,"context_line":"            self.barbican \u003d secrets.BarbicanService("},{"line_number":30,"context_line":"                self._clients,"},{"line_number":31,"context_line":"                name_generator\u003dself.generate_random_name,"},{"line_number":32,"context_line":"                atomic_inst\u003dself.atomic_actions())"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_4366edf0","line":32,"range":{"start_line":19,"start_character":0,"end_line":32,"end_character":50},"updated":"2018-09-26 10:28:04.000000000","message":"we can put this class in the same module as secrets scenarios.","commit_id":"5b26b2d56ce018278eed903d42202b489dd229eb"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"3b0521b4e260429c411a4e8c4ccca6967d64d0ec","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from rally_openstack.services.barbican import secrets"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class BarbicanBase(scenario.OpenStackScenario):"},{"line_number":20,"context_line":"    \"\"\"Base class for Barbican scenarios with basic atomic actions.\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def __init__(self, context\u003dNone, admin_context\u003dNone, clients\u003dNone):"},{"line_number":23,"context_line":"        super(BarbicanBase, self).__init__(context, admin_context, clients)"},{"line_number":24,"context_line":"        if hasattr(self, \"_admin_clients\"):"},{"line_number":25,"context_line":"            self.admin_barbican \u003d secrets.BarbicanService("},{"line_number":26,"context_line":"                self._admin_clients, name_generator\u003dself.generate_random_name,"},{"line_number":27,"context_line":"                atomic_inst\u003dself.atomic_actions())"},{"line_number":28,"context_line":"        if hasattr(self, \"_clients\"):"},{"line_number":29,"context_line":"            self.barbican \u003d secrets.BarbicanService("},{"line_number":30,"context_line":"                self._clients,"},{"line_number":31,"context_line":"                name_generator\u003dself.generate_random_name,"},{"line_number":32,"context_line":"                atomic_inst\u003dself.atomic_actions())"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_e8d27033","line":32,"range":{"start_line":19,"start_character":0,"end_line":32,"end_character":50},"in_reply_to":"3f79a3b5_4366edf0","updated":"2018-09-26 15:11:13.000000000","message":"Done","commit_id":"5b26b2d56ce018278eed903d42202b489dd229eb"}],"rally_openstack/services/barbican/secrets.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7e930483e32f1aa6d0cb8442c38d6ddec13f7f62","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def create_secret(self):"},{"line_number":28,"context_line":"        \"\"\"Create Secret\"\"\""},{"line_number":29,"context_line":"        secret_name \u003d self.generate_random_name()"},{"line_number":30,"context_line":"        val \u003d self._clients.barbican().secrets.create(name\u003dsecret_name,"},{"line_number":31,"context_line":"                                                      payload\u003d\"rally_data\")"},{"line_number":32,"context_line":"        return val"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @atomic.action_timer(\"barbican.get_secret\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_7abccdda","line":31,"range":{"start_line":30,"start_character":8,"end_line":31,"end_character":75},"updated":"2018-09-27 12:36:06.000000000","message":"1) it would be nice to have an ability to transmit custom payload (can be done in the separate patch)\n2) Does this call return a \"ready\" object or we should wait for its construction?","commit_id":"27f83c81b1235d6e19a68be5b1046f701e0ca9da"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"c7aa66c4fb420bc740db33529bb858b5da56abd9","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def create_secret(self):"},{"line_number":28,"context_line":"        \"\"\"Create Secret\"\"\""},{"line_number":29,"context_line":"        secret_name \u003d self.generate_random_name()"},{"line_number":30,"context_line":"        val \u003d self._clients.barbican().secrets.create(name\u003dsecret_name,"},{"line_number":31,"context_line":"                                                      payload\u003d\"rally_data\")"},{"line_number":32,"context_line":"        return val"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @atomic.action_timer(\"barbican.get_secret\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_7537feb0","line":31,"range":{"start_line":30,"start_character":8,"end_line":31,"end_character":75},"in_reply_to":"3f79a3b5_7abccdda","updated":"2018-09-27 14:41:39.000000000","message":"1) agreed\n2) It returns a \"ready\" object.","commit_id":"27f83c81b1235d6e19a68be5b1046f701e0ca9da"},{"author":{"_account_id":21528,"name":"chenhb","email":"chen.haibing1@zte.com.cn","username":"chenhb"},"change_message_id":"d317279ce0d63a68474123076661fd99797c761c","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        :param secret_name: The name of the secret."},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        self._clients.barbican().secrets.get(secret_name)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @atomic.action_timer(\"barbican.delete_secret\")"},{"line_number":43,"context_line":"    def delete_secret(self, secret_name):"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_22935502","line":40,"updated":"2018-09-30 07:41:22.000000000","message":"Is there anything would be returned ?  feel it should be better with \u0027return\u0027","commit_id":"174f6748b82937752fa27183511780cacb477100"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"e27982c8fe625898f1ee00e17551b5f4ab327021","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        :param secret_name: The name of the secret."},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        self._clients.barbican().secrets.get(secret_name)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @atomic.action_timer(\"barbican.delete_secret\")"},{"line_number":43,"context_line":"    def delete_secret(self, secret_name):"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_435529f8","line":40,"in_reply_to":"3f79a3b5_22935502","updated":"2018-10-01 13:20:52.000000000","message":"Done","commit_id":"174f6748b82937752fa27183511780cacb477100"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"c4cab20a74539b32fb14e070b524e943c94aa028","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        \"\"\"Create Secret\"\"\""},{"line_number":29,"context_line":"        secret_name \u003d self.generate_random_name()"},{"line_number":30,"context_line":"        val \u003d self._clients.barbican().secrets.create(name\u003dsecret_name,"},{"line_number":31,"context_line":"                                                      payload\u003d\"rally_data\")"},{"line_number":32,"context_line":"        return val"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @atomic.action_timer(\"barbican.get_secret\")"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f79a3b5_e8bf1bfb","line":31,"updated":"2018-10-04 17:50:57.000000000","message":"does it make sense to store something like :\npayload \u003d \"rally_data + secret_name\"  so that we have different data being returned?","commit_id":"294bb05b19941437d91d9edb684b219025ff89e5"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7d34341dded3c98ea422030e96b967647fe592eb","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        \"\"\"Create Secret\"\"\""},{"line_number":29,"context_line":"        secret_name \u003d self.generate_random_name()"},{"line_number":30,"context_line":"        val \u003d self._clients.barbican().secrets.create(name\u003dsecret_name,"},{"line_number":31,"context_line":"                                                      payload\u003d\"rally_data\")"},{"line_number":32,"context_line":"        return val"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @atomic.action_timer(\"barbican.get_secret\")"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f79a3b5_25cd03ba","line":31,"in_reply_to":"3f79a3b5_e8bf1bfb","updated":"2018-10-08 14:15:09.000000000","message":"I guess we can leave it as is for now and extend the plugins in the following patch with a new configurable parameter like \u0027payload_length\u0027. This parameter will be used for generating a payload (using dd or random)","commit_id":"294bb05b19941437d91d9edb684b219025ff89e5"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"c4cab20a74539b32fb14e070b524e943c94aa028","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        :param secret_name: The name of the secret."},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        return self._clients.barbican().secrets.get(secret_ref)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @atomic.action_timer(\"barbican.delete_secret\")"},{"line_number":43,"context_line":"    def delete_secret(self, secret_name):"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f79a3b5_08bdb702","line":40,"updated":"2018-10-04 17:50:57.000000000","message":"This is great, but it only retrieves the metadata for the secret - which only exercises barbican accessing its db.\n\nYou need to retrieve the payload to exercise the backends - and then you can check that the payload is valid","commit_id":"294bb05b19941437d91d9edb684b219025ff89e5"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"f6f0182a8003a9339e14d0247cc3f48350278524","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        :param secret_name: The name of the secret."},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        return self._clients.barbican().secrets.get(secret_ref)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @atomic.action_timer(\"barbican.delete_secret\")"},{"line_number":43,"context_line":"    def delete_secret(self, secret_name):"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f79a3b5_1de5a5a4","line":40,"in_reply_to":"3f79a3b5_08bdb702","updated":"2018-10-09 13:52:41.000000000","message":"Done","commit_id":"294bb05b19941437d91d9edb684b219025ff89e5"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"c4cab20a74539b32fb14e070b524e943c94aa028","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"3f79a3b5_c8649fb6","line":49,"updated":"2018-10-04 17:50:57.000000000","message":"It would be great to test the orders API.  This is the API that is used when you want to generate a key, which is the part which is most likely to show up performance issues - and is the part that is handed off to workers.\n\nYou can use the orders api to generate an order, check the status and then retrieve the secret when its complete.\n\nThis is what cinder uses when creating encryption keys.","commit_id":"294bb05b19941437d91d9edb684b219025ff89e5"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"f6f0182a8003a9339e14d0247cc3f48350278524","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"3f79a3b5_3db6618b","line":49,"in_reply_to":"3f79a3b5_c8649fb6","updated":"2018-10-09 13:52:41.000000000","message":"I was going to do it in another commit.","commit_id":"294bb05b19941437d91d9edb684b219025ff89e5"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ad299d9597611cf2a94ed7bbb8dbfa63f9007b8d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2018 Red Hat, Inc. \u003chttp://www.redhat.com\u003e"},{"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":32,"id":"3f79a3b5_18e5973e","line":1,"updated":"2018-10-10 12:10:48.000000000","message":"Barbican service doesn\u0027t provide only secrets, so let\u0027s rename the module. Let it be rally_openstack.services.key_manager.barbican","commit_id":"674fa8d1ef3dd6f582498f601b5953a0e78620cf"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"fe116e2ef03ca6cdb5c94600f3920e64ba2b9fcc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2018 Red Hat, Inc. \u003chttp://www.redhat.com\u003e"},{"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":32,"id":"3f79a3b5_01e5223e","line":1,"in_reply_to":"3f79a3b5_18e5973e","updated":"2018-10-11 13:49:21.000000000","message":"Done","commit_id":"674fa8d1ef3dd6f582498f601b5953a0e78620cf"}],"requirements.txt":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ad299d9597611cf2a94ed7bbb8dbfa63f9007b8d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"kubernetes\u003e1.0.0                                       # Apache License Version 2.0"},{"line_number":14,"context_line":"os-faults\u003e\u003d0.1.15                                      # Apache Software License"},{"line_number":15,"context_line":"osprofiler\u003e\u003d1.4.0                                      # Apache Software License"},{"line_number":16,"context_line":"python-barbicanclient\u003e\u003d4.5.2                           # Apache Software License"},{"line_number":17,"context_line":"python-ceilometerclient\u003e\u003d2.5.0                         # Apache Software License"},{"line_number":18,"context_line":"python-cinderclient\u003e\u003d3.3.0                             # Apache Software License"},{"line_number":19,"context_line":"python-designateclient\u003e\u003d2.7.0                          # Apache License, Version 2.0"}],"source_content_type":"text/plain","patch_set":32,"id":"3f79a3b5_f8f1bb01","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":80},"updated":"2018-10-10 12:10:48.000000000","message":"it would be nice to add barbicanclient to https://github.com/openstack/rally-openstack/blob/master/upper-constraints.txt as well","commit_id":"674fa8d1ef3dd6f582498f601b5953a0e78620cf"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"fe116e2ef03ca6cdb5c94600f3920e64ba2b9fcc","unresolved":false,"context_lines":[{"line_number":13,"context_line":"kubernetes\u003e1.0.0                                       # Apache License Version 2.0"},{"line_number":14,"context_line":"os-faults\u003e\u003d0.1.15                                      # Apache Software License"},{"line_number":15,"context_line":"osprofiler\u003e\u003d1.4.0                                      # Apache Software License"},{"line_number":16,"context_line":"python-barbicanclient\u003e\u003d4.5.2                           # Apache Software License"},{"line_number":17,"context_line":"python-ceilometerclient\u003e\u003d2.5.0                         # Apache Software License"},{"line_number":18,"context_line":"python-cinderclient\u003e\u003d3.3.0                             # Apache Software License"},{"line_number":19,"context_line":"python-designateclient\u003e\u003d2.7.0                          # Apache License, Version 2.0"}],"source_content_type":"text/plain","patch_set":32,"id":"3f79a3b5_c60ae0cf","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":80},"in_reply_to":"3f79a3b5_f8f1bb01","updated":"2018-10-11 13:49:21.000000000","message":"Done","commit_id":"674fa8d1ef3dd6f582498f601b5953a0e78620cf"}]}
