)]}'
{"tools/tempest_auto_config.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"db4825147376b820b872211ea08057ce3f59027e","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# Import Openstack exceptions"},{"line_number":27,"context_line":"import glanceclient.exc as GlanceException"},{"line_number":28,"context_line":"import keystoneclient.exceptions as KeystoneException"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"DEFAULT_CONFIG_DIR \u003d \"%s/etc\" % os.path.abspath(os.path.pardir)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2Fu6E%3D","line":28,"updated":"2013-09-20 11:58:05.000000000","message":"typically only modules have CamelCase variables, so it\u0027s actually kind of confusing to import namespaces that way. Can you down case them all so it would be. glanceexception or glance_exception instead of GlanceException (for instance).","commit_id":"75310ae57cfbb9eb25c99e914f8fd269db530cc2"},{"author":{"_account_id":6578,"name":"Tal Kammer","email":"tkammer@redhat.com","username":"tkammer"},"change_message_id":"202a75ccc059d101c710a95bc2e877e4e2796f94","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# Import Openstack exceptions"},{"line_number":27,"context_line":"import glanceclient.exc as GlanceException"},{"line_number":28,"context_line":"import keystoneclient.exceptions as KeystoneException"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"DEFAULT_CONFIG_DIR \u003d \"%s/etc\" % os.path.abspath(os.path.pardir)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2FrW4%3D","line":28,"in_reply_to":"AAAAS3%2F%2FrnM%3D","updated":"2013-09-22 13:14:46.000000000","message":"My bad, I misunderstood the meaning.\nWill be fixed.","commit_id":"75310ae57cfbb9eb25c99e914f8fd269db530cc2"},{"author":{"_account_id":6578,"name":"Tal Kammer","email":"tkammer@redhat.com","username":"tkammer"},"change_message_id":"cc16228df3c8f43500884474092b9673ff2d2d50","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# Import Openstack exceptions"},{"line_number":27,"context_line":"import glanceclient.exc as GlanceException"},{"line_number":28,"context_line":"import keystoneclient.exceptions as KeystoneException"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"DEFAULT_CONFIG_DIR \u003d \"%s/etc\" % os.path.abspath(os.path.pardir)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2FrnM%3D","line":28,"in_reply_to":"AAAAS3%2F%2Fu6E%3D","updated":"2013-09-22 07:40:57.000000000","message":"I\u0027ve been working with the official python styling guide:\nhttp://www.python.org/dev/peps/pep-0008/#class-names\n\nSo I\u0027m not sure I fully agree with you on this.\nBut if everyone here agree on changing this, I will, in order to be consistent.","commit_id":"75310ae57cfbb9eb25c99e914f8fd269db530cc2"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"db4825147376b820b872211ea08057ce3f59027e","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"# Image references"},{"line_number":49,"context_line":"IMAGE_ID \u003d os.environ.get(\u0027IMAGE_ID\u0027)"},{"line_number":50,"context_line":"IMAGE_ID_ALT \u003d os.environ.get(\u0027IMAGE_ID_ALT\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"class ClientManager(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2Fu5k%3D","line":50,"updated":"2013-09-20 11:58:05.000000000","message":"instead of just taking these from the env, if we are adding a generic config tool, we should take them on the command line with argparse as well. That will make it easier to make this part of someone\u0027s workflow. oslo config could be an option here.","commit_id":"75310ae57cfbb9eb25c99e914f8fd269db530cc2"},{"author":{"_account_id":6578,"name":"Tal Kammer","email":"tkammer@redhat.com","username":"tkammer"},"change_message_id":"cc16228df3c8f43500884474092b9673ff2d2d50","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"# Image references"},{"line_number":49,"context_line":"IMAGE_ID \u003d os.environ.get(\u0027IMAGE_ID\u0027)"},{"line_number":50,"context_line":"IMAGE_ID_ALT \u003d os.environ.get(\u0027IMAGE_ID_ALT\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"class ClientManager(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2FrnE%3D","line":50,"in_reply_to":"AAAAS3%2F%2Fu5k%3D","updated":"2013-09-22 07:40:57.000000000","message":"You are right, I haven\u0027t implemented this yet since I wanted to get a first impression of everyone on this prior to me continuing with my work (didn\u0027t want to build something more elaborate till I got a first approval on the concept)\n\nIf this script is acceptable in essence by everyone, I will work on a more extensive version with argparse.\nThough for images specifically, I do want to check the env variables since they are the defaults that Openstack uses, I will just add the option to use them only if no args were supplied.","commit_id":"75310ae57cfbb9eb25c99e914f8fd269db530cc2"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"db4825147376b820b872211ea08057ce3f59027e","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        return self.image_client"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def get_network_client(self, **kwargs):"},{"line_number":78,"context_line":"        if not self.network_client:"},{"line_number":79,"context_line":"            self.network_client \u003d NeutronClient.Client(**kwargs)"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2Fu54%3D","line":77,"updated":"2013-09-20 11:58:05.000000000","message":"We shouldn\u0027t do these other clients until we actually have a use for them.","commit_id":"75310ae57cfbb9eb25c99e914f8fd269db530cc2"},{"author":{"_account_id":6578,"name":"Tal Kammer","email":"tkammer@redhat.com","username":"tkammer"},"change_message_id":"cc16228df3c8f43500884474092b9673ff2d2d50","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        return self.image_client"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def get_network_client(self, **kwargs):"},{"line_number":78,"context_line":"        if not self.network_client:"},{"line_number":79,"context_line":"            self.network_client \u003d NeutronClient.Client(**kwargs)"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2Frm4%3D","line":77,"in_reply_to":"AAAAS3%2F%2Fu54%3D","updated":"2013-09-22 07:40:57.000000000","message":"Agreed, done.\nI just went ahead of myself with implementing future use, will remove it in next commit","commit_id":"75310ae57cfbb9eb25c99e914f8fd269db530cc2"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"db4825147376b820b872211ea08057ce3f59027e","unresolved":false,"context_lines":[{"line_number":268,"context_line":"    return exist"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"def create_images(image_client, tempest_config, compute_section):"},{"line_number":272,"context_line":"    \"\"\""},{"line_number":273,"context_line":"    Create the necessary images for tempest if not already present"},{"line_number":274,"context_line":"    :param image_client: openstack image python client"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2Fu5o%3D","line":271,"updated":"2013-09-20 11:58:05.000000000","message":"I\u0027d rather not add dead code to this, so instead bring in create_images later when we actually have a need for it.","commit_id":"75310ae57cfbb9eb25c99e914f8fd269db530cc2"},{"author":{"_account_id":6578,"name":"Tal Kammer","email":"tkammer@redhat.com","username":"tkammer"},"change_message_id":"cc16228df3c8f43500884474092b9673ff2d2d50","unresolved":false,"context_lines":[{"line_number":268,"context_line":"    return exist"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"def create_images(image_client, tempest_config, compute_section):"},{"line_number":272,"context_line":"    \"\"\""},{"line_number":273,"context_line":"    Create the necessary images for tempest if not already present"},{"line_number":274,"context_line":"    :param image_client: openstack image python client"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2Frm0%3D","line":271,"in_reply_to":"AAAAS3%2F%2Fu5o%3D","updated":"2013-09-22 07:40:57.000000000","message":"Agreed, done.","commit_id":"75310ae57cfbb9eb25c99e914f8fd269db530cc2"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"516521e393070c34ae365e0e7d96cb1810154fdc","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    return config_sample"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"def update_config_admin_credentials(tempest_config, config_section):"},{"line_number":93,"context_line":"    \"\"\""},{"line_number":94,"context_line":"    Updates the tempest config with the admin credentials"},{"line_number":95,"context_line":"    :param tempest_config: an object representing the tempest config file"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FTYc%3D","line":92,"updated":"2013-09-30 16:09:24.000000000","message":"maybe passing the config_section is not needed here, also I\u0027d make the parameters naming /documentation consistent with the other functions (like config instead of tempest_config)","commit_id":"482b19773b00fc25c176084abec26debe2d4d2a9"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"516521e393070c34ae365e0e7d96cb1810154fdc","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        config.set(section, option, value)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"def get_identity_client_kwargs(config, section_name):"},{"line_number":128,"context_line":"    \"\"\""},{"line_number":129,"context_line":"    Get the required arguments for the identity python client"},{"line_number":130,"context_line":"    :param config: the tempest configuration file"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FTYE%3D","line":127,"updated":"2013-09-30 16:09:24.000000000","message":"aren\u0027t these the same you get from env in update_config_admin_credentials ? you could probaby drop this and put the env parsing code in a separate method to reuse it","commit_id":"482b19773b00fc25c176084abec26debe2d4d2a9"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"516521e393070c34ae365e0e7d96cb1810154fdc","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        pass"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"def create_users_and_tenants(identity_client,"},{"line_number":187,"context_line":"                             tempest_config,"},{"line_number":188,"context_line":"                             identity_section):"},{"line_number":189,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FTWw%3D","line":186,"updated":"2013-09-30 16:09:24.000000000","message":"would be nice if the parameters naming choice was consistent across the methods","commit_id":"482b19773b00fc25c176084abec26debe2d4d2a9"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"516521e393070c34ae365e0e7d96cb1810154fdc","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                            alt_tenant_name)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"def get_image_client_kwargs(identity_client, config, section_name):"},{"line_number":211,"context_line":"    \"\"\""},{"line_number":212,"context_line":"    Get the required arguments for the image python client"},{"line_number":213,"context_line":"    :param identity_client: openstack identity python client"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAS3%2F%2FTYw%3D","line":210,"updated":"2013-09-30 16:09:24.000000000","message":"this isn\u0027t needed or you have to put in here also the code which uses it","commit_id":"482b19773b00fc25c176084abec26debe2d4d2a9"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"a1cc7f01623fa9cc6533c7c4bdb110faa4016380","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# Config"},{"line_number":19,"context_line":"import ConfigParser"},{"line_number":20,"context_line":"import os"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAS3%2F%2FG6s%3D","line":18,"updated":"2013-10-04 08:53:57.000000000","message":"Are these comments are really needed? I think you could skip them.","commit_id":"c6b9788296f87a88655778b5d604316f3df11199"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"a1cc7f01623fa9cc6533c7c4bdb110faa4016380","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        tenant \u003d identity_client.tenants.create(tenant_name,"},{"line_number":163,"context_line":"                                                tenant_description)"},{"line_number":164,"context_line":"        tenant_id \u003d tenant.id"},{"line_number":165,"context_line":"    except keystone_exception.Conflict:"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        # if already exist, use existing tenant"},{"line_number":168,"context_line":"        tenant_list \u003d identity_client.tenants.list()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAS3%2F%2FG7U%3D","line":165,"updated":"2013-10-04 08:53:57.000000000","message":"Could we add some logging here? Just to know what\u0027s going on there.","commit_id":"c6b9788296f87a88655778b5d604316f3df11199"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"a1cc7f01623fa9cc6533c7c4bdb110faa4016380","unresolved":false,"context_lines":[{"line_number":177,"context_line":"                                     password\u003dpassword,"},{"line_number":178,"context_line":"                                     email\u003demail,"},{"line_number":179,"context_line":"                                     tenant_id\u003dtenant_id)"},{"line_number":180,"context_line":"    except keystone_exception.Conflict:"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        # if already exist, use existing user"},{"line_number":183,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAS3%2F%2FG7Q%3D","line":180,"updated":"2013-10-04 08:53:57.000000000","message":"Same here. some logging would be useful.","commit_id":"c6b9788296f87a88655778b5d604316f3df11199"}],"tools/tempest_auto_config.sh":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"2fc9ee2c56fb577a0a2cd1d71b5936dc634701c4","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"# Errors strings"},{"line_number":20,"context_line":"E_MISSING_CREDENTIALS\u003d\"Credentials are missing.\""},{"line_number":21,"context_line":"E_NO_ACTIVE_IMAGES\u003d\"No active images found.\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Optional parameters"},{"line_number":24,"context_line":"FORCE_NEW_CONFIG\u003dfalse"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F454%3D","line":21,"updated":"2013-08-20 16:21:31.000000000","message":"Messages used only once should have definition.","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":6578,"name":"Tal Kammer","email":"tkammer@redhat.com","username":"tkammer"},"change_message_id":"12dc23ad23f2cb59cf2ea1f4d1a6631dcaef7058","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"# Errors strings"},{"line_number":20,"context_line":"E_MISSING_CREDENTIALS\u003d\"Credentials are missing.\""},{"line_number":21,"context_line":"E_NO_ACTIVE_IMAGES\u003d\"No active images found.\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Optional parameters"},{"line_number":24,"context_line":"FORCE_NEW_CONFIG\u003dfalse"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F2Qs%3D","line":21,"in_reply_to":"AAAARn%2F%2F2w8%3D","updated":"2013-08-21 09:30:27.000000000","message":"It\u0027s less about the amount of times it shows in the code rather than a centralized place to hold all messages in order to quickly and easily change the content of the message without running through the code.\nIs there any styling guide you can refer me to?","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"30c0d963f8bf28f98253e55d3b7e1e24956624be","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"# Errors strings"},{"line_number":20,"context_line":"E_MISSING_CREDENTIALS\u003d\"Credentials are missing.\""},{"line_number":21,"context_line":"E_NO_ACTIVE_IMAGES\u003d\"No active images found.\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Optional parameters"},{"line_number":24,"context_line":"FORCE_NEW_CONFIG\u003dfalse"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F2w8%3D","line":21,"in_reply_to":"AAAARn%2F%2F454%3D","updated":"2013-08-21 04:58:55.000000000","message":"Messages which used only once, does not really needed to be predefined.","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"2fc9ee2c56fb577a0a2cd1d71b5936dc634701c4","unresolved":false,"context_lines":[{"line_number":24,"context_line":"FORCE_NEW_CONFIG\u003dfalse"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# Tempest vars"},{"line_number":27,"context_line":"TEMPEST_ROOT\u003d\"/root/tempest\""},{"line_number":28,"context_line":"TEMPEST_CONFIG\u003d\"etc/tempest.conf\""},{"line_number":29,"context_line":"TEMPEST_CONFIG_SAMPLE\u003d\"etc/tempest.conf.sample\""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F46M%3D","line":27,"updated":"2013-08-20 16:21:31.000000000","message":"You should by default it is running in the tempest root directory.\n$PWD or `pwd` is better starting arg.","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":6578,"name":"Tal Kammer","email":"tkammer@redhat.com","username":"tkammer"},"change_message_id":"12dc23ad23f2cb59cf2ea1f4d1a6631dcaef7058","unresolved":false,"context_lines":[{"line_number":24,"context_line":"FORCE_NEW_CONFIG\u003dfalse"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# Tempest vars"},{"line_number":27,"context_line":"TEMPEST_ROOT\u003d\"/root/tempest\""},{"line_number":28,"context_line":"TEMPEST_CONFIG\u003d\"etc/tempest.conf\""},{"line_number":29,"context_line":"TEMPEST_CONFIG_SAMPLE\u003d\"etc/tempest.conf.sample\""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F2OM%3D","line":27,"in_reply_to":"AAAARn%2F%2F2w0%3D","updated":"2013-08-21 09:30:27.000000000","message":"Done.","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"30c0d963f8bf28f98253e55d3b7e1e24956624be","unresolved":false,"context_lines":[{"line_number":24,"context_line":"FORCE_NEW_CONFIG\u003dfalse"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# Tempest vars"},{"line_number":27,"context_line":"TEMPEST_ROOT\u003d\"/root/tempest\""},{"line_number":28,"context_line":"TEMPEST_CONFIG\u003d\"etc/tempest.conf\""},{"line_number":29,"context_line":"TEMPEST_CONFIG_SAMPLE\u003d\"etc/tempest.conf.sample\""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F2w0%3D","line":27,"in_reply_to":"AAAARn%2F%2F46M%3D","updated":"2013-08-21 04:58:55.000000000","message":"You should use by default $PWD or `pwd`  and assume it started from the tempest root directory, as ./tools/tempest_auto_config.sh .","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"2fc9ee2c56fb577a0a2cd1d71b5936dc634701c4","unresolved":false,"context_lines":[{"line_number":38,"context_line":"function usage()"},{"line_number":39,"context_line":"{"},{"line_number":40,"context_line":"  cat \u003c\u003cEOF"},{"line_number":41,"context_line":"usage: $0 \u003coptions\u003e"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Options:"},{"line_number":44,"context_line":"-a  openstack authentication URL"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F44M%3D","line":41,"updated":"2013-08-20 16:21:31.000000000","message":"[-a url]  [-f] [-p password]  \nor\n [OPTION]...\n\nThe frequently used style.","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":6578,"name":"Tal Kammer","email":"tkammer@redhat.com","username":"tkammer"},"change_message_id":"12dc23ad23f2cb59cf2ea1f4d1a6631dcaef7058","unresolved":false,"context_lines":[{"line_number":38,"context_line":"function usage()"},{"line_number":39,"context_line":"{"},{"line_number":40,"context_line":"  cat \u003c\u003cEOF"},{"line_number":41,"context_line":"usage: $0 \u003coptions\u003e"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Options:"},{"line_number":44,"context_line":"-a  openstack authentication URL"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F2F0%3D","line":41,"in_reply_to":"AAAARn%2F%2F44M%3D","updated":"2013-08-21 09:30:27.000000000","message":"Done","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"2fc9ee2c56fb577a0a2cd1d71b5936dc634701c4","unresolved":false,"context_lines":[{"line_number":41,"context_line":"usage: $0 \u003coptions\u003e"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Options:"},{"line_number":44,"context_line":"-a  openstack authentication URL"},{"line_number":45,"context_line":"-f  force overwrite on existing config file"},{"line_number":46,"context_line":"-p  password of Admin"},{"line_number":47,"context_line":"-r  the root directory of tempest"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F44E%3D","line":44,"updated":"2013-08-20 16:21:31.000000000","message":"The doc should say it has an additional option arg.","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":6578,"name":"Tal Kammer","email":"tkammer@redhat.com","username":"tkammer"},"change_message_id":"12dc23ad23f2cb59cf2ea1f4d1a6631dcaef7058","unresolved":false,"context_lines":[{"line_number":41,"context_line":"usage: $0 \u003coptions\u003e"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Options:"},{"line_number":44,"context_line":"-a  openstack authentication URL"},{"line_number":45,"context_line":"-f  force overwrite on existing config file"},{"line_number":46,"context_line":"-p  password of Admin"},{"line_number":47,"context_line":"-r  the root directory of tempest"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F2Fw%3D","line":44,"in_reply_to":"AAAARn%2F%2F44E%3D","updated":"2013-08-21 09:30:27.000000000","message":"Done","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"2fc9ee2c56fb577a0a2cd1d71b5936dc634701c4","unresolved":false,"context_lines":[{"line_number":191,"context_line":"  iniset \"${config}\" identity \"uri\" \"${uri}\""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"  # Update tempest config admin credentials"},{"line_number":194,"context_line":"  iniset ${config} identity \"admin_username\" \"${admin_username}\""},{"line_number":195,"context_line":"  iniset ${config} identity \"admin_password\" \"${admin_password}\""},{"line_number":196,"context_line":"  iniset ${config} identity \"admin_tenant_name\" \"${admin_tenant_name}\""},{"line_number":197,"context_line":""}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F42w%3D","line":194,"updated":"2013-08-20 16:21:31.000000000","message":"You can expect the exported credentials are the admin credentials,\ndoes not needs to passed as an argument.\n\nAlmost all command in this script relays on an exported credentials anyway.","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":6578,"name":"Tal Kammer","email":"tkammer@redhat.com","username":"tkammer"},"change_message_id":"12dc23ad23f2cb59cf2ea1f4d1a6631dcaef7058","unresolved":false,"context_lines":[{"line_number":191,"context_line":"  iniset \"${config}\" identity \"uri\" \"${uri}\""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"  # Update tempest config admin credentials"},{"line_number":194,"context_line":"  iniset ${config} identity \"admin_username\" \"${admin_username}\""},{"line_number":195,"context_line":"  iniset ${config} identity \"admin_password\" \"${admin_password}\""},{"line_number":196,"context_line":"  iniset ${config} identity \"admin_tenant_name\" \"${admin_tenant_name}\""},{"line_number":197,"context_line":""}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F2FY%3D","line":194,"in_reply_to":"AAAARn%2F%2F42w%3D","updated":"2013-08-21 09:30:27.000000000","message":"True, but I try to keep my \"globals\" to a minimum, It is much easier to follow the code when one knows what the function expects.","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"2fc9ee2c56fb577a0a2cd1d71b5936dc634701c4","unresolved":false,"context_lines":[{"line_number":205,"context_line":"  local tenant\u003d$(iniget ${config} identity tenant_name)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"  # create the tenant for the user"},{"line_number":208,"context_line":"  local tenant_id\u003d$(keystone tenant-create --name \"${tenant}\" |"},{"line_number":209,"context_line":"                    grep -o -E \"\\b\\w{32}\\b\")"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"  # create the user with the given tenant"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F43k%3D","line":208,"updated":"2013-08-20 16:21:31.000000000","message":"Creating the configured users and tenant, interesting, I like it.","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"2fc9ee2c56fb577a0a2cd1d71b5936dc634701c4","unresolved":false,"context_lines":[{"line_number":219,"context_line":"  local alt_tenant\u003d$(iniget ${config} identity alt_tenant_name)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"  # create the tenant for the user"},{"line_number":222,"context_line":"  local alt_tenant_id\u003d$(keystone tenant-create --name \"${alt_tenant}\" |"},{"line_number":223,"context_line":"                    grep -o -E \"\\b\\w{32}\\b\")"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"  # create the user with the given tenant"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F46Y%3D","line":222,"updated":"2013-08-20 16:21:31.000000000","message":"You should use awk instead of grep.\nI do not think we should relay on the velue size.\n\n awk \u0027/ id / {print $4}\u0027\n\nNot just here.","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":6578,"name":"Tal Kammer","email":"tkammer@redhat.com","username":"tkammer"},"change_message_id":"12dc23ad23f2cb59cf2ea1f4d1a6631dcaef7058","unresolved":false,"context_lines":[{"line_number":219,"context_line":"  local alt_tenant\u003d$(iniget ${config} identity alt_tenant_name)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"  # create the tenant for the user"},{"line_number":222,"context_line":"  local alt_tenant_id\u003d$(keystone tenant-create --name \"${alt_tenant}\" |"},{"line_number":223,"context_line":"                    grep -o -E \"\\b\\w{32}\\b\")"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"  # create the user with the given tenant"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F2Ag%3D","line":222,"in_reply_to":"AAAARn%2F%2F46Y%3D","updated":"2013-08-21 09:30:27.000000000","message":"I\u0027m not sure I fully agree with this as the ID is suppose to be a unique signature, a signature has a unique format thus I can pin point for an exact match no matter where in the table it will be presented.\nUsing AWK relies on the table print structure while grep relies on the structure of the signature.\nnot sure which approach is preferable..","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"2fc9ee2c56fb577a0a2cd1d71b5936dc634701c4","unresolved":false,"context_lines":[{"line_number":271,"context_line":"  iniset \"${TEMPEST_CONFIG}\" compute image_ref_alt \"${image_uuid_alt}\""},{"line_number":272,"context_line":"}"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"function main()"},{"line_number":275,"context_line":"{"},{"line_number":276,"context_line":"  local credentials_exist"},{"line_number":277,"context_line":"  local args\u003d(\"$@\")"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F48M%3D","line":274,"updated":"2013-08-20 16:21:31.000000000","message":"You do not need a dedicated main function.\n\nI usually use long ############## before the main part, and say main part.\n\nDoes not matter, I just noted it.","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":6578,"name":"Tal Kammer","email":"tkammer@redhat.com","username":"tkammer"},"change_message_id":"12dc23ad23f2cb59cf2ea1f4d1a6631dcaef7058","unresolved":false,"context_lines":[{"line_number":271,"context_line":"  iniset \"${TEMPEST_CONFIG}\" compute image_ref_alt \"${image_uuid_alt}\""},{"line_number":272,"context_line":"}"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"function main()"},{"line_number":275,"context_line":"{"},{"line_number":276,"context_line":"  local credentials_exist"},{"line_number":277,"context_line":"  local args\u003d(\"$@\")"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F2MM%3D","line":274,"in_reply_to":"AAAARn%2F%2F48M%3D","updated":"2013-08-21 09:30:27.000000000","message":"I\u0027ve been working according to google bash styling guide (apparently there is one :) )\nhttp://google-styleguide.googlecode.com/svn/trunk/shell.xml\n\nOther than that, it is mostly a habit from different programming languages :)","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"2fc9ee2c56fb577a0a2cd1d71b5936dc634701c4","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        p)  OS_PASSWORD\u003d$OPTARG;;"},{"line_number":288,"context_line":"        r)  TEMPEST_ROOT\u003d$OPTARG;;"},{"line_number":289,"context_line":"        t)  OS_TENANT_NAME\u003d$OPTARG;;"},{"line_number":290,"context_line":"        u)  OS_USERNAME\u003d$OPTARG;;"},{"line_number":291,"context_line":"      esac"},{"line_number":292,"context_line":"    done"},{"line_number":293,"context_line":"  fi"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F43I%3D","line":290,"updated":"2013-08-20 16:21:31.000000000","message":"You should export the credentials here, or before any other function call.","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":6578,"name":"Tal Kammer","email":"tkammer@redhat.com","username":"tkammer"},"change_message_id":"12dc23ad23f2cb59cf2ea1f4d1a6631dcaef7058","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        p)  OS_PASSWORD\u003d$OPTARG;;"},{"line_number":288,"context_line":"        r)  TEMPEST_ROOT\u003d$OPTARG;;"},{"line_number":289,"context_line":"        t)  OS_TENANT_NAME\u003d$OPTARG;;"},{"line_number":290,"context_line":"        u)  OS_USERNAME\u003d$OPTARG;;"},{"line_number":291,"context_line":"      esac"},{"line_number":292,"context_line":"    done"},{"line_number":293,"context_line":"  fi"}],"source_content_type":"text/x-sh","patch_set":1,"id":"AAAARn%2F%2F2HA%3D","line":290,"in_reply_to":"AAAARn%2F%2F43I%3D","updated":"2013-08-21 09:30:27.000000000","message":"Done","commit_id":"b642199354e27aa033221375147cd85021194b43"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"241d6fe5e394221723fecad5fa6ed67e519cf845","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# The objective of this script is to configure openstack environment +"},{"line_number":4,"context_line":"# tempest config file while relying on nothing but the current Openstack"}],"source_content_type":"text/x-sh","patch_set":2,"id":"AAAASX%2F%2F1uE%3D","line":1,"updated":"2013-08-26 14:25:33.000000000","message":"why bash and not python?","commit_id":"50aa339614619a50e7e0f625655a4f851ebbed1f"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"044f3d22556805b1ba8dceed50f6a95cbab1ac17","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                    grep -o -E \"\\b[a-zA-Z0-9]{32}\\b\")"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"  # create the user with the given tenant"},{"line_number":217,"context_line":"  keystone user-create --name \"${username}\" \\"},{"line_number":218,"context_line":"                       --tenant-id \"${tenant_id}\" \\"},{"line_number":219,"context_line":"                       --pass \"${password}\""},{"line_number":220,"context_line":""}],"source_content_type":"text/x-sh","patch_set":2,"id":"AAAARn%2F%2F1y4%3D","line":217,"updated":"2013-08-21 10:09:33.000000000","message":"This command uses the environment variables for the credentials.","commit_id":"50aa339614619a50e7e0f625655a4f851ebbed1f"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"0f8bd4b04397a726552056ecafb425a7d5272c50","unresolved":false,"context_lines":[{"line_number":243,"context_line":"#TODO:(tkammer) flag for specific images?"},{"line_number":244,"context_line":"function get_active_images()"},{"line_number":245,"context_line":"{"},{"line_number":246,"context_line":"  local active_images\u003d$(glance image-list --status active | \\"},{"line_number":247,"context_line":"            grep -o -E \"\\b[a-zA-Z0-9]{8}-([a-zA-Z0-9]{4}-){3}[a-zA-Z0-9]{12}\\b\")"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"  echo ${active_images}"}],"source_content_type":"text/x-sh","patch_set":2,"id":"AAAASX%2F%2F1ZY%3D","line":246,"updated":"2013-08-26 15:49:23.000000000","message":"maybe this should be renamed into active_images_id as you do with the tenant","commit_id":"50aa339614619a50e7e0f625655a4f851ebbed1f"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"044f3d22556805b1ba8dceed50f6a95cbab1ac17","unresolved":false,"context_lines":[{"line_number":289,"context_line":"      case \"${opt}\" in"},{"line_number":290,"context_line":"        a)  export OS_AUTH_URL\u003d$OPTARG;;"},{"line_number":291,"context_line":"        f)  FORCE_NEW_CONFIG\u003dtrue;;"},{"line_number":292,"context_line":"        p)  export OS_PASSWORD\u003d$OPTARG;;"},{"line_number":293,"context_line":"        r)  TEMPEST_ROOT\u003d$OPTARG;;"},{"line_number":294,"context_line":"        t)  export OS_TENANT_NAME\u003d$OPTARG;;"},{"line_number":295,"context_line":"        u)  export OS_USERNAME\u003d$OPTARG;;"}],"source_content_type":"text/x-sh","patch_set":2,"id":"AAAARn%2F%2F1ys%3D","line":292,"updated":"2013-08-21 10:09:33.000000000","message":"This password will not be used by the keystone command.","commit_id":"50aa339614619a50e7e0f625655a4f851ebbed1f"}]}
