)]}'
{"doc/specs/in-progress/verification_refactoring.rst":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"edda2a11ab9ff251b64ce3473141882d67c0dca5","unresolved":false,"context_lines":[{"line_number":34,"context_line":"etc), so it is pretty sad when we have a lot of hardcode and binding to"},{"line_number":35,"context_line":"specific application."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* non-plugable architecture"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"  Most of Rally components (for example Task or Deployment) are plugable. You"},{"line_number":40,"context_line":"  can easily extend Rally framework for such components. But we cannot say the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_34558bf9","line":37,"updated":"2016-03-18 14:09:22.000000000","message":"pluggable","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"414e8fb7c97eade031e8cef11a0378a027b20449","unresolved":false,"context_lines":[{"line_number":34,"context_line":"etc), so it is pretty sad when we have a lot of hardcode and binding to"},{"line_number":35,"context_line":"specific application."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* non-plugable architecture"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"  Most of Rally components (for example Task or Deployment) are plugable. You"},{"line_number":40,"context_line":"  can easily extend Rally framework for such components. But we cannot say the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da0c15f0_5a5a4850","line":37,"in_reply_to":"1af94dfe_34558bf9","updated":"2016-03-28 16:12:56.000000000","message":"Done","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"edda2a11ab9ff251b64ce3473141882d67c0dca5","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  Verification launch uses ``subunit-trace`` to display the process in"},{"line_number":46,"context_line":"  user-friendly way. This library is not in Rally requirements and is used"},{"line_number":47,"context_line":"  from virtual environment created for Tempest(Tempest depends on"},{"line_number":48,"context_line":"  ``subunit-trace``)."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* Code duplication"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_d43d4790","line":48,"updated":"2016-03-18 14:09:22.000000000","message":"It is not clear what the problem is - should we get rid of this dependency, or add it to global requirements?","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"414e8fb7c97eade031e8cef11a0378a027b20449","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  Verification launch uses ``subunit-trace`` to display the process in"},{"line_number":46,"context_line":"  user-friendly way. This library is not in Rally requirements and is used"},{"line_number":47,"context_line":"  from virtual environment created for Tempest(Tempest depends on"},{"line_number":48,"context_line":"  ``subunit-trace``)."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* Code duplication"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_ccf2d605","line":48,"in_reply_to":"1af94dfe_d43d4790","updated":"2016-03-28 16:12:56.000000000","message":"\u003e should we get rid of this dependency, or add it to global requirements?\n\nThis section should include only problem description, not solutions:) Please see \"proposed change\" section for more details.\n\nPS:I updated this paragraph with more details about problem.","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"31b7aac10cb8a1936c68774915e86afe6c9c7048","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* Code duplication"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"  To simplify usage of Tempest, it is required to check existence of images,"},{"line_number":53,"context_line":"  roles, networks and other resources. While process of implementation checks"},{"line_number":54,"context_line":"  for this task, we re-implemented \"Context\" class which is used in Tasks."},{"line_number":55,"context_line":"  It was called TempestResourcesContext."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* Inner storage based on deployment"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_19cd28b7","line":54,"range":{"start_line":53,"start_character":39,"end_line":54,"end_character":15},"updated":"2016-03-18 11:24:37.000000000","message":"While implementing these checks, we re-implemented ...","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"414e8fb7c97eade031e8cef11a0378a027b20449","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* Code duplication"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"  To simplify usage of Tempest, it is required to check existence of images,"},{"line_number":53,"context_line":"  roles, networks and other resources. While process of implementation checks"},{"line_number":54,"context_line":"  for this task, we re-implemented \"Context\" class which is used in Tasks."},{"line_number":55,"context_line":"  It was called TempestResourcesContext."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* Inner storage based on deployment"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_8659d437","line":54,"range":{"start_line":53,"start_character":39,"end_line":54,"end_character":15},"in_reply_to":"1af94dfe_19cd28b7","updated":"2016-03-28 16:12:56.000000000","message":"Done","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"31b7aac10cb8a1936c68774915e86afe6c9c7048","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"New model includes several new entities:"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"* **Verifier type**. This entity should be represented by plugins which"},{"line_number":88,"context_line":"  implement interface for verification tool. For example, Tempest is a one of"},{"line_number":89,"context_line":"  such types."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* **Verifier**. Unique instance of partial ``verifier type``. While"},{"line_number":92,"context_line":"  ``verifier type`` implements the API to specific tool, ``verifier`` describes"},{"line_number":93,"context_line":"  all required settings(except credentials, which are deployment specific) for"},{"line_number":94,"context_line":"  installation and executing tool."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_d91e206f","line":91,"range":{"start_line":87,"start_character":2,"end_line":91,"end_character":15},"updated":"2016-03-18 11:24:37.000000000","message":"These two in the same list look a bit confusing. The former is actually a plugin (i.e. python code) while the latter is an instance, storable to DB and/or set of config files on filesystem. But from the first glance (and from the second as well ))) They both look like of the same category.\nCould you pls be more explicit in the initial descriptions?","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"414e8fb7c97eade031e8cef11a0378a027b20449","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"New model includes several new entities:"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"* **Verifier type**. This entity should be represented by plugins which"},{"line_number":88,"context_line":"  implement interface for verification tool. For example, Tempest is a one of"},{"line_number":89,"context_line":"  such types."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"* **Verifier**. Unique instance of partial ``verifier type``. While"},{"line_number":92,"context_line":"  ``verifier type`` implements the API to specific tool, ``verifier`` describes"},{"line_number":93,"context_line":"  all required settings(except credentials, which are deployment specific) for"},{"line_number":94,"context_line":"  installation and executing tool."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_1bc15f81","line":91,"range":{"start_line":87,"start_character":2,"end_line":91,"end_character":15},"in_reply_to":"1af94dfe_d91e206f","updated":"2016-03-28 16:12:56.000000000","message":"Done","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"31b7aac10cb8a1936c68774915e86afe6c9c7048","unresolved":false,"context_lines":[{"line_number":93,"context_line":"  all required settings(except credentials, which are deployment specific) for"},{"line_number":94,"context_line":"  installation and executing tool."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"  Options which relate to all types:"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"  * *source* - path to git repository of tool (**verifier type** should include"},{"line_number":99,"context_line":"    default value for this option. For Tempest, it is"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_99f77858","line":96,"range":{"start_line":96,"start_character":0,"end_line":96,"end_character":36},"updated":"2016-03-18 11:24:37.000000000","message":"If these are options of _verifier types_ pls consider moving them to _verifier type_ section.","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"414e8fb7c97eade031e8cef11a0378a027b20449","unresolved":false,"context_lines":[{"line_number":93,"context_line":"  all required settings(except credentials, which are deployment specific) for"},{"line_number":94,"context_line":"  installation and executing tool."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"  Options which relate to all types:"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"  * *source* - path to git repository of tool (**verifier type** should include"},{"line_number":99,"context_line":"    default value for this option. For Tempest, it is"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_5bbbd70e","line":96,"range":{"start_line":96,"start_character":0,"end_line":96,"end_character":36},"in_reply_to":"1af94dfe_99f77858","updated":"2016-03-28 16:12:56.000000000","message":"Done","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"edda2a11ab9ff251b64ce3473141882d67c0dca5","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":".. code-block:: yaml"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"  verifier-\u003cuuid\u003e:"},{"line_number":145,"context_line":"    # Unique verifier. It can be unique by project(i.e. Tempest, Gabbi, etc) or"},{"line_number":146,"context_line":"    # by branch, tag, commit."},{"line_number":147,"context_line":"    repo:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_f8282d9c","line":144,"updated":"2016-03-18 14:09:22.000000000","message":"It is not clear what is UUID - are we going to add new model to database which registers verifiers?\n\nIf not, maybe name this like verifier-\u003ctype\u003e-\u003cversion\u003e","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"414e8fb7c97eade031e8cef11a0378a027b20449","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":".. code-block:: yaml"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"  verifier-\u003cuuid\u003e:"},{"line_number":145,"context_line":"    # Unique verifier. It can be unique by project(i.e. Tempest, Gabbi, etc) or"},{"line_number":146,"context_line":"    # by branch, tag, commit."},{"line_number":147,"context_line":"    repo:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_bb3673b2","line":144,"in_reply_to":"1af94dfe_f8282d9c","updated":"2016-03-28 16:12:56.000000000","message":"Done","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"31b7aac10cb8a1936c68774915e86afe6c9c7048","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Another problem of old CLI is:"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"  Management are splitted across all commands and you can do the same things"},{"line_number":189,"context_line":"  via different commands. Moreover, you can install Tempest in virtual"},{"line_number":190,"context_line":"  environment via ``rally verify install`` and use ``--system-wide`` option in"},{"line_number":191,"context_line":"  ``rally verify start``."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_99713847","line":188,"range":{"start_line":188,"start_character":13,"end_line":188,"end_character":16},"updated":"2016-03-18 11:24:37.000000000","message":"s/are/is/","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"414e8fb7c97eade031e8cef11a0378a027b20449","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Another problem of old CLI is:"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"  Management are splitted across all commands and you can do the same things"},{"line_number":189,"context_line":"  via different commands. Moreover, you can install Tempest in virtual"},{"line_number":190,"context_line":"  environment via ``rally verify install`` and use ``--system-wide`` option in"},{"line_number":191,"context_line":"  ``rally verify start``."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_a6f21004","line":188,"range":{"start_line":188,"start_character":13,"end_line":188,"end_character":16},"in_reply_to":"1af94dfe_99713847","updated":"2016-03-28 16:12:56.000000000","message":"Done","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"edda2a11ab9ff251b64ce3473141882d67c0dca5","unresolved":false,"context_lines":[{"line_number":212,"context_line":"  import"},{"line_number":213,"context_line":"  list"},{"line_number":214,"context_line":"  show"},{"line_number":215,"context_line":"  use"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"list-types"},{"line_number":218,"context_line":"~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_77b9d0cb","line":215,"updated":"2016-03-18 14:09:22.000000000","message":"So we can set default verification (use) as result of verifier type A, and set default verifier (use-verifier) of type B - this can look very confusing, can\u0027t it?","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"edda2a11ab9ff251b64ce3473141882d67c0dca5","unresolved":false,"context_lines":[{"line_number":301,"context_line":"  \u003e --options \u0027{\"section_name\": {\"some_key\": \"some_var\"}}\u0027"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"  # via config file:"},{"line_number":304,"context_line":"  $ rally verify configure --renew --options ~/some_file.conf"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"  # Replace configuration file by another file and show it"},{"line_number":307,"context_line":"  $ rally verify configure --replace ./some_config.conf"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_52a782bc","line":304,"updated":"2016-03-18 14:09:22.000000000","message":"\"some_file.conf\" is which format? As far as I understand format depends on verifier type?","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"414e8fb7c97eade031e8cef11a0378a027b20449","unresolved":false,"context_lines":[{"line_number":301,"context_line":"  \u003e --options \u0027{\"section_name\": {\"some_key\": \"some_var\"}}\u0027"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"  # via config file:"},{"line_number":304,"context_line":"  $ rally verify configure --renew --options ~/some_file.conf"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"  # Replace configuration file by another file and show it"},{"line_number":307,"context_line":"  $ rally verify configure --replace ./some_config.conf"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_c19a58c5","line":304,"in_reply_to":"1af94dfe_52a782bc","updated":"2016-03-28 16:12:56.000000000","message":"clarified","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"edda2a11ab9ff251b64ce3473141882d67c0dca5","unresolved":false,"context_lines":[{"line_number":487,"context_line":"1 skipped test)."},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"With small modifications ``rally.common.io.subunit.SubunitV2StreamResult`` can"},{"line_number":490,"context_line":"print live progress. Also there is no reasons to do not print summary info"},{"line_number":491,"context_line":"based on parsed results."},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"with_venv.sh script"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_fdeadfd9","line":490,"updated":"2016-03-18 14:09:22.000000000","message":"s/is/are/","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"414e8fb7c97eade031e8cef11a0378a027b20449","unresolved":false,"context_lines":[{"line_number":487,"context_line":"1 skipped test)."},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"With small modifications ``rally.common.io.subunit.SubunitV2StreamResult`` can"},{"line_number":490,"context_line":"print live progress. Also there is no reasons to do not print summary info"},{"line_number":491,"context_line":"based on parsed results."},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"with_venv.sh script"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_413ac8ce","line":490,"in_reply_to":"1af94dfe_fdeadfd9","updated":"2016-03-28 16:12:56.000000000","message":"rephrased.","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"edda2a11ab9ff251b64ce3473141882d67c0dca5","unresolved":false,"context_lines":[{"line_number":526,"context_line":"  from rally.common.plugin import plugin"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"  class VerifierManager(plugin.Plugin):"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"      def __init__(self, verifier_obj):"},{"line_number":532,"context_line":"          self.verifier \u003d self.verifier_obj"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_78bd3dd7","line":529,"updated":"2016-03-18 14:09:22.000000000","message":"I recommend to avoid word \"manager\" in class name since we bind this instance to specific verifier in opposite to managing many verifiers. Better name is just \"Verifier\"","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"edda2a11ab9ff251b64ce3473141882d67c0dca5","unresolved":false,"context_lines":[{"line_number":529,"context_line":"  class VerifierManager(plugin.Plugin):"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"      def __init__(self, verifier_obj):"},{"line_number":532,"context_line":"          self.verifier \u003d self.verifier_obj"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"      @property"},{"line_number":535,"context_line":"      def home_dir(self):"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_9837694c","line":532,"updated":"2016-03-18 14:09:22.000000000","message":"What is a type of \"verifier_obj\"? How do we guarantee that this object has property \"id\" (L537)?","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"414e8fb7c97eade031e8cef11a0378a027b20449","unresolved":false,"context_lines":[{"line_number":529,"context_line":"  class VerifierManager(plugin.Plugin):"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"      def __init__(self, verifier_obj):"},{"line_number":532,"context_line":"          self.verifier \u003d self.verifier_obj"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"      @property"},{"line_number":535,"context_line":"      def home_dir(self):"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_c1fed804","line":532,"in_reply_to":"1af94dfe_9837694c","updated":"2016-03-28 16:12:56.000000000","message":"Done","commit_id":"78da49327f5e43ddb876b3f24aa9ac3aae6d8ecf"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"0243ee86d91d10c70e56c136bc3f0e49114c0915","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"  To simplify usage of Tempest, it is required to check existence of images,"},{"line_number":64,"context_line":"  roles, networks and other resources. While implementing these checks, we"},{"line_number":65,"context_line":"  re-implemented ... \"Context\" class which is used in Tasks."},{"line_number":66,"context_line":"  It was called TempestResourcesContext."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"* Inner storage based on deployment"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba0121b8_f0d97258","line":65,"updated":"2016-03-31 13:49:19.000000000","message":"What does \"...\" mean?","commit_id":"77994a4668bd6159e56ecea25cec2c87403a49c4"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"2d587c25826159efb9b1cde03fcd1a8672fca315","unresolved":false,"context_lines":[{"line_number":138,"context_line":"We want to support different verifiers and want to identify them, so let\u0027s"},{"line_number":139,"context_line":"declare three entities:"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"* **Verifier type**. The name of entity is a description it self. Each type"},{"line_number":142,"context_line":"  should be represented by own plugin which implements interface for"},{"line_number":143,"context_line":"  verification tool. For example, Tempest, Gabbi should be such types."},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba0121b8_e1b1b502","line":141,"range":{"start_line":141,"start_character":0,"end_line":141,"end_character":1},"updated":"2016-03-31 10:28:38.000000000","message":"Did you forget **Object Layer** above ?","commit_id":"77994a4668bd6159e56ecea25cec2c87403a49c4"}]}
