)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d7c775270d886c9109aea4d752fd7a7c30a883ec","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Swann Croiset \u003cswann@oopss.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-02-17 11:51:17 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use config generator/check_update tools from Oslo incubator"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Declare config options in each plugins with available values and"},{"line_number":10,"context_line":"centralize resource_type value in plugin\u0027s module."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAUX%2F%2B4Cs%3D","line":7,"updated":"2014-02-18 13:38:39.000000000","message":"the scope of this change is wider : that\u0027s not only using config generator, but also reworking config files.\n\nI\u0027m OK with this big change, but you should announce it correctly","commit_id":"19f1b183e66793c21f8bfc481983897cb0e8c2dd"}],"climate/config.py":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d441f2c2a6350ad3a4479d630aad53aab1a1b64d","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    cfg.BoolOpt(\u0027log-exchange\u0027, default\u003dFalse,"},{"line_number":22,"context_line":"                help\u003d\u0027Log request/response exchange details: environ, \u0027"},{"line_number":23,"context_line":"                     \u0027headers and bodies\u0027),"},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027host\u0027, default\u003dsocket.gethostname(),"},{"line_number":25,"context_line":"               help\u003d\u0027Name of this node.  This can be an opaque identifier.  \u0027"},{"line_number":26,"context_line":"               \u0027It is not necessarily a hostname, FQDN, or IP address. \u0027"},{"line_number":27,"context_line":"               \u0027However, the node name must be valid within \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F3RA%3D","line":24,"updated":"2014-02-24 12:57:10.000000000","message":"may you explain why are you changing this default meaning?","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"86183de10c57acb3e6d2fff1f385ef9f2d006ec4","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    cfg.BoolOpt(\u0027log-exchange\u0027, default\u003dFalse,"},{"line_number":22,"context_line":"                help\u003d\u0027Log request/response exchange details: environ, \u0027"},{"line_number":23,"context_line":"                     \u0027headers and bodies\u0027),"},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027host\u0027, default\u003dsocket.gethostname(),"},{"line_number":25,"context_line":"               help\u003d\u0027Name of this node.  This can be an opaque identifier.  \u0027"},{"line_number":26,"context_line":"               \u0027It is not necessarily a hostname, FQDN, or IP address. \u0027"},{"line_number":27,"context_line":"               \u0027However, the node name must be valid within \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F2Qg%3D","line":24,"in_reply_to":"AAAAU3%2F%2F2u4%3D","updated":"2014-02-24 14:39:54.000000000","message":"ok, got it","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"de127192182871472f99ae4d2baf3e87569c57b1","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    cfg.BoolOpt(\u0027log-exchange\u0027, default\u003dFalse,"},{"line_number":22,"context_line":"                help\u003d\u0027Log request/response exchange details: environ, \u0027"},{"line_number":23,"context_line":"                     \u0027headers and bodies\u0027),"},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027host\u0027, default\u003dsocket.gethostname(),"},{"line_number":25,"context_line":"               help\u003d\u0027Name of this node.  This can be an opaque identifier.  \u0027"},{"line_number":26,"context_line":"               \u0027It is not necessarily a hostname, FQDN, or IP address. \u0027"},{"line_number":27,"context_line":"               \u0027However, the node name must be valid within \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F2u4%3D","line":24,"in_reply_to":"AAAAU3%2F%2F3RA%3D","updated":"2014-02-24 14:11:58.000000000","message":"As (poorly) explained in commit message, the config.generator use it to replace default value and generate always the same default value by \u0027climate\u0027: \notherwise this is unpredictable. \nSee:\nhttps://github.com/openstack/oslo-incubator/blob/master/openstack/common/config/generator.py#L232","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"}],"climate/plugins/instances/__init__.py":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d441f2c2a6350ad3a4479d630aad53aab1a1b64d","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"RESOURCE_TYPE \u003d u\u0027virtual:instance\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F3QY%3D","line":1,"updated":"2014-02-24 12:57:10.000000000","message":"Why first empty line?","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"de127192182871472f99ae4d2baf3e87569c57b1","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"RESOURCE_TYPE \u003d u\u0027virtual:instance\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F2wo%3D","line":1,"in_reply_to":"AAAAU3%2F%2F3QY%3D","updated":"2014-02-24 14:11:58.000000000","message":"no reason :D\nI\u0027ll remove it.","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"}],"climate/plugins/instances/vm_plugin.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d7c775270d886c9109aea4d752fd7a7c30a883ec","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from climate.utils.openstack import nova"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":25,"context_line":"RESOURCE_TYPE \u003d u\u0027virtual:instance\u0027"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"plugin_opts \u003d ["},{"line_number":28,"context_line":"    cfg.StrOpt(\u0027on_end\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2B4IE%3D","line":25,"updated":"2014-02-18 13:38:39.000000000","message":"please use six.text_type","commit_id":"19f1b183e66793c21f8bfc481983897cb0e8c2dd"}],"climate/plugins/oshosts/__init__.py":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d441f2c2a6350ad3a4479d630aad53aab1a1b64d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"               help\u003d\u0027Tenant of the user for write operations\u0027),"},{"line_number":30,"context_line":"]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"cfg.CONF.register_opts(admin_opts, group\u003dRESOURCE_TYPE)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F3Pk%3D","line":32,"updated":"2014-02-24 12:57:10.000000000","message":"please keep uniformity in passing group to register_opts() - in VM you just passed it as second arg, here you\u0027re using group\u003d...\n\nPersonally I prefer group\u003d\u003cgroup_name\u003e way of passing kwargs","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"de127192182871472f99ae4d2baf3e87569c57b1","unresolved":false,"context_lines":[{"line_number":29,"context_line":"               help\u003d\u0027Tenant of the user for write operations\u0027),"},{"line_number":30,"context_line":"]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"cfg.CONF.register_opts(admin_opts, group\u003dRESOURCE_TYPE)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F2sM%3D","line":32,"in_reply_to":"AAAAU3%2F%2F3Pk%3D","updated":"2014-02-24 14:11:58.000000000","message":"ok, I\u0027ll modify Hosts and VM plugins according to your preferences ... which match mine :)","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"}],"climate/plugins/oshosts/host_plugin.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d7c775270d886c9109aea4d752fd7a7c30a883ec","unresolved":false,"context_lines":[{"line_number":38,"context_line":"               default\u003d\u0027on_start\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027Actions which we will use at the start of the lease\u0027),"},{"line_number":40,"context_line":"]"},{"line_number":41,"context_line":"RESOURCE_TYPE \u003d u\u0027physical:host\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"cfg.CONF.register_opts(plugin_opts + rp.opts, RESOURCE_TYPE)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2B4F4%3D","line":41,"updated":"2014-02-18 13:38:39.000000000","message":"idem, please use six.text_type","commit_id":"19f1b183e66793c21f8bfc481983897cb0e8c2dd"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"a07aeca6a4e1140832fa559a122dc53141cc5233","unresolved":false,"context_lines":[{"line_number":38,"context_line":"               default\u003d\u0027on_start\u0027,"},{"line_number":39,"context_line":"               help\u003d\u0027Actions which we will use at the start of the lease\u0027),"},{"line_number":40,"context_line":"]"},{"line_number":41,"context_line":"RESOURCE_TYPE \u003d u\u0027physical:host\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"cfg.CONF.register_opts(plugin_opts + rp.opts, RESOURCE_TYPE)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2BZVM%3D","line":41,"in_reply_to":"AAAAUX%2F%2B4F4%3D","updated":"2014-02-21 14:51:47.000000000","message":"Could be done in a dedicated patch no? : py3 compat","commit_id":"19f1b183e66793c21f8bfc481983897cb0e8c2dd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d7c775270d886c9109aea4d752fd7a7c30a883ec","unresolved":false,"context_lines":[{"line_number":40,"context_line":"]"},{"line_number":41,"context_line":"RESOURCE_TYPE \u003d u\u0027physical:host\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"cfg.CONF.register_opts(plugin_opts + rp.opts, RESOURCE_TYPE)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class PhysicalHostPlugin(base.BasePlugin):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2B4Fc%3D","line":43,"updated":"2014-02-18 13:38:39.000000000","message":"please don\u0027t do like that, use import_opt instead","commit_id":"19f1b183e66793c21f8bfc481983897cb0e8c2dd"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"a07aeca6a4e1140832fa559a122dc53141cc5233","unresolved":false,"context_lines":[{"line_number":40,"context_line":"]"},{"line_number":41,"context_line":"RESOURCE_TYPE \u003d u\u0027physical:host\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"cfg.CONF.register_opts(plugin_opts + rp.opts, RESOURCE_TYPE)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class PhysicalHostPlugin(base.BasePlugin):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2BZUc%3D","line":43,"in_reply_to":"AAAAUX%2F%2B4Fc%3D","updated":"2014-02-21 14:51:47.000000000","message":"Removed it","commit_id":"19f1b183e66793c21f8bfc481983897cb0e8c2dd"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d59fb7ea79fab904766236a17116299c99e4ea0b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"]"},{"line_number":41,"context_line":"RESOURCE_TYPE \u003d u\u0027physical:host\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"cfg.CONF.register_opts(plugin_opts + rp.opts, RESOURCE_TYPE)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class PhysicalHostPlugin(base.BasePlugin):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2BbZQ%3D","line":43,"in_reply_to":"AAAAUX%2F%2B4Fc%3D","updated":"2014-02-21 07:48:18.000000000","message":"Yes, smth like register opts for plugin_opts and import_opts for rp.opts","commit_id":"19f1b183e66793c21f8bfc481983897cb0e8c2dd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d7c775270d886c9109aea4d752fd7a7c30a883ec","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                                  api_key\u003dcfg.CONF.climate_password,"},{"line_number":64,"context_line":"                                  auth_url\u003dauth_url,"},{"line_number":65,"context_line":"                                  project_id\u003dcfg.CONF.climate_tenant_name)"},{"line_number":66,"context_line":"        self.pool \u003d rp.ReservationPool(RESOURCE_TYPE)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def create_reservation(self, values):"},{"line_number":69,"context_line":"        \"\"\"Create reservation.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2B4E4%3D","line":66,"updated":"2014-02-18 13:38:39.000000000","message":"not related to the patch itself","commit_id":"19f1b183e66793c21f8bfc481983897cb0e8c2dd"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"a07aeca6a4e1140832fa559a122dc53141cc5233","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                                  api_key\u003dcfg.CONF.climate_password,"},{"line_number":64,"context_line":"                                  auth_url\u003dauth_url,"},{"line_number":65,"context_line":"                                  project_id\u003dcfg.CONF.climate_tenant_name)"},{"line_number":66,"context_line":"        self.pool \u003d rp.ReservationPool(RESOURCE_TYPE)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def create_reservation(self, values):"},{"line_number":69,"context_line":"        \"\"\"Create reservation.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2BZUQ%3D","line":66,"in_reply_to":"AAAAUX%2F%2B4E4%3D","updated":"2014-02-21 14:51:47.000000000","message":"rollbacked, no sense","commit_id":"19f1b183e66793c21f8bfc481983897cb0e8c2dd"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d59fb7ea79fab904766236a17116299c99e4ea0b","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                                  api_key\u003dcfg.CONF.climate_password,"},{"line_number":64,"context_line":"                                  auth_url\u003dauth_url,"},{"line_number":65,"context_line":"                                  project_id\u003dcfg.CONF.climate_tenant_name)"},{"line_number":66,"context_line":"        self.pool \u003d rp.ReservationPool(RESOURCE_TYPE)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def create_reservation(self, values):"},{"line_number":69,"context_line":"        \"\"\"Create reservation.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2BbZA%3D","line":66,"in_reply_to":"AAAAUX%2F%2B4E4%3D","updated":"2014-02-21 07:48:18.000000000","message":"yes. Was it really working before? I see no place where just \u0027pool\u0027 could come from...","commit_id":"19f1b183e66793c21f8bfc481983897cb0e8c2dd"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"a07aeca6a4e1140832fa559a122dc53141cc5233","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                                  api_key\u003dcfg.CONF.climate_password,"},{"line_number":64,"context_line":"                                  auth_url\u003dauth_url,"},{"line_number":65,"context_line":"                                  project_id\u003dcfg.CONF.climate_tenant_name)"},{"line_number":66,"context_line":"        self.pool \u003d rp.ReservationPool(RESOURCE_TYPE)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def create_reservation(self, values):"},{"line_number":69,"context_line":"        \"\"\"Create reservation.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2BZO4%3D","line":66,"in_reply_to":"AAAAUX%2F%2BbZA%3D","updated":"2014-02-21 14:51:47.000000000","message":"Yes it\u0027s strange, I\u0027ve forgotten this!\nit\u0027s initialized in the setup mehtod, called by the manager service.\n\ncould have some re-work in an other patch","commit_id":"19f1b183e66793c21f8bfc481983897cb0e8c2dd"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d441f2c2a6350ad3a4479d630aad53aab1a1b64d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"cfg.CONF.register_opts(plugin_opts, plugin.RESOURCE_TYPE)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class PhysicalHostPlugin(base.BasePlugin):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F3O0%3D","line":44,"updated":"2014-02-24 12:57:10.000000000","message":"the same here - group\u003d stuff as mentioned in previous file","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"de127192182871472f99ae4d2baf3e87569c57b1","unresolved":false,"context_lines":[{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"cfg.CONF.register_opts(plugin_opts, plugin.RESOURCE_TYPE)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class PhysicalHostPlugin(base.BasePlugin):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F2ns%3D","line":44,"in_reply_to":"AAAAU3%2F%2F3O0%3D","updated":"2014-02-24 14:11:58.000000000","message":"Done","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d441f2c2a6350ad3a4479d630aad53aab1a1b64d","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        auth_url \u003d \"%s://%s:%s/v2.0\" % (cfg.CONF.os_auth_protocol,"},{"line_number":59,"context_line":"                                        cfg.CONF.os_auth_host,"},{"line_number":60,"context_line":"                                        cfg.CONF.os_auth_port)"},{"line_number":61,"context_line":"        config \u003d cfg.CONF[plugin.RESOURCE_TYPE]"},{"line_number":62,"context_line":"        #TODO(scroiset): use client wrapped by climate and use trust"},{"line_number":63,"context_line":"        self.nova \u003d client.Client(\u00272\u0027,"},{"line_number":64,"context_line":"                                  username\u003dconfig.climate_username,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F3OY%3D","line":61,"updated":"2014-02-24 12:57:10.000000000","message":"if you\u0027re using veritable to introduce cfg.CONF define it globally (CONF\u003dcfg.CONF before 44th line) - just not to change these lines in case if its usage will be need in this file later.","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"86183de10c57acb3e6d2fff1f385ef9f2d006ec4","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        auth_url \u003d \"%s://%s:%s/v2.0\" % (cfg.CONF.os_auth_protocol,"},{"line_number":59,"context_line":"                                        cfg.CONF.os_auth_host,"},{"line_number":60,"context_line":"                                        cfg.CONF.os_auth_port)"},{"line_number":61,"context_line":"        config \u003d cfg.CONF[plugin.RESOURCE_TYPE]"},{"line_number":62,"context_line":"        #TODO(scroiset): use client wrapped by climate and use trust"},{"line_number":63,"context_line":"        self.nova \u003d client.Client(\u00272\u0027,"},{"line_number":64,"context_line":"                                  username\u003dconfig.climate_username,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F2Kg%3D","line":61,"in_reply_to":"AAAAU3%2F%2F2gs%3D","updated":"2014-02-24 14:39:54.000000000","message":"nah, I was speaking about 43th line like:\n\nCONF \u003d cfg.CONF\n\nI mean that will keep you from cfg.CONF stuff in all __init__ file (you-re using it in 58 - 61 lines)\n\nThat\u0027s cosmetic thing, really :)","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"de127192182871472f99ae4d2baf3e87569c57b1","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        auth_url \u003d \"%s://%s:%s/v2.0\" % (cfg.CONF.os_auth_protocol,"},{"line_number":59,"context_line":"                                        cfg.CONF.os_auth_host,"},{"line_number":60,"context_line":"                                        cfg.CONF.os_auth_port)"},{"line_number":61,"context_line":"        config \u003d cfg.CONF[plugin.RESOURCE_TYPE]"},{"line_number":62,"context_line":"        #TODO(scroiset): use client wrapped by climate and use trust"},{"line_number":63,"context_line":"        self.nova \u003d client.Client(\u00272\u0027,"},{"line_number":64,"context_line":"                                  username\u003dconfig.climate_username,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F2gs%3D","line":61,"in_reply_to":"AAAAU3%2F%2F3OY%3D","updated":"2014-02-24 14:11:58.000000000","message":"do you mean I put \"config \u003d fg.CONF[plugin.RESOURCE_TYPE]\" at module level aka global var and not in __init__?","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d441f2c2a6350ad3a4479d630aad53aab1a1b64d","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                host \u003d db_api.host_get(allocation[\u0027compute_host_id\u0027])"},{"line_number":177,"context_line":"                host_name \u003d host[\u0027hypervisor_hostname\u0027]"},{"line_number":178,"context_line":"                pool.add_computehost(reservation[\u0027resource_id\u0027],"},{"line_number":179,"context_line":"                                     host_name)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def on_end(self, resource_id):"},{"line_number":182,"context_line":"        \"\"\"Remove the hosts from the pool.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F3Nk%3D","line":179,"updated":"2014-02-24 12:57:10.000000000","message":"why do you move it to next line? It looks ok as it was","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"de127192182871472f99ae4d2baf3e87569c57b1","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                host \u003d db_api.host_get(allocation[\u0027compute_host_id\u0027])"},{"line_number":177,"context_line":"                host_name \u003d host[\u0027hypervisor_hostname\u0027]"},{"line_number":178,"context_line":"                pool.add_computehost(reservation[\u0027resource_id\u0027],"},{"line_number":179,"context_line":"                                     host_name)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def on_end(self, resource_id):"},{"line_number":182,"context_line":"        \"\"\"Remove the hosts from the pool.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F2os%3D","line":179,"in_reply_to":"AAAAU3%2F%2F3Nk%3D","updated":"2014-02-24 14:11:58.000000000","message":"Done","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"}],"climate/plugins/oshosts/nova_inventory.py":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d441f2c2a6350ad3a4479d630aad53aab1a1b64d","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        auth_url \u003d \"%s://%s:%s/v2.0\" % (cfg.CONF.os_auth_protocol,"},{"line_number":31,"context_line":"                                        cfg.CONF.os_auth_host,"},{"line_number":32,"context_line":"                                        cfg.CONF.os_auth_port)"},{"line_number":33,"context_line":"        config \u003d cfg.CONF[plugin.RESOURCE_TYPE]"},{"line_number":34,"context_line":"        self.nova \u003d client.Client(\u00272\u0027,"},{"line_number":35,"context_line":"                                  username\u003dconfig.climate_username,"},{"line_number":36,"context_line":"                                  api_key\u003dconfig.climate_password,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F3NE%3D","line":33,"updated":"2014-02-24 12:57:10.000000000","message":"the same with global cfg.CONF. Also I\u0027m not sure if this code will work without importing opts from file where they were registered (host_plugin, as I remember)","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"}],"climate/plugins/oshosts/reservation_pool.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d7c775270d886c9109aea4d752fd7a7c30a883ec","unresolved":false,"context_lines":[{"line_number":47,"context_line":"class ReservationPool(object):"},{"line_number":48,"context_line":"    def __init__(self, config):"},{"line_number":49,"context_line":"        self.ctx \u003d context.current()"},{"line_number":50,"context_line":"        self.config \u003d cfg.CONF[config]"},{"line_number":51,"context_line":"        self.freepool_name \u003d self.config.aggregate_freepool_name"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        #TODO(scroiset): use catalog to find the url"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2B4D8%3D","line":50,"updated":"2014-02-18 13:38:39.000000000","message":"please don\u0027t do that way","commit_id":"19f1b183e66793c21f8bfc481983897cb0e8c2dd"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d59fb7ea79fab904766236a17116299c99e4ea0b","unresolved":false,"context_lines":[{"line_number":47,"context_line":"class ReservationPool(object):"},{"line_number":48,"context_line":"    def __init__(self, config):"},{"line_number":49,"context_line":"        self.ctx \u003d context.current()"},{"line_number":50,"context_line":"        self.config \u003d cfg.CONF[config]"},{"line_number":51,"context_line":"        self.freepool_name \u003d self.config.aggregate_freepool_name"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        #TODO(scroiset): use catalog to find the url"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2BbYM%3D","line":50,"in_reply_to":"AAAAUX%2F%2B4D8%3D","updated":"2014-02-21 07:48:18.000000000","message":"It\u0027ll be much better just to register/import opts in this file.","commit_id":"19f1b183e66793c21f8bfc481983897cb0e8c2dd"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"a07aeca6a4e1140832fa559a122dc53141cc5233","unresolved":false,"context_lines":[{"line_number":47,"context_line":"class ReservationPool(object):"},{"line_number":48,"context_line":"    def __init__(self, config):"},{"line_number":49,"context_line":"        self.ctx \u003d context.current()"},{"line_number":50,"context_line":"        self.config \u003d cfg.CONF[config]"},{"line_number":51,"context_line":"        self.freepool_name \u003d self.config.aggregate_freepool_name"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        #TODO(scroiset): use catalog to find the url"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2BZF0%3D","line":50,"in_reply_to":"AAAAUX%2F%2BbYM%3D","updated":"2014-02-21 14:51:47.000000000","message":"rollbacked ... indeet it\u0027s crappy","commit_id":"19f1b183e66793c21f8bfc481983897cb0e8c2dd"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d441f2c2a6350ad3a4479d630aad53aab1a1b64d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"cfg.CONF.register_opts(OPTS, plugin.RESOURCE_TYPE)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class ReservationPool(object):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F3NA%3D","line":48,"updated":"2014-02-24 12:57:10.000000000","message":"the same with group\u003d...","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"de127192182871472f99ae4d2baf3e87569c57b1","unresolved":false,"context_lines":[{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"cfg.CONF.register_opts(OPTS, plugin.RESOURCE_TYPE)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class ReservationPool(object):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F2jo%3D","line":48,"in_reply_to":"AAAAU3%2F%2F3NA%3D","updated":"2014-02-24 14:11:58.000000000","message":"Done","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d441f2c2a6350ad3a4479d630aad53aab1a1b64d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"class ReservationPool(object):"},{"line_number":52,"context_line":"    def __init__(self):"},{"line_number":53,"context_line":"        self.ctx \u003d context.current()"},{"line_number":54,"context_line":"        self.config \u003d cfg.CONF[plugin.RESOURCE_TYPE]"},{"line_number":55,"context_line":"        self.freepool_name \u003d self.config.aggregate_freepool_name"},{"line_number":56,"context_line":"        #TODO(scroiset): use catalog to find the url"},{"line_number":57,"context_line":"        auth_url \u003d \"%s://%s:%s/v2.0\" % (cfg.CONF.os_auth_protocol,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F3M4%3D","line":54,"updated":"2014-02-24 12:57:10.000000000","message":"the same with global CONF variable","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"86183de10c57acb3e6d2fff1f385ef9f2d006ec4","unresolved":false,"context_lines":[{"line_number":51,"context_line":"class ReservationPool(object):"},{"line_number":52,"context_line":"    def __init__(self):"},{"line_number":53,"context_line":"        self.ctx \u003d context.current()"},{"line_number":54,"context_line":"        self.config \u003d cfg.CONF[plugin.RESOURCE_TYPE]"},{"line_number":55,"context_line":"        self.freepool_name \u003d self.config.aggregate_freepool_name"},{"line_number":56,"context_line":"        #TODO(scroiset): use catalog to find the url"},{"line_number":57,"context_line":"        auth_url \u003d \"%s://%s:%s/v2.0\" % (cfg.CONF.os_auth_protocol,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F2Iw%3D","line":54,"in_reply_to":"AAAAU3%2F%2F3M4%3D","updated":"2014-02-24 14:39:54.000000000","message":"One more time:\n\nI mean CONF \u003d cfg.CONF line as it\u0027s used in many places (48, 54, 57-59 lines), but I\u0027m ok with self.config stuff","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"}],"climate/tests/plugins/oshosts/test_reservation_pool.py":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d441f2c2a6350ad3a4479d630aad53aab1a1b64d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.fake_aggregate \u003d AggregateFake(i\u003d123,"},{"line_number":46,"context_line":"                                            name\u003d\u0027fooname\u0027,"},{"line_number":47,"context_line":"                                            hosts\u003d[\u0027host1\u0027, \u0027host2\u0027])"},{"line_number":48,"context_line":"        conf \u003d cfg.CONF[host_plugin.RESOURCE_TYPE]"},{"line_number":49,"context_line":"        self.freepool_name \u003d conf.aggregate_freepool_name"},{"line_number":50,"context_line":"        self.tenant_id_key \u003d conf.tenant_id_key"},{"line_number":51,"context_line":"        self.climate_owner \u003d conf.climate_owner"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F3Mg%3D","line":48,"updated":"2014-02-24 12:57:10.000000000","message":"personally I prefer global CONF var here too","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"86183de10c57acb3e6d2fff1f385ef9f2d006ec4","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.fake_aggregate \u003d AggregateFake(i\u003d123,"},{"line_number":46,"context_line":"                                            name\u003d\u0027fooname\u0027,"},{"line_number":47,"context_line":"                                            hosts\u003d[\u0027host1\u0027, \u0027host2\u0027])"},{"line_number":48,"context_line":"        conf \u003d cfg.CONF[host_plugin.RESOURCE_TYPE]"},{"line_number":49,"context_line":"        self.freepool_name \u003d conf.aggregate_freepool_name"},{"line_number":50,"context_line":"        self.tenant_id_key \u003d conf.tenant_id_key"},{"line_number":51,"context_line":"        self.climate_owner \u003d conf.climate_owner"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAU3%2F%2F2IE%3D","line":48,"in_reply_to":"AAAAU3%2F%2F3Mg%3D","updated":"2014-02-24 14:39:54.000000000","message":"Nah, I\u0027m wrong here. Please keep it as is.","commit_id":"0d21ec31ee22fb4694947a2efc2c8cf2b7c229a4"}],"tox.ini":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"8b13224b5275612c416ff9058b26cc7a000958e2","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    rm -rf doc/html doc/build"},{"line_number":32,"context_line":"    rm -rf doc/source/apidoc doc/source/api"},{"line_number":33,"context_line":"    python setup.py build_sphinx"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"[testenv:config]"},{"line_number":36,"context_line":"commands \u003d"},{"line_number":37,"context_line":"    {toxinidir}/tools/config/check_uptodate.sh"}],"source_content_type":"text/x-properties","patch_set":6,"id":"AAAAU3%2F%2F0%2Fg%3D","line":34,"updated":"2014-02-24 16:01:57.000000000","message":"I prefer this in pep8 checking: https://github.com/openstack/savanna/blob/master/tox.ini#L32","commit_id":"d00219147fbdab441f12d2b97ccded26c2362b06"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"9ba0f20e9347710ff285f3ff16f37a2defdc1356","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    rm -rf doc/html doc/build"},{"line_number":32,"context_line":"    rm -rf doc/source/apidoc doc/source/api"},{"line_number":33,"context_line":"    python setup.py build_sphinx"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"[testenv:config]"},{"line_number":36,"context_line":"commands \u003d"},{"line_number":37,"context_line":"    {toxinidir}/tools/config/check_uptodate.sh"}],"source_content_type":"text/x-properties","patch_set":6,"id":"AAAAU3%2F%2F0n8%3D","line":34,"in_reply_to":"AAAAU3%2F%2F0%2Fg%3D","updated":"2014-02-24 16:30:15.000000000","message":"The reason I created a new env is if we check in pep8 this can result a gating fails when dependent library updating their configuration options :\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2014-February/026213.html\n\nwith a non-voting gate we can avoid the failure.\n\nDidn\u0027t catch the conclusion on the topic of the ML but \"gurus\" said to delete this sample file from git repo:\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2014-February/026229.html\n\nSeems to be a good compromise to have a separate check with non-voting  : just to say \"Hey your sample file is not up-to-date.\"","commit_id":"d00219147fbdab441f12d2b97ccded26c2362b06"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"14c4c87d78535c70d3ef134906db66b30fe09ae4","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    rm -rf doc/html doc/build"},{"line_number":32,"context_line":"    rm -rf doc/source/apidoc doc/source/api"},{"line_number":33,"context_line":"    python setup.py build_sphinx"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"[testenv:config]"},{"line_number":36,"context_line":"commands \u003d"},{"line_number":37,"context_line":"    {toxinidir}/tools/config/check_uptodate.sh"}],"source_content_type":"text/x-properties","patch_set":6,"id":"AAAAU3%2F%2F0RY%3D","line":34,"in_reply_to":"AAAAU3%2F%2F0n8%3D","updated":"2014-02-24 16:53:13.000000000","message":"Swan, if we have this check as part of pep8, we have one really good pro:\n\n\n- we always have up to date sample config file\n\n\nIf dependency library changes its config options, we have to change them in our sample too to keep everything working, what\u0027s good.\n\n\nIn other case non-voting job really means nothing, because in some time it\u0027ll be ignored by all of us - like pylint checkings in other projects.\n\n\nWe\u0027ll have up-to-date sample only if that\u0027ll be voting stuff.","commit_id":"d00219147fbdab441f12d2b97ccded26c2362b06"}]}
