)]}'
{"rally/osclients.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"91ed0c76fd7f8b5c77a9b50432a0590c25681eb1","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        return self.aggregator.endpoint"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def get_version(self, version):"},{"line_number":55,"context_line":"        # most clients maps string value of version to versioned module, so we"},{"line_number":56,"context_line":"        # should return str obj"},{"line_number":57,"context_line":"        return str(version or"},{"line_number":58,"context_line":"                   self.aggregator.versions.get(self.__name__.lower(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_d03b4b37","line":55,"updated":"2015-10-12 16:59:40.000000000","message":"s/value/values\n\ns/module/modules","commit_id":"587cec4375db37f3ce99150c9e13f5cb1bd06366"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"91ed0c76fd7f8b5c77a9b50432a0590c25681eb1","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def get_version(self, version):"},{"line_number":55,"context_line":"        # most clients maps string value of version to versioned module, so we"},{"line_number":56,"context_line":"        # should return str obj"},{"line_number":57,"context_line":"        return str(version or"},{"line_number":58,"context_line":"                   self.aggregator.versions.get(self.__name__.lower(),"},{"line_number":59,"context_line":"                                                self.DEFAULT_VERSION))"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_701fd7b7","line":56,"updated":"2015-10-12 16:59:40.000000000","message":"s/return str obj/insure that version is a string object","commit_id":"587cec4375db37f3ce99150c9e13f5cb1bd06366"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"91ed0c76fd7f8b5c77a9b50432a0590c25681eb1","unresolved":false,"context_lines":[{"line_number":472,"context_line":"    \"\"\"This class simplify and unify work with openstack python clients.\"\"\""},{"line_number":473,"context_line":"    def __init__(self, endpoint, versions\u003dNone):"},{"line_number":474,"context_line":"        self.endpoint \u003d endpoint"},{"line_number":475,"context_line":"        self.versions \u003d versions or {}"},{"line_number":476,"context_line":"        # NOTE(kun) Apply insecure/cacert settings from rally.conf if those are"},{"line_number":477,"context_line":"        # not set in deployment config. Remove it when invaild."},{"line_number":478,"context_line":"        if self.endpoint.insecure is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_f0cf6727","line":475,"updated":"2015-10-12 16:59:40.000000000","message":"oops, it doesn\u0027t relate to this patch","commit_id":"587cec4375db37f3ce99150c9e13f5cb1bd06366"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"237597456f4c54c378749aebe2934e6d1a9e5f41","unresolved":false,"context_lines":[{"line_number":39,"context_line":"CONF.register_opts(OSCLIENTS_OPTS)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class BaseOSClient(object):"},{"line_number":43,"context_line":"    DEFAULT_VERSION \u003d 0"},{"line_number":44,"context_line":"    DEFAULT_SERVICE_TYPE \u003d None"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a2ca52d_fe1331b6","line":42,"updated":"2015-10-16 09:48:20.000000000","message":"You are reinventing Plugins mechanism that I build and you are doing the same mistakes that I did before+)","commit_id":"546e32d485de1c5ebe876a7e1f1cc783dc9c19d9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c67130a982f40ce576f161e0395b3322e538bafe","unresolved":false,"context_lines":[{"line_number":493,"context_line":"class Clients(object):"},{"line_number":494,"context_line":"    \"\"\"This class simplify and unify work with openstack python clients.\"\"\""},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    _clients \u003d {"},{"line_number":497,"context_line":"        \"ceilometer\": _Ceilometer,"},{"line_number":498,"context_line":"        \"cinder\": _Cinder,"},{"line_number":499,"context_line":"        \"designate\": _Designate,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a2ca52d_1e9ced0d","line":496,"updated":"2015-10-16 09:53:18.000000000","message":"if you use plugin base class you won\u0027t need to hardcode this","commit_id":"546e32d485de1c5ebe876a7e1f1cc783dc9c19d9"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"92eddcafaaadfc1c2e95f663888bbf00ceba2b37","unresolved":false,"context_lines":[{"line_number":43,"context_line":"CLIENTS_NAMESPACE \u003d \"clients\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def configure(name, default_version\u003dNone, default_service_type\u003dNone):"},{"line_number":47,"context_line":"    \"\"\"OpenStack client class wrapper."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    Each client class has to be wrapped by configure() wrapper. It"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a29b11f_34f165ce","line":46,"updated":"2015-10-18 09:33:37.000000000","message":"namespace is required here to have openstack namespace in future","commit_id":"502e846f058b7e6b3dbd9044c4681b1ed9c38e46"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"f7e20acb6db063e00ff239f3b0a741ae61ab0e14","unresolved":false,"context_lines":[{"line_number":43,"context_line":"CLIENTS_NAMESPACE \u003d \"clients\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"def configure(name, default_version\u003dNone, default_service_type\u003dNone):"},{"line_number":47,"context_line":"    \"\"\"OpenStack client class wrapper."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    Each client class has to be wrapped by configure() wrapper. It"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a29b11f_cf565e06","line":46,"in_reply_to":"3a29b11f_34f165ce","updated":"2015-10-19 15:50:59.000000000","message":"it will be added in next patch, when osclients will be splitted base clients stuff an to OpenStack-related clients.","commit_id":"502e846f058b7e6b3dbd9044c4681b1ed9c38e46"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"92eddcafaaadfc1c2e95f663888bbf00ceba2b37","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    :param default_service_type: Default service type of endpoint"},{"line_number":55,"context_line":"    \"\"\""},{"line_number":56,"context_line":"    def wrapper(cls):"},{"line_number":57,"context_line":"        cls \u003d plugin.configure(name\u003dname, namespace\u003dCLIENTS_NAMESPACE)(cls)"},{"line_number":58,"context_line":"        cls._meta_set(\"default_version\", default_version)"},{"line_number":59,"context_line":"        cls._meta_set(\"default_service_type\", default_service_type)"},{"line_number":60,"context_line":"        return cls"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a29b11f_141d4973","line":57,"updated":"2015-10-18 09:33:37.000000000","message":"Seems like you didn\u0027t understand why we need namespaces. \n\nThey will be used for isolation between projects plugins. \n\nWe will have namespaces like: openstack, aws, libvirt and so on","commit_id":"502e846f058b7e6b3dbd9044c4681b1ed9c38e46"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"f7e20acb6db063e00ff239f3b0a741ae61ab0e14","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    :param default_service_type: Default service type of endpoint"},{"line_number":55,"context_line":"    \"\"\""},{"line_number":56,"context_line":"    def wrapper(cls):"},{"line_number":57,"context_line":"        cls \u003d plugin.configure(name\u003dname, namespace\u003dCLIENTS_NAMESPACE)(cls)"},{"line_number":58,"context_line":"        cls._meta_set(\"default_version\", default_version)"},{"line_number":59,"context_line":"        cls._meta_set(\"default_service_type\", default_service_type)"},{"line_number":60,"context_line":"        return cls"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a29b11f_ef5b1a2d","line":57,"in_reply_to":"3a29b11f_141d4973","updated":"2015-10-19 15:50:59.000000000","message":"renamed to openstack(just want to use namespace now).","commit_id":"502e846f058b7e6b3dbd9044c4681b1ed9c38e46"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"632449dc243cc07ad9153fe2c2d85edad8e3f05e","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        #         cls \u003d importutils.import_class(version_map[version])"},{"line_number":81,"context_line":"        #         return cls(*args, **kwargs)"},{"line_number":82,"context_line":"        #"},{"line_number":83,"context_line":"        # That is why type of version so important and we should insure that"},{"line_number":84,"context_line":"        # version is a string object."},{"line_number":85,"context_line":"        # For those clients which doesn\u0027t accept string value(for example"},{"line_number":86,"context_line":"        # zaqarclient), this method should be overridden."}],"source_content_type":"text/x-python","patch_set":9,"id":"3a29b11f_7271cadf","line":83,"updated":"2015-10-20 16:06:22.000000000","message":"typo: ensure","commit_id":"53279feb2278c51589e4cb732232626ddb5060aa"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ecba6d7c209270d475d8a71e3f6d0d45365bf514","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        #         cls \u003d importutils.import_class(version_map[version])"},{"line_number":81,"context_line":"        #         return cls(*args, **kwargs)"},{"line_number":82,"context_line":"        #"},{"line_number":83,"context_line":"        # That is why type of version so important and we should insure that"},{"line_number":84,"context_line":"        # version is a string object."},{"line_number":85,"context_line":"        # For those clients which doesn\u0027t accept string value(for example"},{"line_number":86,"context_line":"        # zaqarclient), this method should be overridden."}],"source_content_type":"text/x-python","patch_set":9,"id":"3a29b11f_4a55d5f7","line":83,"in_reply_to":"3a29b11f_7271cadf","updated":"2015-10-21 09:43:19.000000000","message":"Done","commit_id":"53279feb2278c51589e4cb732232626ddb5060aa"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"1e570d4d7ddef6c8b765533968aadcf78d0b503c","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        #         cls \u003d importutils.import_class(version_map[version])"},{"line_number":81,"context_line":"        #         return cls(*args, **kwargs)"},{"line_number":82,"context_line":"        #"},{"line_number":83,"context_line":"        # That is why type of version so important and we should insure that"},{"line_number":84,"context_line":"        # version is a string object."},{"line_number":85,"context_line":"        # For those clients which doesn\u0027t accept string value(for example"},{"line_number":86,"context_line":"        # zaqarclient), this method should be overridden."}],"source_content_type":"text/x-python","patch_set":9,"id":"3a29b11f_1b4191a9","line":83,"in_reply_to":"3a29b11f_7271cadf","updated":"2015-10-20 16:50:17.000000000","message":"just a typo. I will fix it in next patch-set(if more minor comment will appear) or in next patches in the chain","commit_id":"53279feb2278c51589e4cb732232626ddb5060aa"},{"author":{"_account_id":7369,"name":"Sergey Skripnick","email":"sskripnick@mirantis.com","username":"redixin"},"change_message_id":"632449dc243cc07ad9153fe2c2d85edad8e3f05e","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"@configure(\"nova\", default_version\u003d\"2\", default_service_type\u003d\"compute\")"},{"line_number":162,"context_line":"class Nova(OSClient):"},{"line_number":163,"context_line":"    def create_client(self, version\u003dNone):"},{"line_number":164,"context_line":"        \"\"\"Return nova client.\"\"\""},{"line_number":165,"context_line":"        from novaclient import client as nova"},{"line_number":166,"context_line":"        kc \u003d self.keystone()"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a29b11f_35933ca5","line":163,"updated":"2015-10-20 16:06:22.000000000","message":"lol why not just write version\u003d\"2\" instead of using that @configure(default_version\u003d\"2\"?","commit_id":"53279feb2278c51589e4cb732232626ddb5060aa"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"1e570d4d7ddef6c8b765533968aadcf78d0b503c","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"@configure(\"nova\", default_version\u003d\"2\", default_service_type\u003d\"compute\")"},{"line_number":162,"context_line":"class Nova(OSClient):"},{"line_number":163,"context_line":"    def create_client(self, version\u003dNone):"},{"line_number":164,"context_line":"        \"\"\"Return nova client.\"\"\""},{"line_number":165,"context_line":"        from novaclient import client as nova"},{"line_number":166,"context_line":"        kc \u003d self.keystone()"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a29b11f_1ba511a1","line":163,"in_reply_to":"3a29b11f_35933ca5","updated":"2015-10-20 16:50:17.000000000","message":"such approach separate version to 3 groups:\n - user specified version(for example hard coded values: clients.nova(2.2))\n - context version(see https://review.openstack.org/#/c/232546 for more details)\n - default version\n\nIf default version will be written in args, we will be unable to determine is it user-specified or default.","commit_id":"53279feb2278c51589e4cb732232626ddb5060aa"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"e584e29e1116c074413a7e4a5028c4fc7cd697ba","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.endpoint \u003d endpoint"},{"line_number":68,"context_line":"        self.cache \u003d cache_obj"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def get_version(self, version):"},{"line_number":71,"context_line":"        # NOTE(andreykuilin): most clients contain map for versioned modules,"},{"line_number":72,"context_line":"        # where a key is a string value of version. Example of map and"},{"line_number":73,"context_line":"        # its usage:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a29b11f_220c2eec","line":70,"updated":"2015-10-21 14:42:12.000000000","message":"Having `version\u003dNone\u0027 will avoid strange `version\u003dself.get_version(None)\u0027","commit_id":"aeab4066215d54a23f193c72596932cabc259596"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"8649b5120346b0a28dd42ef726c2ef42e8bfc0af","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.endpoint \u003d endpoint"},{"line_number":68,"context_line":"        self.cache \u003d cache_obj"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def get_version(self, version):"},{"line_number":71,"context_line":"        # NOTE(andreykuilin): most clients contain map for versioned modules,"},{"line_number":72,"context_line":"        # where a key is a string value of version. Example of map and"},{"line_number":73,"context_line":"        # its usage:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a29b11f_8f6beab8","line":70,"in_reply_to":"3a29b11f_220c2eec","updated":"2015-10-21 15:25:16.000000000","message":"Done","commit_id":"aeab4066215d54a23f193c72596932cabc259596"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"ce065dc2c5238ccdac5b839d8a40b881090bf783","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                                 str(args) if args else \"\","},{"line_number":120,"context_line":"                                 str(kwargs) if kwargs else \"\")"},{"line_number":121,"context_line":"        if key not in self.cache:"},{"line_number":122,"context_line":"            self.cache[key] \u003d self.create_client(*args, **kwargs)"},{"line_number":123,"context_line":"        return self.cache[key]"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a29b11f_bc570559","line":122,"updated":"2015-10-21 14:30:00.000000000","message":"This change is implicit (because of L532 - cache object now passed to osclient __init__, and each new OSClient instance has own reference to this object).\n\nCan we make changing cache explicit, like that was before?","commit_id":"aeab4066215d54a23f193c72596932cabc259596"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"8649b5120346b0a28dd42ef726c2ef42e8bfc0af","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                                 str(args) if args else \"\","},{"line_number":120,"context_line":"                                 str(kwargs) if kwargs else \"\")"},{"line_number":121,"context_line":"        if key not in self.cache:"},{"line_number":122,"context_line":"            self.cache[key] \u003d self.create_client(*args, **kwargs)"},{"line_number":123,"context_line":"        return self.cache[key]"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a29b11f_cfbb22e4","line":122,"in_reply_to":"3a29b11f_bc570559","updated":"2015-10-21 15:25:16.000000000","message":"\u003eeach new OSClient instance has own reference to this object\n\nNot sure that I understood you correctly. Ibject is the same, so this code works as expected.\n\nExample:\n\nIn [1]: cache_obj \u003d {}\n\nIn [2]:  class A():\n   ...:     def __init__(self, cache):\n   ...:        self.cache \u003d cache\n   ...:     def add_to_cache(self, key, value):\n   ...:        self.cache[key] \u003d value\n   ...:       \n\nIn [3]: obj \u003d A(cache_obj)\n\nIn [4]: obj.add_to_cache(\"some_key\", \"some_value\")\n\nIn [5]: cache_obj\nOut[5]: {\u0027some_key\u0027: \u0027some_value\u0027}","commit_id":"aeab4066215d54a23f193c72596932cabc259596"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"aac525278034bea2aec53de393cc35ea1539b1d9","unresolved":false,"context_lines":[{"line_number":583,"context_line":"        return self.cache[\"services_data\"]"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"    @classmethod"},{"line_number":586,"context_line":"    def register(cls, client_name):"},{"line_number":587,"context_line":"        \"\"\"DEPRECATED!Decorator that adds new OpenStack client dynamically."},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"        Use rally.osclients.configure decorator instead!"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a29b11f_b7e5dea4","line":586,"updated":"2015-10-21 14:35:45.000000000","message":"Maybe use log_deprecated() here?\n\nhttps://github.com/openstack/rally/blob/master/rally/common/utils.py#L181","commit_id":"aeab4066215d54a23f193c72596932cabc259596"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"8649b5120346b0a28dd42ef726c2ef42e8bfc0af","unresolved":false,"context_lines":[{"line_number":583,"context_line":"        return self.cache[\"services_data\"]"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"    @classmethod"},{"line_number":586,"context_line":"    def register(cls, client_name):"},{"line_number":587,"context_line":"        \"\"\"DEPRECATED!Decorator that adds new OpenStack client dynamically."},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"        Use rally.osclients.configure decorator instead!"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a29b11f_8fad2a86","line":586,"in_reply_to":"3a29b11f_b7e5dea4","updated":"2015-10-21 15:25:16.000000000","message":"Done","commit_id":"aeab4066215d54a23f193c72596932cabc259596"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d9e080ff35d5c567fb6595ea70648ed2ac7e4f71","unresolved":false,"context_lines":[{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":"CONF.register_opts(OSCLIENTS_OPTS)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"_NAMESPACE \u003d \"openstack\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"def configure(name, default_version\u003dNone, default_service_type\u003dNone):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a29b11f_b81b6680","line":44,"updated":"2015-10-22 12:04:52.000000000","message":"remove this","commit_id":"806a114f44c08a92b27090e6065ea05131272638"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d9e080ff35d5c567fb6595ea70648ed2ac7e4f71","unresolved":false,"context_lines":[{"line_number":44,"context_line":"_NAMESPACE \u003d \"openstack\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"def configure(name, default_version\u003dNone, default_service_type\u003dNone):"},{"line_number":48,"context_line":"    \"\"\"OpenStack client class wrapper."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    Each client class has to be wrapped by configure() wrapper. It"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a29b11f_3810b656","line":47,"updated":"2015-10-22 12:04:52.000000000","message":"put here (name, namespace, default_vaersion....)\n\nand specify explicity to all clients that they are in openstack namespace","commit_id":"806a114f44c08a92b27090e6065ea05131272638"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"51e86266805d2fa229160132b4e355300f3f502e","unresolved":false,"context_lines":[{"line_number":44,"context_line":"_NAMESPACE \u003d \"openstack\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"def configure(name, default_version\u003dNone, default_service_type\u003dNone):"},{"line_number":48,"context_line":"    \"\"\"OpenStack client class wrapper."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    Each client class has to be wrapped by configure() wrapper. It"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a29b11f_3e841f09","line":47,"in_reply_to":"3a29b11f_3810b656","updated":"2015-10-22 12:16:55.000000000","message":"module is named \"osclients\" \u003d\u003d OpenStack clients, so, imo, hardcoded namespace in configure is ok for now.\n\nIn next patch I\u0027ll split osclients to base clients stuff(with configurable namespace) and openstack related.","commit_id":"806a114f44c08a92b27090e6065ea05131272638"}],"rally/plugins/openstack/scenarios/fuel/utils.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"e584e29e1116c074413a7e4a5028c4fc7cd697ba","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    \"\"\"FuelClient factory for osclients.Clients.\"\"\""},{"line_number":110,"context_line":"    def create_client(self, *args, **kwargs):"},{"line_number":111,"context_line":"        auth_url \u003d six.moves.urllib.parse.urlparse(self.endpoint.auth_url)"},{"line_number":112,"context_line":"        return FuelClient(version\u003dself.get_version(None),"},{"line_number":113,"context_line":"                          server_address\u003dauth_url.hostname,"},{"line_number":114,"context_line":"                          server_port\u003d8000,"},{"line_number":115,"context_line":"                          username\u003dself.endpoint.username,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a29b11f_42184a1e","line":112,"updated":"2015-10-21 14:42:12.000000000","message":"`None\u0027 looks strange, it is better to have version argument default to None","commit_id":"aeab4066215d54a23f193c72596932cabc259596"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"8649b5120346b0a28dd42ef726c2ef42e8bfc0af","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    \"\"\"FuelClient factory for osclients.Clients.\"\"\""},{"line_number":110,"context_line":"    def create_client(self, *args, **kwargs):"},{"line_number":111,"context_line":"        auth_url \u003d six.moves.urllib.parse.urlparse(self.endpoint.auth_url)"},{"line_number":112,"context_line":"        return FuelClient(version\u003dself.get_version(None),"},{"line_number":113,"context_line":"                          server_address\u003dauth_url.hostname,"},{"line_number":114,"context_line":"                          server_port\u003d8000,"},{"line_number":115,"context_line":"                          username\u003dself.endpoint.username,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a29b11f_afb82676","line":112,"in_reply_to":"3a29b11f_42184a1e","updated":"2015-10-21 15:25:16.000000000","message":"Done","commit_id":"aeab4066215d54a23f193c72596932cabc259596"}]}
