)]}'
{"doc/source/library/clients.rst":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dc9f599fa0322d6dac9c57699a305dfa317285c5","unresolved":false,"context_lines":[{"line_number":1,"context_line":".. _clients:"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"Service Clients Usage"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"Tests make requests against APIs using service clients. Service clients are"},{"line_number":7,"context_line":"specialisations of the ``RestClient`` class. The service clients that cover the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_3eabef76","line":4,"updated":"2016-08-04 22:04:42.000000000","message":"I prefer this content, well described what service clients are.","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f1f5373bc3cb7b30984ecf2ca09499bee7c19138","unresolved":false,"context_lines":[{"line_number":1,"context_line":".. _clients:"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"Service Clients Usage"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"Tests make requests against APIs using service clients. Service clients are"},{"line_number":7,"context_line":"specialisations of the ``RestClient`` class. The service clients that cover the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_16c6c799","line":4,"in_reply_to":"bacf61ea_3b6776b8","updated":"2016-08-04 23:34:35.000000000","message":"whole content is good for me :)","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"eff346e5157d4ecf061b9a83ac56f8bb7c3a2419","unresolved":false,"context_lines":[{"line_number":1,"context_line":".. _clients:"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"Service Clients Usage"},{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"Tests make requests against APIs using service clients. Service clients are"},{"line_number":7,"context_line":"specialisations of the ``RestClient`` class. The service clients that cover the"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_3b6776b8","line":4,"in_reply_to":"bacf61ea_3eabef76","updated":"2016-08-04 22:48:15.000000000","message":"You prefer this over some other content? Which?","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dc9f599fa0322d6dac9c57699a305dfa317285c5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"Tests make requests against APIs using service clients. Service clients are"},{"line_number":7,"context_line":"specialisations of the ``RestClient`` class. The service clients that cover the"},{"line_number":8,"context_line":"APIs exposed by a service should be grouped in a service clients module."},{"line_number":9,"context_line":"A service clients module is python module where all service clients are"},{"line_number":10,"context_line":"defined. If major API versions are available, submodules should be defined,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_1eec2bf2","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":15},"updated":"2016-08-04 22:04:42.000000000","message":"specializations?","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"eff346e5157d4ecf061b9a83ac56f8bb7c3a2419","unresolved":false,"context_lines":[{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"Tests make requests against APIs using service clients. Service clients are"},{"line_number":7,"context_line":"specialisations of the ``RestClient`` class. The service clients that cover the"},{"line_number":8,"context_line":"APIs exposed by a service should be grouped in a service clients module."},{"line_number":9,"context_line":"A service clients module is python module where all service clients are"},{"line_number":10,"context_line":"defined. If major API versions are available, submodules should be defined,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_fbaddee9","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":15},"in_reply_to":"bacf61ea_1eec2bf2","updated":"2016-08-04 22:48:15.000000000","message":"American vs British spelling...","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"957f8662c35511ec6e68cf8bec72cfb0af7a9991","unresolved":false,"context_lines":[{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"Tests make requests against APIs using service clients. Service clients are"},{"line_number":7,"context_line":"specialisations of the ``RestClient`` class. The service clients that cover the"},{"line_number":8,"context_line":"APIs exposed by a service should be grouped in a service clients module."},{"line_number":9,"context_line":"A service clients module is python module where all service clients are"},{"line_number":10,"context_line":"defined. If major API versions are available, submodules should be defined,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_5b29809a","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":15},"in_reply_to":"bacf61ea_76d62350","updated":"2016-08-05 06:12:32.000000000","message":"I checked more on this. It seems that a lot of verbs support both ize and ise (in British english), and a few only suppose ise. \n\nhttp://www.oxforddictionaries.com/words/ize-ise-or-yse\nhttp://blog.oxforddictionaries.com/2011/03/ize-or-ise/\n\nFor initiali[sz]e and speciali[sz]e both versions are acceptable in British english: http://www.oxforddictionaries.com/definition/english/initialize?q\u003dinitialise\n\nWhile only initialize is acceptable in American english: http://www.oxforddictionaries.com/definition/american_english/initialize?q\u003dinitialise","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f1f5373bc3cb7b30984ecf2ca09499bee7c19138","unresolved":false,"context_lines":[{"line_number":4,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"Tests make requests against APIs using service clients. Service clients are"},{"line_number":7,"context_line":"specialisations of the ``RestClient`` class. The service clients that cover the"},{"line_number":8,"context_line":"APIs exposed by a service should be grouped in a service clients module."},{"line_number":9,"context_line":"A service clients module is python module where all service clients are"},{"line_number":10,"context_line":"defined. If major API versions are available, submodules should be defined,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_76d62350","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":15},"in_reply_to":"bacf61ea_fbaddee9","updated":"2016-08-04 23:34:35.000000000","message":"oops, surprised.\nMy browser raises this as invalid.. That should support British ..","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dc9f599fa0322d6dac9c57699a305dfa317285c5","unresolved":false,"context_lines":[{"line_number":10,"context_line":"defined. If major API versions are available, submodules should be defined,"},{"line_number":11,"context_line":"one for each version."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The ``ClientsFactory`` class helps initialising all clients of a specific"},{"line_number":14,"context_line":"service client module from a set of shared parameters."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The ``ServiceClients`` class provides a convenient way to get access to all"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_fe96774a","line":13,"range":{"start_line":13,"start_character":35,"end_line":13,"end_character":47},"updated":"2016-08-04 22:04:42.000000000","message":"initializing?","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dc9f599fa0322d6dac9c57699a305dfa317285c5","unresolved":false,"context_lines":[{"line_number":14,"context_line":"service client module from a set of shared parameters."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The ``ServiceClients`` class provides a convenient way to get access to all"},{"line_number":17,"context_line":"available service clients initialised with a provided set of credentials."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"------------------"},{"line_number":20,"context_line":"The clients module"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_be96bf3b","line":17,"range":{"start_line":17,"start_character":26,"end_line":17,"end_character":37},"updated":"2016-08-04 22:04:42.000000000","message":"initialized","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"}],"doc/source/plugin.rst":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"c02577173ee766cc8f0080f89d1660f42a82a869","unresolved":false,"context_lines":[{"line_number":182,"context_line":"plugin."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"First ``service_version`` must be in the format `service_config[.version]`."},{"line_number":185,"context_line":"The `.version` part is optional, and must used only if there are multiple"},{"line_number":186,"context_line":"versions of the same API available. The `service_config` must match the name of"},{"line_number":187,"context_line":"a configuration options group defined by the plugin. Different versions of one"},{"line_number":188,"context_line":"API must share the same configuration group."}],"source_content_type":"text/x-rst","patch_set":8,"id":"bacf61ea_c0d4a2be","line":185,"updated":"2016-08-04 01:43:21.000000000","message":"s/must used only if/should only be used if/","commit_id":"7c19faf8f93abb544ea4ca144594a9ca1612bcc6"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"c02577173ee766cc8f0080f89d1660f42a82a869","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"* `region`: default to identity.region"},{"line_number":200,"context_line":"* `build_timeout` : default to compute.build_timeout"},{"line_number":201,"context_line":"* `build_interval`: default to compute.build_interval"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Using Plugins"},{"line_number":204,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"bacf61ea_20dc9ee3","line":201,"updated":"2016-08-04 01:43:21.000000000","message":"I think this looks good, but having an example code snippet might help. It\u0027s kinda difficult to build a mental image of what this will look like based on the words alone.","commit_id":"7c19faf8f93abb544ea4ca144594a9ca1612bcc6"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dc9f599fa0322d6dac9c57699a305dfa317285c5","unresolved":false,"context_lines":[{"line_number":168,"context_line":"Service Clients"},{"line_number":169,"context_line":"---------------"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"If a plugin defines a service client, it is beneficial for it to implement the"},{"line_number":172,"context_line":"``get_service_clients`` method in the plugin class. All service clients which"},{"line_number":173,"context_line":"are exposed via this interface will be automatically configured and be"},{"line_number":174,"context_line":"available in any instance of the service clients class, defined in"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_65b78f3a","line":171,"range":{"start_line":171,"start_character":0,"end_line":171,"end_character":36},"updated":"2016-08-04 22:04:42.000000000","message":"Maybe this means \"If the project repository has its own service client and wants to register the client to use\"","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"eff346e5157d4ecf061b9a83ac56f8bb7c3a2419","unresolved":false,"context_lines":[{"line_number":168,"context_line":"Service Clients"},{"line_number":169,"context_line":"---------------"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"If a plugin defines a service client, it is beneficial for it to implement the"},{"line_number":172,"context_line":"``get_service_clients`` method in the plugin class. All service clients which"},{"line_number":173,"context_line":"are exposed via this interface will be automatically configured and be"},{"line_number":174,"context_line":"available in any instance of the service clients class, defined in"}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_a019758a","line":171,"range":{"start_line":171,"start_character":0,"end_line":171,"end_character":36},"in_reply_to":"bacf61ea_65b78f3a","updated":"2016-08-04 22:48:15.000000000","message":"No, I meant what I wrote, if a plugins defines a service client.\nI\u0027m not sure what you mean with project repository - a plugin can be hosted in a project repo or in its own repo, it doesn\u0027t really matter in this context.","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dc9f599fa0322d6dac9c57699a305dfa317285c5","unresolved":false,"context_lines":[{"line_number":172,"context_line":"``get_service_clients`` method in the plugin class. All service clients which"},{"line_number":173,"context_line":"are exposed via this interface will be automatically configured and be"},{"line_number":174,"context_line":"available in any instance of the service clients class, defined in"},{"line_number":175,"context_line":"``tempest.lib.services.clients.ServiceClients``. In case multiple plugins are"},{"line_number":176,"context_line":"installed, all service clients from all plugins will be registered, making it"},{"line_number":177,"context_line":"easy to write tests which rely on multiple APIs whose service clients are in"},{"line_number":178,"context_line":"different plugins."}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_79890126","line":175,"range":{"start_line":175,"start_character":31,"end_line":175,"end_character":45},"updated":"2016-08-04 22:04:42.000000000","message":"ClientsRegistry　?","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"eff346e5157d4ecf061b9a83ac56f8bb7c3a2419","unresolved":false,"context_lines":[{"line_number":172,"context_line":"``get_service_clients`` method in the plugin class. All service clients which"},{"line_number":173,"context_line":"are exposed via this interface will be automatically configured and be"},{"line_number":174,"context_line":"available in any instance of the service clients class, defined in"},{"line_number":175,"context_line":"``tempest.lib.services.clients.ServiceClients``. In case multiple plugins are"},{"line_number":176,"context_line":"installed, all service clients from all plugins will be registered, making it"},{"line_number":177,"context_line":"easy to write tests which rely on multiple APIs whose service clients are in"},{"line_number":178,"context_line":"different plugins."}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_9b002203","line":175,"range":{"start_line":175,"start_character":31,"end_line":175,"end_character":45},"in_reply_to":"bacf61ea_79890126","updated":"2016-08-04 22:48:15.000000000","message":"I meant ServiceClients, that\u0027s where the clients will be available from...","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"cda2faa340b2a005028b31ad7ace83cf907d8753","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"   # my_creds is instance of tempest.lib.auth.Credentials"},{"line_number":219,"context_line":"   # identity_uri is v2 or v3 depending on the configuration"},{"line_number":220,"context_line":"   clients \u003d clients.ServiceClients(my_creds, identity_uri)"},{"line_number":221,"context_line":"   my_service1_api1_client \u003d clients.my_service_v1.API1Client()"},{"line_number":222,"context_line":"   my_service2_api1_client \u003d clients.my_service_v2.API1Client(my_args\u003d\u0027any\u0027)"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_38694efa","line":220,"updated":"2016-08-04 15:50:49.000000000","message":"This is the lib clients object? Also won\u0027t this cause a name confict if you\u0027re importing clients? :p","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"eff346e5157d4ecf061b9a83ac56f8bb7c3a2419","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"   # my_creds is instance of tempest.lib.auth.Credentials"},{"line_number":219,"context_line":"   # identity_uri is v2 or v3 depending on the configuration"},{"line_number":220,"context_line":"   clients \u003d clients.ServiceClients(my_creds, identity_uri)"},{"line_number":221,"context_line":"   my_service1_api1_client \u003d clients.my_service_v1.API1Client()"},{"line_number":222,"context_line":"   my_service2_api1_client \u003d clients.my_service_v2.API1Client(my_args\u003d\u0027any\u0027)"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"bacf61ea_3b2f7689","line":220,"in_reply_to":"bacf61ea_38694efa","updated":"2016-08-04 22:48:15.000000000","message":"Yes this is the lib clients module, I can include the import statement. And yes I chose variable names very poorly :P","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"}],"tempest/lib/services/clients.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dc9f599fa0322d6dac9c57699a305dfa317285c5","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    Provides a list of service modules available Tempest."},{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":"    return set([\u0027compute\u0027, \u0027identity.v2\u0027, \u0027identity.v3\u0027, \u0027image.v1\u0027,"},{"line_number":46,"context_line":"                \u0027image.v2\u0027, \u0027network\u0027, \u0027object-storage\u0027, \u0027volume.v1\u0027,"},{"line_number":47,"context_line":"                \u0027volume.v2\u0027, \u0027volume.v3\u0027])"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_252757cb","line":45,"range":{"start_line":45,"start_character":11,"end_line":45,"end_character":14},"updated":"2016-08-04 22:04:42.000000000","message":"I guess this set() is just for combining the other list like line 92. But the docstring shows this as a list.\nHow about returning a list here as docstring and using set() internally in the method?\nAfter publishing this as tempest.lib, it is difficult to change it and I\u0027d like to consider a little bit more.","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"eff346e5157d4ecf061b9a83ac56f8bb7c3a2419","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    Provides a list of service modules available Tempest."},{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":"    return set([\u0027compute\u0027, \u0027identity.v2\u0027, \u0027identity.v3\u0027, \u0027image.v1\u0027,"},{"line_number":46,"context_line":"                \u0027image.v2\u0027, \u0027network\u0027, \u0027object-storage\u0027, \u0027volume.v1\u0027,"},{"line_number":47,"context_line":"                \u0027volume.v2\u0027, \u0027volume.v3\u0027])"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_5b186a1e","line":45,"range":{"start_line":45,"start_character":11,"end_line":45,"end_character":14},"in_reply_to":"bacf61ea_252757cb","updated":"2016-08-04 22:48:15.000000000","message":"Yes I should say set. I\u0027d rather keep it as a set and update the docstring. There\u0027s no reason it should be a list, order is not relevant.","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f1f5373bc3cb7b30984ecf2ca09499bee7c19138","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    Provides a list of service modules available Tempest."},{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":"    return set([\u0027compute\u0027, \u0027identity.v2\u0027, \u0027identity.v3\u0027, \u0027image.v1\u0027,"},{"line_number":46,"context_line":"                \u0027image.v2\u0027, \u0027network\u0027, \u0027object-storage\u0027, \u0027volume.v1\u0027,"},{"line_number":47,"context_line":"                \u0027volume.v2\u0027, \u0027volume.v3\u0027])"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_76ef431e","line":45,"range":{"start_line":45,"start_character":11,"end_line":45,"end_character":14},"in_reply_to":"bacf61ea_5b186a1e","updated":"2016-08-04 23:34:35.000000000","message":"OK, good to update the docstring instead.","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dc9f599fa0322d6dac9c57699a305dfa317285c5","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    Provides a list of service modules available Tempest."},{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":"    return set([\u0027compute\u0027, \u0027identity.v2\u0027, \u0027identity.v3\u0027, \u0027image.v1\u0027,"},{"line_number":46,"context_line":"                \u0027image.v2\u0027, \u0027network\u0027, \u0027object-storage\u0027, \u0027volume.v1\u0027,"},{"line_number":47,"context_line":"                \u0027volume.v2\u0027, \u0027volume.v3\u0027])"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def available_modules():"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_be807fc0","line":47,"range":{"start_line":45,"start_character":16,"end_line":47,"end_character":42},"updated":"2016-08-04 22:04:42.000000000","message":"Yeah, this list is available on Tempest, but some modules are not available on tempest.lib yet.\nIs it fine to expose them also on tempest.lib?\n\nMy concern is that if Tempest exposes unstable service clients also via this(or the following available_modules()) to plugins and they are using the unstable clients, our cleanup clients\u0027 work will break their own gates.","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f1f5373bc3cb7b30984ecf2ca09499bee7c19138","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    Provides a list of service modules available Tempest."},{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":"    return set([\u0027compute\u0027, \u0027identity.v2\u0027, \u0027identity.v3\u0027, \u0027image.v1\u0027,"},{"line_number":46,"context_line":"                \u0027image.v2\u0027, \u0027network\u0027, \u0027object-storage\u0027, \u0027volume.v1\u0027,"},{"line_number":47,"context_line":"                \u0027volume.v2\u0027, \u0027volume.v3\u0027])"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def available_modules():"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_96eab70d","line":47,"range":{"start_line":45,"start_character":16,"end_line":47,"end_character":42},"in_reply_to":"bacf61ea_3bc3f658","updated":"2016-08-04 23:34:35.000000000","message":"Yeah, I prefer this as an internal method.\n\nIn addition, the returned modules of this method are used in the following available_modules(). I guess tempest_lib_modules() should be used instead of this method.","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"eff346e5157d4ecf061b9a83ac56f8bb7c3a2419","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    Provides a list of service modules available Tempest."},{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":"    return set([\u0027compute\u0027, \u0027identity.v2\u0027, \u0027identity.v3\u0027, \u0027image.v1\u0027,"},{"line_number":46,"context_line":"                \u0027image.v2\u0027, \u0027network\u0027, \u0027object-storage\u0027, \u0027volume.v1\u0027,"},{"line_number":47,"context_line":"                \u0027volume.v2\u0027, \u0027volume.v3\u0027])"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"def available_modules():"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_3bc3f658","line":47,"range":{"start_line":45,"start_character":16,"end_line":47,"end_character":42},"in_reply_to":"bacf61ea_be807fc0","updated":"2016-08-04 22:48:15.000000000","message":"Tempest is not exposing any unstable interface. Only the service clients which are stable will be available in ServiceClients to plugins.\n\nIn the next patch I added a tempest_lib_modules which shows which modules are stable already. Eventually tempest_lib_modules and tempest_modules will become identical, so one of the two will have to be deprecated. \n\nIf you prefer so, I can name this _tempest_modules() so it won\u0027t be exposed as a public interface. Only tempest_lib_modules will stay as a public interface.","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dc9f599fa0322d6dac9c57699a305dfa317285c5","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                raise exceptions.PluginRegistrationException("},{"line_number":90,"context_line":"                    name\u003dplugin_name, detailed_error\u003ddetailed_error)"},{"line_number":91,"context_line":"        extra_service_versions |\u003d plug_service_versions"},{"line_number":92,"context_line":"    return tempest_modules() | extra_service_versions"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"@misc.singleton"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_250e373b","line":92,"updated":"2016-08-04 22:04:42.000000000","message":"ditto: set() vs. list","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dc9f599fa0322d6dac9c57699a305dfa317285c5","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    \"\"\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def __init__(self, module_path, client_names, auth_provider, **kwargs):"},{"line_number":127,"context_line":"        \"\"\"Initialises the client factory"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        :param module_path: Path to module that includes all service clients."},{"line_number":130,"context_line":"            All service client classes must be exposed by a single module."}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_e06b6db7","line":127,"range":{"start_line":127,"start_character":11,"end_line":127,"end_character":22},"updated":"2016-08-04 22:04:42.000000000","message":"nit: Initializes","commit_id":"4f96b63d74ab08abb495c77611a05ab8c025feca"}]}
