)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"5d5e797e3e1a13f4f2e68946488ac002fcefd25c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Allow to specify the endpoint type to use for each service. Not everybody will"},{"line_number":10,"context_line":"want to use publicURL, so let\u0027s make this configurable."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This also renames the \"images\" property of TempestConfigPrivate to use the"},{"line_number":13,"context_line":"singular for \"image\" instead, in order to have consistency between the config"},{"line_number":14,"context_line":"property and the service type name."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAAUX%2F%2F1oc%3D","line":12,"updated":"2014-02-10 14:07:12.000000000","message":"This part is outside of the scope of this change. Please push it out as a separate commit.","commit_id":"1fa8a56a30150230eb2fd917e124ddf6548af312"}],"tempest/common/rest_client.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1695a9341d7e01433cd76cfed282144f4981785a","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                service_region \u003d self.config.identity.region"},{"line_number":67,"context_line":"            self.region[catalog_type] \u003d service_region"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"            endpoint_type \u003d getattr(cfg, \u0027endpoint_type\u0027, None)"},{"line_number":70,"context_line":"            if not endpoint_type:"},{"line_number":71,"context_line":"                endpoint_type \u003d self.config.identity.endpoint_type"},{"line_number":72,"context_line":"            self.endpoint_type[catalog_type] \u003d endpoint_type"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F88Yc%3D","line":69,"updated":"2013-12-18 14:48:24.000000000","message":"in relation with my comment on config.py, if there is a finite number of type, what do you think about add a test to prevent mistake?","commit_id":"8af58f7c2999481ff703b72417e210315626253e"},{"author":{"_account_id":6788,"name":"Rossella Sblendido","email":"rsblendido@suse.com","username":"rossella-o"},"change_message_id":"a03a95d6d097fc3dda720bd00a1e8b94bc4388ba","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self.region \u003d {}"},{"line_number":56,"context_line":"        self.endpoint_type \u003d {}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        for service in (\u0027compute\u0027, \u0027identity\u0027, \u0027images\u0027, \u0027network\u0027, \u0027volume\u0027,"},{"line_number":59,"context_line":"                        \u0027object_storage\u0027, \u0027orchestration\u0027):"},{"line_number":60,"context_line":"            cfg \u003d getattr(self.config, service)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FdMQ%3D","line":58,"updated":"2014-01-13 17:53:28.000000000","message":"I think it\u0027s better not to hard code the name of the services but to load all config.FOO.catalog_type as it was before. If a service is added then you don\u0027t need to modify this line if you load the config files dynamically.","commit_id":"96d4c13a61949d2073e5d403ef2d03ebc9d0e9bb"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"64ed4eb50f267da066475d7e97fd1504475d8773","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self.region \u003d {}"},{"line_number":56,"context_line":"        self.endpoint_type \u003d {}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        for service in (\u0027compute\u0027, \u0027identity\u0027, \u0027images\u0027, \u0027network\u0027, \u0027volume\u0027,"},{"line_number":59,"context_line":"                        \u0027object_storage\u0027, \u0027orchestration\u0027):"},{"line_number":60,"context_line":"            cfg \u003d getattr(self.config, service)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2B4C4%3D","line":58,"in_reply_to":"AAAAUH%2F%2FdHE%3D","updated":"2014-01-21 07:26:57.000000000","message":"I don\u0027t like this hard coded. Can we use config.service_available? They are nova, cinder, glance etc, though..","commit_id":"96d4c13a61949d2073e5d403ef2d03ebc9d0e9bb"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"f91f6b2a57a9d37b54f86181ea8a160ab0d20a00","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self.region \u003d {}"},{"line_number":56,"context_line":"        self.endpoint_type \u003d {}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        for service in (\u0027compute\u0027, \u0027identity\u0027, \u0027images\u0027, \u0027network\u0027, \u0027volume\u0027,"},{"line_number":59,"context_line":"                        \u0027object_storage\u0027, \u0027orchestration\u0027):"},{"line_number":60,"context_line":"            cfg \u003d getattr(self.config, service)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FdHE%3D","line":58,"in_reply_to":"AAAAUH%2F%2FdMQ%3D","updated":"2014-01-13 18:07:35.000000000","message":"Yeah, I agree in theory. But :\n1) this doesn\u0027t work for nova compute v3 because the key is named catalog_v3_type and not catalog_type\n2) dir(self.config) returns a very long iterable with a lot of thing that is not relevant right here.\n3) I find dir(self.config) not the best option when you know by advance which key you are looking for.\n\nSo I\u0027d rather wait for similar comments on this before making a change.","commit_id":"96d4c13a61949d2073e5d403ef2d03ebc9d0e9bb"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"165e86911f5d723026992f22ad6c53e63cdf7cda","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self.region \u003d {}"},{"line_number":56,"context_line":"        self.endpoint_type \u003d {}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        for service in (\u0027compute\u0027, \u0027identity\u0027, \u0027images\u0027, \u0027network\u0027, \u0027volume\u0027,"},{"line_number":59,"context_line":"                        \u0027object_storage\u0027, \u0027orchestration\u0027):"},{"line_number":60,"context_line":"            cfg \u003d getattr(self.config, service)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2Bx0Y%3D","line":58,"updated":"2014-01-22 08:33:05.000000000","message":"We have already same list in tempest.test.services.\nCan we use it by changing it to visible to other classes like HTTP_SUCCESS?","commit_id":"ee3c1f7b9f543aeeecd50f2afdc446d31815d08f"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"ffab74a25c93bd4cf1fd0d0f19e1e6c24c076ada","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self.region \u003d {}"},{"line_number":56,"context_line":"        self.endpoint_type \u003d {}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        for service in (\u0027compute\u0027, \u0027identity\u0027, \u0027images\u0027, \u0027network\u0027, \u0027volume\u0027,"},{"line_number":59,"context_line":"                        \u0027object_storage\u0027, \u0027orchestration\u0027):"},{"line_number":60,"context_line":"            cfg \u003d getattr(self.config, service)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2BxWc%3D","line":58,"in_reply_to":"AAAAUH%2F%2Bx0Y%3D","updated":"2014-01-22 09:59:48.000000000","message":"Good idea ! I wasn\u0027t aware of this list.\n\nThere\u0027s one minor but blocking issue. In tempest.test.services() there\u0027s an entry for swift which is called \"object\" but in config.py swift is referenced as \"object_storage\". Same issue with \"images\" in config.py but \"image\" in the tempest.test.services\n\nWhat do you think ? For swift I\u0027d rather change tempest.test.services to use object_storage instead of \"object\" (because \"object\" all by itself doesn\u0027t make much sense). For glance I\u0027d rather change config.py to use \"image\" instead of \"images\".","commit_id":"ee3c1f7b9f543aeeecd50f2afdc446d31815d08f"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"6c2371323e9a807392bdaef71654b67a4329bc57","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self.region \u003d {}"},{"line_number":56,"context_line":"        self.endpoint_type \u003d {}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        for service in (\u0027compute\u0027, \u0027identity\u0027, \u0027images\u0027, \u0027network\u0027, \u0027volume\u0027,"},{"line_number":59,"context_line":"                        \u0027object_storage\u0027, \u0027orchestration\u0027):"},{"line_number":60,"context_line":"            cfg \u003d getattr(self.config, service)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F95sc%3D","line":58,"in_reply_to":"AAAAUH%2F%2BxWc%3D","updated":"2014-02-02 02:57:51.000000000","message":"I agree with your idea(\u0027object\u0027 -\u003e \u0027object_storage\u0027, \u0027images\u0027 -\u003e \u0027image\u0027). I think it\u0027s good creating a new patch for that. And this patch should be depends on that cleaning up patch.","commit_id":"ee3c1f7b9f543aeeecd50f2afdc446d31815d08f"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"f6d78a5df6c872a676b0de8d4339d08160f145f2","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self.region \u003d {}"},{"line_number":56,"context_line":"        self.endpoint_type \u003d {}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        for service in (\u0027compute\u0027, \u0027identity\u0027, \u0027images\u0027, \u0027network\u0027, \u0027volume\u0027,"},{"line_number":59,"context_line":"                        \u0027object_storage\u0027, \u0027orchestration\u0027):"},{"line_number":60,"context_line":"            cfg \u003d getattr(self.config, service)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F93a4%3D","line":58,"in_reply_to":"AAAAUH%2F95sc%3D","updated":"2014-02-03 04:36:33.000000000","message":"\u0027object\u0027 -\u003e \u0027object_storage\u0027 change was already started in\nhttps://review.openstack.org/#/c/70624/","commit_id":"ee3c1f7b9f543aeeecd50f2afdc446d31815d08f"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"5d5e797e3e1a13f4f2e68946488ac002fcefd25c","unresolved":false,"context_lines":[{"line_number":39,"context_line":"# Configuration groups registered in config.py which also define how REST"},{"line_number":40,"context_line":"# clients are setup"},{"line_number":41,"context_line":"VALID_SERVICE_LIST \u003d [\u0027compute\u0027, \u0027image\u0027, \u0027volume\u0027, \u0027orchestration\u0027,"},{"line_number":42,"context_line":"                      \u0027network\u0027, \u0027identity\u0027, \u0027object_storage\u0027, \u0027dashboard\u0027]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class RestClient(object):"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2F1nw%3D","line":42,"updated":"2014-02-10 14:07:12.000000000","message":"This list is incomplete, it\u0027s missing the savanna and ironic service names. Additionally, I\u0027d argue that this cleanup should also be split out into a separate commit Since it isn\u0027t needed for adding the endpoint types option.","commit_id":"1fa8a56a30150230eb2fd917e124ddf6548af312"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"a2480bc2ecbb8d58cbb3dee57c8eb1a1dab1eb33","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        Returns the endpoint type for a specific service"},{"line_number":97,"context_line":"        \"\"\""},{"line_number":98,"context_line":"        # If the client requests specifically the admin URL, then be it"},{"line_number":99,"context_line":"        if self.endpoint_url.startswith(\"admin\"):"},{"line_number":100,"context_line":"            return self.endpoint_url"},{"line_number":101,"context_line":"        endpoint_type \u003d None"},{"line_number":102,"context_line":"        for cfgname in dir(CONF._config):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUX%2F%2Fzbk%3D","line":99,"updated":"2014-02-10 18:34:34.000000000","message":"I would prefer here to check for \"is not None\", and make sure that clients are setting the endpoint_url only where needed (e.g. admin).\n\nThis way a test could always override the configured endpoint_type in the client in use if needed by the test.","commit_id":"76e193ec15939dfc4c6d0da837a91c6c3a0f7fc6"}],"tempest/config.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1695a9341d7e01433cd76cfed282144f4981785a","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    cfg.StrOpt(\u0027endpoint_type\u0027,"},{"line_number":58,"context_line":"               default\u003d\u0027publicURL\u0027,"},{"line_number":59,"context_line":"               help\u003d\"The endpoint type to use. Also used as the other \""},{"line_number":60,"context_line":"                    \"services\u0027 endpoint type unless they are set explicitly.\"),"},{"line_number":61,"context_line":"    cfg.StrOpt(\u0027username\u0027,"},{"line_number":62,"context_line":"               default\u003d\u0027demo\u0027,"},{"line_number":63,"context_line":"               help\u003d\"Username to use for Nova API requests.\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F88dQ%3D","line":60,"updated":"2013-12-18 14:48:24.000000000","message":"s/services\u0027/services\n\nWhat do you think about indicate the different kind of endpoint it is possible to use ?\n\npublicURL, internalURL, adminURL? What happens if we use something else?","commit_id":"8af58f7c2999481ff703b72417e210315626253e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4da1944dcea106f42bab68612c116a459d0b5201","unresolved":false,"context_lines":[{"line_number":821,"context_line":"        self.compute_feature_enabled \u003d cfg.CONF[\u0027compute-feature-enabled\u0027]"},{"line_number":822,"context_line":"        self.identity \u003d cfg.CONF.identity"},{"line_number":823,"context_line":"        self.identity_feature_enabled \u003d cfg.CONF[\u0027identity-feature-enabled\u0027]"},{"line_number":824,"context_line":"        self.image \u003d cfg.CONF.image"},{"line_number":825,"context_line":"        self.image_feature_enabled \u003d cfg.CONF[\u0027image-feature-enabled\u0027]"},{"line_number":826,"context_line":"        self.network \u003d cfg.CONF.network"},{"line_number":827,"context_line":"        self.network_feature_enabled \u003d cfg.CONF[\u0027network-feature-enabled\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2F1KY%3D","line":824,"updated":"2014-02-10 14:51:00.000000000","message":"Let\u0027s split this out like:\n\nhttps://review.openstack.org/#/c/72367/\n\nThen I\u0027ll abandon mine.","commit_id":"1fa8a56a30150230eb2fd917e124ddf6548af312"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"a2480bc2ecbb8d58cbb3dee57c8eb1a1dab1eb33","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    cfg.StrOpt(\u0027endpoint_type\u0027,"},{"line_number":58,"context_line":"               default\u003d\u0027publicURL\u0027,"},{"line_number":59,"context_line":"               choices\u003d[\u0027public\u0027, \u0027admin\u0027, \u0027internal\u0027,"},{"line_number":60,"context_line":"                        \u0027publicURL\u0027, \u0027adminURL\u0027, \u0027internalURL\u0027],"},{"line_number":61,"context_line":"               help\u003d\"The endpoint type to use for the identity service.\"),"},{"line_number":62,"context_line":"    cfg.StrOpt(\u0027username\u0027,"},{"line_number":63,"context_line":"               default\u003d\u0027demo\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUX%2F%2FzR0%3D","line":60,"updated":"2014-02-10 18:34:34.000000000","message":"What about allowing only public, admin and internal, and letting KeystoneV2AuthProvider appending \"URL\" to the endpoint_type?","commit_id":"76e193ec15939dfc4c6d0da837a91c6c3a0f7fc6"}],"tempest/test.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"5d5e797e3e1a13f4f2e68946488ac002fcefd25c","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from tempest import clients"},{"line_number":30,"context_line":"from tempest.common import generate_json"},{"line_number":31,"context_line":"from tempest.common import isolated_creds"},{"line_number":32,"context_line":"from tempest.common.rest_client import VALID_SERVICE_LIST"},{"line_number":33,"context_line":"from tempest import config"},{"line_number":34,"context_line":"from tempest import exceptions"},{"line_number":35,"context_line":"from tempest.openstack.common import log as logging"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2F1kI%3D","line":32,"updated":"2014-02-10 14:07:12.000000000","message":"Only import modules, see:\n\nhttp://docs.openstack.org/developer/hacking/#imports\n\nAlso this is an unrelated change please split it out into a separate commit.","commit_id":"1fa8a56a30150230eb2fd917e124ddf6548af312"}]}
