)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"12d66fa3b634afb933fee616dbf7b7177d1f44e7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add nova_proxy_admin_tenant_id"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This can correct the endpoint url of nova defined in conf files."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"DocImpact"},{"line_number":12,"context_line":"Change-Id: I1c976168db2752f394ff455057d03b1ebba7c984"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"5a890539_63ab8675","line":9,"updated":"2014-11-13 19:14:17.000000000","message":"We\u0027ve recently been singled out in the mailing lists for having bad commit messages, so we need to adhere to https://wiki.openstack.org/wiki/GitCommitMessages a little bit better.  From my point of view, I had to read the bug report to understand what this was trying to fix.  The commit message should be standalone.","commit_id":"50472df1011be75bcdf901cd58059750505ddc18"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"4ccf62fb9abf10873c0a086277602c874c5b85fe","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add nova_proxy_admin_tenant_id to make nova_compute_url effective"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When taskmanager.Manager sets up a admin_context to use"},{"line_number":10,"context_line":"for periodic tasks, it creates the client correctly but then"},{"line_number":11,"context_line":"when it overrides the management_url it sets it to"},{"line_number":12,"context_line":"\u003cnova_compute_url\u003e/\u003cnova_proxy_admin_tenant_name\u003e."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"5a890539_7b1a187e","line":9,"updated":"2014-11-16 01:39:07.000000000","message":"I believe you should emphasize that taskmanager.Manager mistakenly populates context.tenant with admin\u0027s tenant name instead of admin\u0027s tenant id which results to ....","commit_id":"4b4c623542414cba4fa4b3172e53c4fdc83f83dd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4644c22a3d0a4713cf250a19ab6dc825be284e65","unresolved":false,"context_lines":[{"line_number":16,"context_line":"This fix can correct the nova url by replacing tenant_name"},{"line_number":17,"context_line":"to tenant_id."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"DocImpact"},{"line_number":20,"context_line":"Change-Id: I1c976168db2752f394ff455057d03b1ebba7c984"},{"line_number":21,"context_line":"Closes-Bug: #1289101"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"5a890539_f86e0e2e","line":19,"updated":"2014-11-15 18:59:11.000000000","message":"please write description of what actually caused documentation impact.","commit_id":"4b4c623542414cba4fa4b3172e53c4fdc83f83dd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"71205fecd015cd2cd1734148e1114de4226c5a6f","unresolved":false,"context_lines":[{"line_number":16,"context_line":"This fix can correct the nova url by replacing tenant_name"},{"line_number":17,"context_line":"to tenant_id."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"DocImpact"},{"line_number":20,"context_line":"Change-Id: I1c976168db2752f394ff455057d03b1ebba7c984"},{"line_number":21,"context_line":"Closes-Bug: #1289101"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"5a890539_9867ca4c","line":19,"in_reply_to":"5a890539_f86e0e2e","updated":"2014-11-15 19:00:55.000000000","message":"For example, you have lines #16-18, you might use them with small changes, such as:\n\nDocImpact: deprecating option \u0027..._tenant_name\u0027 to \u0027..._tenant_id\u0027","commit_id":"4b4c623542414cba4fa4b3172e53c4fdc83f83dd"}],"etc/trove/trove.conf.test":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"df8c2feb704130169d1fe4382f32154ee3987457","unresolved":false,"context_lines":[{"line_number":69,"context_line":"# basically acting like the client via that proxy token."},{"line_number":70,"context_line":"nova_proxy_admin_user \u003d admin"},{"line_number":71,"context_line":"nova_proxy_admin_pass \u003d 3de4922d8b6ac5a1aad9"},{"line_number":72,"context_line":"nova_proxy_admin_tenant_id \u003d "},{"line_number":73,"context_line":"trove_auth_url \u003d http://0.0.0.0:5000/v2.0"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"nova_region_name \u003d RegionOne"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"baada198_5cd6fbf2","line":72,"updated":"2014-08-04 10:50:52.000000000","message":"please remove space after \u003d","commit_id":"84c6e8db29b4b4c398732d0d0d69b19522d123da"}],"trove/common/cfg.py":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"12d66fa3b634afb933fee616dbf7b7177d1f44e7","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    cfg.StrOpt(\u0027nova_proxy_admin_tenant_name\u0027, default\u003d\u0027\u0027,"},{"line_number":321,"context_line":"               help\u003d\"Admin tenant name used to connect to Nova.\", secret\u003dTrue),"},{"line_number":322,"context_line":"    cfg.StrOpt(\u0027nova_proxy_admin_tenant_id\u0027, default\u003d\u0027\u0027,"},{"line_number":323,"context_line":"               help\u003d\"Admin tenant ID used to connect to nova.\", secret\u003dTrue),"},{"line_number":324,"context_line":"    cfg.StrOpt(\u0027network_label_regex\u0027, default\u003d\u0027^private$\u0027,"},{"line_number":325,"context_line":"               help\u003d\u0027Regular expression to match Trove network labels.\u0027),"},{"line_number":326,"context_line":"    cfg.StrOpt(\u0027ip_regex\u0027, default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_237ede19","line":323,"updated":"2014-11-13 19:14:17.000000000","message":"Having both a tenant name and tenant ID defined is just asking for trouble IMO.  What if they\u0027re mismatched?  We shouldn\u0027t need both.  Maybe it would be better to look up the tenant ID and cache it for when it\u0027s needed.","commit_id":"50472df1011be75bcdf901cd58059750505ddc18"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e3e32dc45a6a5af9921d581b2678d0bf7c10a938","unresolved":false,"context_lines":[{"line_number":330,"context_line":"               help\u003d\"Admin username used to connect to Nova.\", secret\u003dTrue),"},{"line_number":331,"context_line":"    cfg.StrOpt(\u0027nova_proxy_admin_pass\u0027, default\u003d\u0027\u0027,"},{"line_number":332,"context_line":"               help\u003d\"Admin password used to connect to Nova.\", secret\u003dTrue),"},{"line_number":333,"context_line":"    cfg.StrOpt(\u0027nova_proxy_admin_tenant_id\u0027, default\u003d\u0027\u0027,"},{"line_number":334,"context_line":"               help\u003d\"Admin tenant ID used to connect to Nova.\", secret\u003dTrue),"},{"line_number":335,"context_line":"    cfg.StrOpt(\u0027network_label_regex\u0027, default\u003d\u0027^private$\u0027,"},{"line_number":336,"context_line":"               help\u003d\u0027Regular expression to match Trove network labels.\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_b881e6c4","line":333,"updated":"2014-11-15 18:58:30.000000000","message":"sorry, but it\u0027s not correct way to rename options, you have to add \u0027 deprecated_name\u003d\u0027nova_proxy_admin_tenant_id\u0027 \u0027 to the definition of this option.","commit_id":"4b4c623542414cba4fa4b3172e53c4fdc83f83dd"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"25abbea1a4dfaf1ec1d7a54743a2f364967682fc","unresolved":false,"context_lines":[{"line_number":330,"context_line":"               help\u003d\"Admin username used to connect to Nova.\", secret\u003dTrue),"},{"line_number":331,"context_line":"    cfg.StrOpt(\u0027nova_proxy_admin_pass\u0027, default\u003d\u0027\u0027,"},{"line_number":332,"context_line":"               help\u003d\"Admin password used to connect to Nova.\", secret\u003dTrue),"},{"line_number":333,"context_line":"    cfg.StrOpt(\u0027nova_proxy_admin_tenant_id\u0027, default\u003d\u0027\u0027,"},{"line_number":334,"context_line":"               help\u003d\"Admin tenant ID used to connect to Nova.\", secret\u003dTrue),"},{"line_number":335,"context_line":"    cfg.StrOpt(\u0027network_label_regex\u0027, default\u003d\u0027^private$\u0027,"},{"line_number":336,"context_line":"               help\u003d\u0027Regular expression to match Trove network labels.\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_e7c5878e","line":333,"in_reply_to":"5a890539_b881e6c4","updated":"2014-11-16 15:04:38.000000000","message":"oops. I\u0027ll fix it.","commit_id":"4b4c623542414cba4fa4b3172e53c4fdc83f83dd"}],"trove/common/exception.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c666143c5cfed6c2f589234709f05c2d610271be","unresolved":false,"context_lines":[{"line_number":68,"context_line":"class ConfNotFound(TroveError):"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    message \u003d _(\"Configuration %(conf)s cannot be found.\")"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"class CapabilityNotFound(NotFound):"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_aeda9ee5","line":71,"updated":"2014-12-11 14:13:56.000000000","message":"this one is not used anywhere","commit_id":"60877b0923b78b9cdeb30140944b1ad68bb67e4d"}],"trove/common/remote.py":[{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"480bcf045e61737f08f530b7408a78b1ecb54ee0","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    client \u003d Client(username\u003dcontext.user,"},{"line_number":103,"context_line":"                    api_key\u003dcontext.auth_token,"},{"line_number":104,"context_line":"                    project_id\u003dCONF.nova_proxy_admin_tenant_name,"},{"line_number":105,"context_line":"                    auth_url\u003dPROXY_AUTH_URL)"},{"line_number":106,"context_line":"    client.client.auth_token \u003d context.auth_token"},{"line_number":107,"context_line":"    client.client.management_url \u003d url"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa98f980_39707a0a","line":104,"updated":"2014-09-05 06:36:54.000000000","message":"also needed to add the bypass_url\u003durl to this to make it work.\n\nWithout it when novaclient creates the session (with the correct url) it gets a 401 asking it to auth (expected)\nThen it goes to keystone to get a token.\nThen however it goes to the url in the service catalog.\n\nSetting bypass_url fixes this.","commit_id":"263a79bfcb3399c3c4d264777d4a50c1c959f1d9"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"b1e37eb4653670c3a8319e5a5ba5558bd572e39c","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    client \u003d Client(username\u003dcontext.user,"},{"line_number":103,"context_line":"                    api_key\u003dcontext.auth_token,"},{"line_number":104,"context_line":"                    project_id\u003dCONF.nova_proxy_admin_tenant_name,"},{"line_number":105,"context_line":"                    bypass_url\u003durl,"},{"line_number":106,"context_line":"                    auth_url\u003dPROXY_AUTH_URL)"},{"line_number":107,"context_line":"    client.client.auth_token \u003d context.auth_token"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_6f544e21","line":104,"updated":"2014-11-13 17:04:23.000000000","message":"This looks iffy to me -- why are we hardcoding this to be the admin_tenant_name? The context passed in can be a user\u0027s context. In that case, shouldn\u0027t we use the user\u0027s tenant instead?","commit_id":"50472df1011be75bcdf901cd58059750505ddc18"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"12d66fa3b634afb933fee616dbf7b7177d1f44e7","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    client \u003d Client(username\u003dcontext.user,"},{"line_number":103,"context_line":"                    api_key\u003dcontext.auth_token,"},{"line_number":104,"context_line":"                    project_id\u003dCONF.nova_proxy_admin_tenant_name,"},{"line_number":105,"context_line":"                    bypass_url\u003durl,"},{"line_number":106,"context_line":"                    auth_url\u003dPROXY_AUTH_URL)"},{"line_number":107,"context_line":"    client.client.auth_token \u003d context.auth_token"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a890539_c30b5a8c","line":104,"in_reply_to":"5a890539_6f544e21","updated":"2014-11-13 19:14:17.000000000","message":"I also believe it\u0027s being switched from an ID to a name - isn\u0027t that part of the original problem?","commit_id":"50472df1011be75bcdf901cd58059750505ddc18"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"4ccf62fb9abf10873c0a086277602c874c5b85fe","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                    api_key\u003dcontext.auth_token,"},{"line_number":105,"context_line":"                    project_id\u003dcontext.tenant,"},{"line_number":106,"context_line":"                    bypass_url\u003durl,"},{"line_number":107,"context_line":"                    auth_url\u003dPROXY_AUTH_URL)"},{"line_number":108,"context_line":"    client.client.auth_token \u003d context.auth_token"},{"line_number":109,"context_line":"    client.client.management_url \u003d url"},{"line_number":110,"context_line":"    return client"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_5b7c7cb5","line":107,"updated":"2014-11-16 01:39:07.000000000","message":"Please, avoid unrelated changes. \n\n1. bypass_url is redundant, Nova client uses it to create a management_url  but we already provide a management_url with the same value in line 109.\n\n2. passing username and api_key as keyword arguments probably improve readability but definitely not related to that patch.\n\nI think you can safely revert all changes in that file.","commit_id":"4b4c623542414cba4fa4b3172e53c4fdc83f83dd"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"25abbea1a4dfaf1ec1d7a54743a2f364967682fc","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                    api_key\u003dcontext.auth_token,"},{"line_number":105,"context_line":"                    project_id\u003dcontext.tenant,"},{"line_number":106,"context_line":"                    bypass_url\u003durl,"},{"line_number":107,"context_line":"                    auth_url\u003dPROXY_AUTH_URL)"},{"line_number":108,"context_line":"    client.client.auth_token \u003d context.auth_token"},{"line_number":109,"context_line":"    client.client.management_url \u003d url"},{"line_number":110,"context_line":"    return client"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a890539_c7cdebb8","line":107,"in_reply_to":"5a890539_5b7c7cb5","updated":"2014-11-16 15:04:38.000000000","message":"Sure. Thanks.","commit_id":"4b4c623542414cba4fa4b3172e53c4fdc83f83dd"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c666143c5cfed6c2f589234709f05c2d610271be","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    client \u003d Client(context.user, context.auth_token,"},{"line_number":104,"context_line":"                    bypass_url\u003durl, project_id\u003dcontext.tenant,"},{"line_number":105,"context_line":"                    auth_url\u003dPROXY_AUTH_URL)"},{"line_number":106,"context_line":"    client.client.auth_token \u003d context.auth_token"},{"line_number":107,"context_line":"    client.client.management_url \u003d url"},{"line_number":108,"context_line":"    return client"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_4ee77aac","line":105,"updated":"2014-12-11 14:13:56.000000000","message":"unrelated change?","commit_id":"60877b0923b78b9cdeb30140944b1ad68bb67e4d"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"610330f4c47b9152fe7949dcb63f0e9279cc78ed","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    client \u003d Client(context.user, context.auth_token,"},{"line_number":104,"context_line":"                    bypass_url\u003durl, project_id\u003dcontext.tenant,"},{"line_number":105,"context_line":"                    auth_url\u003dPROXY_AUTH_URL)"},{"line_number":106,"context_line":"    client.client.auth_token \u003d context.auth_token"},{"line_number":107,"context_line":"    client.client.management_url \u003d url"},{"line_number":108,"context_line":"    return client"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_c66151aa","line":105,"in_reply_to":"3a961159_4ee77aac","updated":"2014-12-13 06:47:33.000000000","message":"bypass_url is necessary to make it work","commit_id":"60877b0923b78b9cdeb30140944b1ad68bb67e4d"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"9ce7b94236d9da37cd99e9ee3754506c5de3b3b3","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    if CONF.nova_compute_url:"},{"line_number":95,"context_line":"        url \u003d \u0027%(nova_url)s%(tenant)s\u0027 % {"},{"line_number":96,"context_line":"            \u0027nova_url\u0027: normalize_url(CONF.nova_compute_url),"},{"line_number":97,"context_line":"            \u0027tenant\u0027: context.tenant}"},{"line_number":98,"context_line":"    else:"},{"line_number":99,"context_line":"        url \u003d get_endpoint(context.service_catalog,"},{"line_number":100,"context_line":"                           service_type\u003dCONF.nova_compute_service_type,"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa81d914_dde29d9e","line":97,"updated":"2015-01-28 17:22:53.000000000","message":"Now when content.tenant represents tenant id instead of tenant name this url works, but client in the line 104 is broken, because:\n\nproject_id\u003dcontext.tenant which is tenant id now, but according to the \"interesting\" comment in the nova client (v1_1/client.py):\n\n^^^^\n# NOTE(cyeoh): In the novaclient context (unlike Nova) the\n        # project_id is not the same as the tenant_id. Here project_id\n        # is a name (what the Nova API often refers to as a project or\n        # tenant name) and tenant_id is a UUID (what the Nova API\n        # often refers to as a project_id or tenant_id).\n^^^\n\nAnyway, they expect project_id to actually be a tenant name so this patch breaks it.\nI spent some time to check it and it doesn\u0027t work for me.","commit_id":"c502447399436f09248238a1572adfed4f09733f"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"b1a915d8c6ba881c1eec4d5ac5a917bb65c09756","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    client \u003d Client(context.user, context.auth_token,"},{"line_number":105,"context_line":"                    bypass_url\u003durl, project_id\u003dcontext.tenant,"},{"line_number":106,"context_line":"                    auth_url\u003dPROXY_AUTH_URL)"},{"line_number":107,"context_line":"    client.client.auth_token \u003d context.auth_token"},{"line_number":108,"context_line":"    client.client.management_url \u003d url"},{"line_number":109,"context_line":"    return client"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_8d98336b","line":106,"updated":"2014-12-15 10:18:45.000000000","message":"Sorry, this method looks weird to me:\n\n1. bypass_url is used to send requests to the same Nova instance (instance stickiness) what is probably make sense if we created url with predefined  \"CONF.nova_compute_url\" (\u0027if\u0027 block line 94), but in case we retrieve the endpoint from the catalog (\"else\" block line 98) why would we prefer one Nova instance over another?\n\n2. This bug is about replacing admin_tenant_name with admin_tenant_id, right?\nSo I wonder why we have 2 methods? This one is nova_client() another one is\ncreate_admin_nova_client() - line 112, if we have a problem with admin, maybe we should just mark context with \"is_admin\" and use create_admin_nova_client() instead of this one?\n\nI don\u0027t actually know if 2 works, but it definitely makes more sense than trying to send an admin request using simple \"nova_client\".","commit_id":"c502447399436f09248238a1572adfed4f09733f"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"fafe8dfdc67728114dcbb37787a7cd9dbb0a5c30","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    client \u003d Client(context.user, context.auth_token,"},{"line_number":105,"context_line":"                    bypass_url\u003durl, project_id\u003dcontext.tenant,"},{"line_number":106,"context_line":"                    auth_url\u003dPROXY_AUTH_URL)"},{"line_number":107,"context_line":"    client.client.auth_token \u003d context.auth_token"},{"line_number":108,"context_line":"    client.client.management_url \u003d url"},{"line_number":109,"context_line":"    return client"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_473b7f9b","line":106,"in_reply_to":"3a961159_3050722b","updated":"2015-01-09 07:18:54.000000000","message":"@Sam,\n\nWe misunderstood each other. But just a side remark: sometimes the statement like \"it works\" is annoying and just not good enough! Why and how it works are 2 very important questions.\n\nThe major case this patch is trying to resolve is: LP##1289101 which talks about periodic tasks and using admin id instead of admin name when creating admin context, right? I think we don\u0027t understand the case and jump to resolve the most obvious part - replacing id with name (I didn\u0027t find other projects configure admin id, of course I didn\u0027t check all projects) and adding a bypass to run periodic tasks on the same Nova instance. \n\nThe problem is that this nova_client method is called from different places including the place where we actually decide to launch a new Trove guest VM.\n\n1. Does it mean that after that change we\u0027ll launch all our VMs on the same Nova compute node, even if I configured a region which has a multiple available VMs?\n\n2. Back to periodic tasks. Why this is a mandatory that all periodic tasks will run on the same VM? I am not sure I understand the nature of these periodic tasks, it would be nice to understand and to be more specific about what they actually do.\n\n3. We have another method: create_admin_nova_client(context) line 112, why? Maybe we should use/fix this method to create nova client for periodic tasks and actually for everything that must run in admin context. \n\n4. Replacing admin id with admin name is not trivial. Think about it, we deploy a cloud service, now we create a dependency between deploying different services and we have to know admin_id before deploying Trove. I\u0027ll give it +1 only if I\u0027ll understand that I can\u0027t do any better.","commit_id":"c502447399436f09248238a1572adfed4f09733f"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"9e165a30df736716772fc11961ebff2632e58065","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    client \u003d Client(context.user, context.auth_token,"},{"line_number":105,"context_line":"                    bypass_url\u003durl, project_id\u003dcontext.tenant,"},{"line_number":106,"context_line":"                    auth_url\u003dPROXY_AUTH_URL)"},{"line_number":107,"context_line":"    client.client.auth_token \u003d context.auth_token"},{"line_number":108,"context_line":"    client.client.management_url \u003d url"},{"line_number":109,"context_line":"    return client"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_3050722b","line":106,"in_reply_to":"3a961159_8d98336b","updated":"2015-01-08 23:04:53.000000000","message":"This code works and also gives flexibility to allow operators to override the nova endpoint that is used.\n\n(else block 98) that is there in case you have for instance multiple regions or multiple endpoints within the same region so you need to be able to specify which one to use.","commit_id":"c502447399436f09248238a1572adfed4f09733f"}],"trove/taskmanager/manager.py":[{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"24c8d4fae9a875ff0dc793950a53c08fcdfbd9a9","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.admin_context \u003d TroveContext("},{"line_number":38,"context_line":"            user\u003dCONF.nova_proxy_admin_user,"},{"line_number":39,"context_line":"            auth_token\u003dCONF.nova_proxy_admin_pass,"},{"line_number":40,"context_line":"            tenant\u003dCONF.nova_proxy_admin_tenant_id)"},{"line_number":41,"context_line":"        if CONF.exists_notification_transformer:"},{"line_number":42,"context_line":"            self.exists_transformer \u003d importutils.import_object("},{"line_number":43,"context_line":"                CONF.exists_notification_transformer,"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_c0264aba","line":40,"updated":"2014-09-30 07:44:50.000000000","message":"You removed the only usage of nova_proxy_admin_tenant_name. \nDo we still need this parameter? If not - please, remove it from everywhere.","commit_id":"50472df1011be75bcdf901cd58059750505ddc18"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"3b09ab7369295adad93da2ba6ec81c5dc210a5aa","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        self.admin_context \u003d TroveContext("},{"line_number":38,"context_line":"            user\u003dCONF.nova_proxy_admin_user,"},{"line_number":39,"context_line":"            auth_token\u003dCONF.nova_proxy_admin_pass,"},{"line_number":40,"context_line":"            tenant\u003dCONF.nova_proxy_admin_tenant_id)"},{"line_number":41,"context_line":"        if CONF.exists_notification_transformer:"},{"line_number":42,"context_line":"            self.exists_transformer \u003d importutils.import_object("},{"line_number":43,"context_line":"                CONF.exists_notification_transformer,"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_5454c353","line":40,"in_reply_to":"baa201ad_c0264aba","updated":"2014-10-01 03:09:05.000000000","message":"We still use it in trove/common/remote.py +104.","commit_id":"50472df1011be75bcdf901cd58059750505ddc18"}]}
