)]}'
{"ceilometer/hardware/discovery.py":[{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"1e992df358e843d779dcbc4c9bfb674bc8da1d20","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from ceilometer import nova_client"},{"line_number":16,"context_line":"from ceilometer import plugin"},{"line_number":17,"context_line":"from ceilometer.openstack.common import log"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_2f821ac8","line":17,"updated":"2014-05-06 14:22:31.000000000","message":"Little nit. Please, arrange imports in alphabetical order, according to http://docs.openstack.org/developer/hacking/","commit_id":"88d65ce8eea3490272299c6842d10e21e6d6d21c"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"4c081a704a01f24b322dbd5ffc3480226969530c","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from ceilometer import nova_client"},{"line_number":16,"context_line":"from ceilometer import plugin"},{"line_number":17,"context_line":"from ceilometer.openstack.common import log"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_470b72d5","line":17,"in_reply_to":"9ad9bd40_2f821ac8","updated":"2014-05-20 09:12:36.000000000","message":"Done","commit_id":"88d65ce8eea3490272299c6842d10e21e6d6d21c"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"3ba337ee98d01b2b524642038d81078744e40cf7","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class NodesDiscovery(plugin.DiscoveryBase):"},{"line_number":22,"context_line":"    def __init__(self):"},{"line_number":23,"context_line":"        super(NodesDiscovery, self).__init__()"},{"line_number":24,"context_line":"        self.nova_cli \u003d nova_client.Client()"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_13898dca","line":21,"updated":"2014-05-08 05:51:45.000000000","message":"Maybe rename this to be TripleO specific? e.g. NodesDiscoveryTripleO?","commit_id":"88d65ce8eea3490272299c6842d10e21e6d6d21c"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"4c081a704a01f24b322dbd5ffc3480226969530c","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class NodesDiscovery(plugin.DiscoveryBase):"},{"line_number":22,"context_line":"    def __init__(self):"},{"line_number":23,"context_line":"        super(NodesDiscovery, self).__init__()"},{"line_number":24,"context_line":"        self.nova_cli \u003d nova_client.Client()"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_87281a34","line":21,"in_reply_to":"7adec928_13898dca","updated":"2014-05-20 09:12:36.000000000","message":"Done","commit_id":"88d65ce8eea3490272299c6842d10e21e6d6d21c"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"9e4fea925fabf8099806e2c66b17064bc1271448","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        ip_addresses \u003d []"},{"line_number":32,"context_line":"        for instance in instances:"},{"line_number":33,"context_line":"            try:"},{"line_number":34,"context_line":"                ip_address \u003d instance.addresses[\u0027ctlplane\u0027][0][\u0027addr\u0027]"},{"line_number":35,"context_line":"                snmp_address \u003d \"snmp://\" + ip_address"},{"line_number":36,"context_line":"                ip_addresses.append(snmp_address)"},{"line_number":37,"context_line":"            except KeyError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_8e01676c","line":34,"updated":"2014-05-06 15:05:13.000000000","message":"Presumably this \u0027ctlplane\u0027 network name for the control plane is specific to the TripleO setup? \n\nWould it make sense for this to be configurable?","commit_id":"88d65ce8eea3490272299c6842d10e21e6d6d21c"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"4c081a704a01f24b322dbd5ffc3480226969530c","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        ip_addresses \u003d []"},{"line_number":32,"context_line":"        for instance in instances:"},{"line_number":33,"context_line":"            try:"},{"line_number":34,"context_line":"                ip_address \u003d instance.addresses[\u0027ctlplane\u0027][0][\u0027addr\u0027]"},{"line_number":35,"context_line":"                snmp_address \u003d \"snmp://\" + ip_address"},{"line_number":36,"context_line":"                ip_addresses.append(snmp_address)"},{"line_number":37,"context_line":"            except KeyError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_87b65af7","line":34,"in_reply_to":"9ad9bd40_8e01676c","updated":"2014-05-20 09:12:36.000000000","message":"I think since this class is TripleO related, there should be no need.\nCan I expect that users would write another class for another discovery?","commit_id":"88d65ce8eea3490272299c6842d10e21e6d6d21c"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"3ba337ee98d01b2b524642038d81078744e40cf7","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        for instance in instances:"},{"line_number":33,"context_line":"            try:"},{"line_number":34,"context_line":"                ip_address \u003d instance.addresses[\u0027ctlplane\u0027][0][\u0027addr\u0027]"},{"line_number":35,"context_line":"                snmp_address \u003d \"snmp://\" + ip_address"},{"line_number":36,"context_line":"                ip_addresses.append(snmp_address)"},{"line_number":37,"context_line":"            except KeyError:"},{"line_number":38,"context_line":"                LOG.error(\"Couldn\u0027t obtain IP address of\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_f3ed018d","line":35,"updated":"2014-05-08 05:51:45.000000000","message":"Could it possible to make snmp:// prefix configurable? so if we have other inspectors in the future, we don\u0027t need to modify this hard coded prefix.","commit_id":"88d65ce8eea3490272299c6842d10e21e6d6d21c"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"4c081a704a01f24b322dbd5ffc3480226969530c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        for instance in instances:"},{"line_number":33,"context_line":"            try:"},{"line_number":34,"context_line":"                ip_address \u003d instance.addresses[\u0027ctlplane\u0027][0][\u0027addr\u0027]"},{"line_number":35,"context_line":"                snmp_address \u003d \"snmp://\" + ip_address"},{"line_number":36,"context_line":"                ip_addresses.append(snmp_address)"},{"line_number":37,"context_line":"            except KeyError:"},{"line_number":38,"context_line":"                LOG.error(\"Couldn\u0027t obtain IP address of\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_2792e64b","line":35,"in_reply_to":"7adec928_f3ed018d","updated":"2014-05-20 09:12:36.000000000","message":"Not really sure how to make this configurable. Would the use case be that this discovery would be used for multiple protocols at once? Or that you would switch it to something else.\n\nThe configuration should go to /etc/ceilometer.conf right?","commit_id":"88d65ce8eea3490272299c6842d10e21e6d6d21c"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"9e4fea925fabf8099806e2c66b17064bc1271448","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            try:"},{"line_number":34,"context_line":"                ip_address \u003d instance.addresses[\u0027ctlplane\u0027][0][\u0027addr\u0027]"},{"line_number":35,"context_line":"                snmp_address \u003d \"snmp://\" + ip_address"},{"line_number":36,"context_line":"                ip_addresses.append(snmp_address)"},{"line_number":37,"context_line":"            except KeyError:"},{"line_number":38,"context_line":"                LOG.error(\"Couldn\u0027t obtain IP address of\""},{"line_number":39,"context_line":"                          \"instance %s\" % instance.id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_eeef53af","line":36,"updated":"2014-05-06 15:05:13.000000000","message":"Is duplicate filtering required at all? (e.g. a simple approach like using a set to build up the addresses)","commit_id":"88d65ce8eea3490272299c6842d10e21e6d6d21c"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"4c081a704a01f24b322dbd5ffc3480226969530c","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            try:"},{"line_number":34,"context_line":"                ip_address \u003d instance.addresses[\u0027ctlplane\u0027][0][\u0027addr\u0027]"},{"line_number":35,"context_line":"                snmp_address \u003d \"snmp://\" + ip_address"},{"line_number":36,"context_line":"                ip_addresses.append(snmp_address)"},{"line_number":37,"context_line":"            except KeyError:"},{"line_number":38,"context_line":"                LOG.error(\"Couldn\u0027t obtain IP address of\""},{"line_number":39,"context_line":"                          \"instance %s\" % instance.id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_670b0e7d","line":36,"in_reply_to":"9ad9bd40_eeef53af","updated":"2014-05-20 09:12:36.000000000","message":"Hm, I think it should not be needed, as if you would have nodes with same IP in your cloud, it would break things.  Also DHCP should not allow this.","commit_id":"88d65ce8eea3490272299c6842d10e21e6d6d21c"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"d9e57ba8e9f35a843fea2a842556a2e2f0389e1c","unresolved":false,"context_lines":[{"line_number":22,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"OPTS \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027nodes_discovery_tripleo_ip_prefix\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027snmp://\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Prefix for IP address for querying stats.\u0027"},{"line_number":28,"context_line":"                    \u0027E.g. protocol\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_697d80b1","line":25,"updated":"2014-05-21 11:33:47.000000000","message":"Could this config option be named in a way that\u0027s less referential to tripleo?\n\nAlso the config option grouping mechanism could be used to avoid needing such a long name in the [DEFAULT] section.\n \nIn the ceilometer.conf, could it just be:\n\n  [hardware]\n  # URL scheme to use for hardware nodes\n  # url_scheme \u003d \u0027snmp://\u0027\n\nor:\n\n  [snmp]\n  # URL scheme to use for SNMP-monitored nodes\n  url_scheme \u003d \u0027snmp://\u0027\n\nIt would be defined like so:\n\n  OPTS \u003d [\n    cfg.StrOpt(\u0027url_scheme\u0027,\n                default\u003d\u0027snmp://\u0027,\n                help\u003d\u0027URL scheme to use for hardware nodes\u0027)\n  ]\n\n  cfg.CONF.register_opts(OPTS, group\u003d\u0027hardware\u0027)","commit_id":"15087a3b1f1118082d0f2088c8300e73eea30577"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"5e699a33b6248401ba233f989b2937d0852fd477","unresolved":false,"context_lines":[{"line_number":22,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"OPTS \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027nodes_discovery_tripleo_ip_prefix\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027snmp://\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Prefix for IP address for querying stats.\u0027"},{"line_number":28,"context_line":"                    \u0027E.g. protocol\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_a8dbe219","line":25,"in_reply_to":"3ae8d1ca_154b1888","updated":"2014-05-28 13:12:55.000000000","message":"Done","commit_id":"15087a3b1f1118082d0f2088c8300e73eea30577"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"51dccd483bc9cb8ae91fa0b996ad005109fe4aff","unresolved":false,"context_lines":[{"line_number":22,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"OPTS \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027nodes_discovery_tripleo_ip_prefix\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027snmp://\u0027,"},{"line_number":27,"context_line":"               help\u003d\u0027Prefix for IP address for querying stats.\u0027"},{"line_number":28,"context_line":"                    \u0027E.g. protocol\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_154b1888","line":25,"in_reply_to":"7adec928_697d80b1","updated":"2014-05-28 07:19:34.000000000","message":"+1 for eglynn\u0027s proposal","commit_id":"15087a3b1f1118082d0f2088c8300e73eea30577"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"320ca81638cc41c37546c36582b93c5ab8346788","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                ip_addresses.append(final_address)"},{"line_number":50,"context_line":"            except KeyError:"},{"line_number":51,"context_line":"                LOG.error(\"Couldn\u0027t obtain IP address of\""},{"line_number":52,"context_line":"                          \"instance %s\" % instance.id)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        return ip_addresses"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_dfe41be2","line":52,"updated":"2014-06-11 07:23:06.000000000","message":"Maybe it\u0027s better to make the error message i18n friendly?","commit_id":"40159af33bce30cfb178d5e784349f5848264429"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"a2c28035462f1c93770442aa56b4a65b921f699f","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                ip_addresses.append(final_address)"},{"line_number":50,"context_line":"            except KeyError:"},{"line_number":51,"context_line":"                LOG.error(\"Couldn\u0027t obtain IP address of\""},{"line_number":52,"context_line":"                          \"instance %s\" % instance.id)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        return ip_addresses"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_e53eaa8a","line":52,"in_reply_to":"1ae5cdf2_dfe41be2","updated":"2014-06-11 08:14:08.000000000","message":"Good catch. Will do.","commit_id":"40159af33bce30cfb178d5e784349f5848264429"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"8a93472c3219e8d8c7ee8a63534ece5e98ae4c41","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def discover(self, param\u003dNone):"},{"line_number":45,"context_line":"        \"\"\"Discover resources to monitor."},{"line_number":46,"context_line":"        \"\"\""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        instances \u003d self.nova_cli.instance_get_all()"},{"line_number":49,"context_line":"        ip_addresses \u003d []"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_086f372c","line":46,"updated":"2014-07-03 10:41:40.000000000","message":"If your doc string has only one line move lower quotes in it.","commit_id":"8bc4b290e69fe1bfe96899d76479becf540ad283"}],"ceilometer/hardware/inspector/snmp.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"9e4fea925fabf8099806e2c66b17064bc1271448","unresolved":false,"context_lines":[{"line_number":28,"context_line":"OPTS \u003d ["},{"line_number":29,"context_line":"    cfg.StrOpt(\u0027snmpd_readonly_user_name\u0027,"},{"line_number":30,"context_line":"               default\u003d\u0027ro_snmp_user\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027SNMPd user name of all nodes running in Overcloud.\u0027),"},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027snmpd_readonly_user_password\u0027,"},{"line_number":33,"context_line":"               default\u003d\u0027password\u0027,"},{"line_number":34,"context_line":"               help\u003d\u0027SNMPd password of all the nodes running in Overcloud\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_6f4182a8","line":31,"updated":"2014-05-06 15:05:13.000000000","message":"Probably best not to make these so TripleO-specific (i.e. the mention of the Overcloud).","commit_id":"88d65ce8eea3490272299c6842d10e21e6d6d21c"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"4c081a704a01f24b322dbd5ffc3480226969530c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"OPTS \u003d ["},{"line_number":29,"context_line":"    cfg.StrOpt(\u0027snmpd_readonly_user_name\u0027,"},{"line_number":30,"context_line":"               default\u003d\u0027ro_snmp_user\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027SNMPd user name of all nodes running in Overcloud.\u0027),"},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027snmpd_readonly_user_password\u0027,"},{"line_number":33,"context_line":"               default\u003d\u0027password\u0027,"},{"line_number":34,"context_line":"               help\u003d\u0027SNMPd password of all the nodes running in Overcloud\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_c76a2219","line":31,"in_reply_to":"9ad9bd40_6f4182a8","updated":"2014-05-20 09:12:36.000000000","message":"Done","commit_id":"88d65ce8eea3490272299c6842d10e21e6d6d21c"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"3ba337ee98d01b2b524642038d81078744e40cf7","unresolved":false,"context_lines":[{"line_number":28,"context_line":"OPTS \u003d ["},{"line_number":29,"context_line":"    cfg.StrOpt(\u0027snmpd_readonly_user_name\u0027,"},{"line_number":30,"context_line":"               default\u003d\u0027ro_snmp_user\u0027,"},{"line_number":31,"context_line":"               help\u003d\u0027SNMPd user name of all nodes running in Overcloud.\u0027),"},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027snmpd_readonly_user_password\u0027,"},{"line_number":33,"context_line":"               default\u003d\u0027password\u0027,"},{"line_number":34,"context_line":"               help\u003d\u0027SNMPd password of all the nodes running in Overcloud\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_f3d6e1c4","line":31,"in_reply_to":"9ad9bd40_6f4182a8","updated":"2014-05-08 05:51:45.000000000","message":"agreed with eglynn.","commit_id":"88d65ce8eea3490272299c6842d10e21e6d6d21c"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"51dccd483bc9cb8ae91fa0b996ad005109fe4aff","unresolved":false,"context_lines":[{"line_number":32,"context_line":"               help\u003d\u0027SNMPd password of all the nodes running in cloud\u0027),"},{"line_number":33,"context_line":"]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"cfg.CONF.register_opts(OPTS)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class SNMPException(Exception):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_78ab73d8","line":35,"updated":"2014-05-28 07:19:34.000000000","message":"I\u0027m a little bit of concerned about this. This kind of configuration implies that all the nodes running snmpd are using the same username/passwd, which sometimes might not be the case.\n\nI think we should treat these 2 configurations as the default value, e.g. if there\u0027s no authentication specified in the resource URLs, then we refer to these 2.","commit_id":"15087a3b1f1118082d0f2088c8300e73eea30577"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"d9e57ba8e9f35a843fea2a842556a2e2f0389e1c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"               help\u003d\u0027SNMPd password of all the nodes running in cloud\u0027),"},{"line_number":33,"context_line":"]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"cfg.CONF.register_opts(OPTS)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class SNMPException(Exception):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_e93fd0d4","line":35,"updated":"2014-05-21 11:33:47.000000000","message":"Similar comment re. grouping, could we use a [hardware] or [snmp] section to avoid encoding that directly in the option name?","commit_id":"15087a3b1f1118082d0f2088c8300e73eea30577"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"5e699a33b6248401ba233f989b2937d0852fd477","unresolved":false,"context_lines":[{"line_number":32,"context_line":"               help\u003d\u0027SNMPd password of all the nodes running in cloud\u0027),"},{"line_number":33,"context_line":"]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"cfg.CONF.register_opts(OPTS)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class SNMPException(Exception):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_c35f2f0d","line":35,"in_reply_to":"3ae8d1ca_78ab73d8","updated":"2014-05-28 13:12:55.000000000","message":"@eglynn: grouping done, make sense to put it all under hardware\n@llu: So you would like to have it similar like the get_security_name? For TripleO deployments we should be save, cause we are setting one password everywhere.\n \nI am not sure it it will be the best to hardcode the passwords e.g. to pipeline, this might need some serious design, using e.g. barbican? \n\nCould we take this as prototype that will work great on TripleO and then design it for general usage?","commit_id":"15087a3b1f1118082d0f2088c8300e73eea30577"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"7ce306b4dc0b6373bcf7263f256482a1ed00e2eb","unresolved":false,"context_lines":[{"line_number":32,"context_line":"               help\u003d\u0027SNMPd password of all the nodes running in cloud\u0027),"},{"line_number":33,"context_line":"]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"cfg.CONF.register_opts(OPTS)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class SNMPException(Exception):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_ffdf1738","line":35,"in_reply_to":"3ae8d1ca_c35f2f0d","updated":"2014-06-11 07:13:17.000000000","message":"We discussed the barbican usage of storing the password in Atlanta summit, but since barbican is still in incubation, it\u0027s not appropriate to have a graduated project depend on a incubated one, so we need to wait barbican to graduate.\n\nSeems fair to me to push the generic usage to another patch.","commit_id":"15087a3b1f1118082d0f2088c8300e73eea30577"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"51dccd483bc9cb8ae91fa0b996ad005109fe4aff","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        ret \u003d func("},{"line_number":104,"context_line":"            cmdgen.UsmUserData("},{"line_number":105,"context_line":"                cfg.CONF.snmpd_readonly_user_name,"},{"line_number":106,"context_line":"                authKey\u003dcfg.CONF.snmpd_readonly_user_password),"},{"line_number":107,"context_line":"            cmdgen.UdpTransportTarget((host.hostname,"},{"line_number":108,"context_line":"                                       host.port or self._port)),"},{"line_number":109,"context_line":"            oid)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_b8e41b0e","line":106,"updated":"2014-05-28 07:19:34.000000000","message":"Since UsmUserData is for snmpV3 only, though I know all most snmp deployments support snmp V3, just think it would be better to make supporting CommunityData for snmp v1/v2c only as on option.\n\nHowever this doesn\u0027t worth blocking this patch.","commit_id":"15087a3b1f1118082d0f2088c8300e73eea30577"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"5e699a33b6248401ba233f989b2937d0852fd477","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        ret \u003d func("},{"line_number":104,"context_line":"            cmdgen.UsmUserData("},{"line_number":105,"context_line":"                cfg.CONF.snmpd_readonly_user_name,"},{"line_number":106,"context_line":"                authKey\u003dcfg.CONF.snmpd_readonly_user_password),"},{"line_number":107,"context_line":"            cmdgen.UdpTransportTarget((host.hostname,"},{"line_number":108,"context_line":"                                       host.port or self._port)),"},{"line_number":109,"context_line":"            oid)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_83cb6771","line":106,"in_reply_to":"3ae8d1ca_b8e41b0e","updated":"2014-05-28 13:12:55.000000000","message":"If you are able to make the patch, it would be great.\n\nFor TripleO we will have only v3, plus we will be relying on some v3 features like bulk requests.","commit_id":"15087a3b1f1118082d0f2088c8300e73eea30577"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"320ca81638cc41c37546c36582b93c5ab8346788","unresolved":false,"context_lines":[{"line_number":32,"context_line":"               help\u003d\u0027SNMPd password of all the nodes running in cloud\u0027),"},{"line_number":33,"context_line":"]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"cfg.CONF.register_opts(OPTS, group\u003d\u0027hardware\u0027)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class SNMPException(Exception):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_bf7f4fdf","line":35,"updated":"2014-06-11 07:23:06.000000000","message":"How about change the group name to \u0027snmp\u0027, in case we have other hardware inspectors in the future?","commit_id":"40159af33bce30cfb178d5e784349f5848264429"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"150da2d4f35255064c3a6cae44f8e5f8a76500e6","unresolved":false,"context_lines":[{"line_number":32,"context_line":"               help\u003d\u0027SNMPd password of all the nodes running in cloud\u0027),"},{"line_number":33,"context_line":"]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"cfg.CONF.register_opts(OPTS, group\u003d\u0027hardware\u0027)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class SNMPException(Exception):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_e2f7c0d2","line":35,"in_reply_to":"1ae5cdf2_297bedbe","updated":"2014-06-17 11:46:27.000000000","message":"Ok, I will do this.\n\nI think readonly_user_name, is more precise than just username, it is also general enough.","commit_id":"40159af33bce30cfb178d5e784349f5848264429"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"a1055f7ced76b536c2ebc8ccae5f748a6adac5d4","unresolved":false,"context_lines":[{"line_number":32,"context_line":"               help\u003d\u0027SNMPd password of all the nodes running in cloud\u0027),"},{"line_number":33,"context_line":"]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"cfg.CONF.register_opts(OPTS, group\u003d\u0027hardware\u0027)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class SNMPException(Exception):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_297bedbe","line":35,"in_reply_to":"1ae5cdf2_60c1a82e","updated":"2014-06-12 01:09:33.000000000","message":"@Ladislav, I have another thought on these 2 config options. How about we move them into the tripleO discover, and construct the resource url there as scheme://user:pass@ip, and pass the url here and let the snmp inspector extract the user/pass info from the url. This way, we can allow both the TripleO use case and other use case where admin can set up the resources in the pipeline file with different user/password for different host.","commit_id":"40159af33bce30cfb178d5e784349f5848264429"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"106f07a177b7cf157c56772c9b4f7ce5053a2e3d","unresolved":false,"context_lines":[{"line_number":32,"context_line":"               help\u003d\u0027SNMPd password of all the nodes running in cloud\u0027),"},{"line_number":33,"context_line":"]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"cfg.CONF.register_opts(OPTS, group\u003d\u0027hardware\u0027)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class SNMPException(Exception):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_60c1a82e","line":35,"in_reply_to":"1ae5cdf2_a52d8248","updated":"2014-06-11 08:44:32.000000000","message":"The url_scheme option is used to select the inspector, we should leave that in the hardware group. But I think these two are too snmp specific, unless many future inspector would use the same options. \n\nHow about re-naming these 2 to \u0027username\u0027 and \u0027password\u0027 and leave them in the hardware group, so that future inspector might be able to use them too? And maybe we should move them to ceilometer.hardware.inspector.base in that case.","commit_id":"40159af33bce30cfb178d5e784349f5848264429"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"a2c28035462f1c93770442aa56b4a65b921f699f","unresolved":false,"context_lines":[{"line_number":32,"context_line":"               help\u003d\u0027SNMPd password of all the nodes running in cloud\u0027),"},{"line_number":33,"context_line":"]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"cfg.CONF.register_opts(OPTS, group\u003d\u0027hardware\u0027)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class SNMPException(Exception):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_a52d8248","line":35,"in_reply_to":"1ae5cdf2_bf7f4fdf","updated":"2014-06-11 08:14:08.000000000","message":"Hm I picked [hardware], so we can just switch to something else. \n\nCause there is a URL scheme config in https://review.openstack.org/#/c/92370/5/ceilometer/hardware/discovery.py\n\nThat would mean you can pick just one. You would write another inspector and define readonly_user_name and password to something else. \n\nIf it would be under [snmp] the url_scheme wouldn\u0027t make sense then right?","commit_id":"40159af33bce30cfb178d5e784349f5848264429"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"eb68ab4086893d5e395c675783cbab10582b6ace","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            ret_func \u003d lambda x: x"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        ret \u003d func("},{"line_number":90,"context_line":"            self._get_auth_strategy(host),"},{"line_number":91,"context_line":"            cmdgen.UdpTransportTarget((host.hostname,"},{"line_number":92,"context_line":"                                       host.port or self._port)),"},{"line_number":93,"context_line":"            oid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_4664ec48","line":90,"updated":"2014-07-02 12:10:19.000000000","message":"Please, write self._get_auth_strategy at line #89. It is not more than 80 letters but looks more clear I think.","commit_id":"e80d5c1b217bd001c6009c9adf001b9c5e497831"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"35f3b519b4f1456e550e24aa421ddcd32ff6d8cb","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            ret_func \u003d lambda x: x"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        ret \u003d func("},{"line_number":90,"context_line":"            self._get_auth_strategy(host),"},{"line_number":91,"context_line":"            cmdgen.UdpTransportTarget((host.hostname,"},{"line_number":92,"context_line":"                                       host.port or self._port)),"},{"line_number":93,"context_line":"            oid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_44859dab","line":90,"in_reply_to":"baada198_4664ec48","updated":"2014-07-03 09:26:38.000000000","message":"ok will do","commit_id":"e80d5c1b217bd001c6009c9adf001b9c5e497831"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"eb68ab4086893d5e395c675783cbab10582b6ace","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            return ret_func(data)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def _get_auth_strategy(self, host):"},{"line_number":103,"context_line":"        if host.password:"},{"line_number":104,"context_line":"            auth_strategy \u003d cmdgen.UsmUserData(host.username,"},{"line_number":105,"context_line":"                                               authKey\u003dhost.password)"},{"line_number":106,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_01473e4c","line":103,"updated":"2014-07-02 12:10:19.000000000","message":"maybe you can call \n\"auth_strategy \u003d cmdgen.UsmUserData(host.username,                                            authKey\u003dhost.password)\" instead this \"if\" construction?","commit_id":"e80d5c1b217bd001c6009c9adf001b9c5e497831"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"35f3b519b4f1456e550e24aa421ddcd32ff6d8cb","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            return ret_func(data)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def _get_auth_strategy(self, host):"},{"line_number":103,"context_line":"        if host.password:"},{"line_number":104,"context_line":"            auth_strategy \u003d cmdgen.UsmUserData(host.username,"},{"line_number":105,"context_line":"                                               authKey\u003dhost.password)"},{"line_number":106,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_64ab811d","line":103,"in_reply_to":"baada198_01473e4c","updated":"2014-07-03 09:26:38.000000000","message":"not sure I follow, there are two strategies, so the condition is needed.","commit_id":"e80d5c1b217bd001c6009c9adf001b9c5e497831"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"1e3434ea7537025be5a84c7a95ea1bdbd3c873a5","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            auth_strategy \u003d cmdgen.UsmUserData(host.username,"},{"line_number":105,"context_line":"                                               authKey\u003dhost.password)"},{"line_number":106,"context_line":"        else:"},{"line_number":107,"context_line":"            auth_strategy \u003d cmdgen.CommunityData(host.username)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        return auth_strategy"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_d51fc46e","line":107,"updated":"2014-07-10 07:31:02.000000000","message":"in case host.username is none, we should use \u0027public\u0027 as default here, e.g.\n\ncmd.CommunityData(host.username or \u0027public\u0027)","commit_id":"93575b14895cf837cc33b93a214cbd7ab584cf1a"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"7ddb1d9e93db706cc6c8130f81169ec8a1bffcb8","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            auth_strategy \u003d cmdgen.UsmUserData(host.username,"},{"line_number":105,"context_line":"                                               authKey\u003dhost.password)"},{"line_number":106,"context_line":"        else:"},{"line_number":107,"context_line":"            auth_strategy \u003d cmdgen.CommunityData(host.username)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        return auth_strategy"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"baada198_4d303d9e","line":107,"in_reply_to":"baada198_d51fc46e","updated":"2014-07-25 09:55:41.000000000","message":"Done","commit_id":"93575b14895cf837cc33b93a214cbd7ab584cf1a"}],"ceilometer/nova_client.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"9e4fea925fabf8099806e2c66b17064bc1271448","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    @logged"},{"line_number":118,"context_line":"    def instance_get_all(self):"},{"line_number":119,"context_line":"        \"\"\"Returns list of instances on particular host.\"\"\""},{"line_number":120,"context_line":"        search_opts \u003d {\u0027all_tenants\u0027: True}"},{"line_number":121,"context_line":"        return self.nova_client.servers.list("},{"line_number":122,"context_line":"            detailed\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_cfb44e37","line":119,"updated":"2014-05-06 15:05:13.000000000","message":"Copied docstr from instance_get_all_by_host, should be say:\n\n  \"\"\"Returns list of all instances.\"\"\"","commit_id":"88d65ce8eea3490272299c6842d10e21e6d6d21c"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"4c081a704a01f24b322dbd5ffc3480226969530c","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    @logged"},{"line_number":118,"context_line":"    def instance_get_all(self):"},{"line_number":119,"context_line":"        \"\"\"Returns list of instances on particular host.\"\"\""},{"line_number":120,"context_line":"        search_opts \u003d {\u0027all_tenants\u0027: True}"},{"line_number":121,"context_line":"        return self.nova_client.servers.list("},{"line_number":122,"context_line":"            detailed\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_c7d862f1","line":119,"in_reply_to":"9ad9bd40_cfb44e37","updated":"2014-05-20 09:12:36.000000000","message":"good catch","commit_id":"88d65ce8eea3490272299c6842d10e21e6d6d21c"}],"ceilometer/tests/hardware/inspector/test_snmp.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"d9e57ba8e9f35a843fea2a842556a2e2f0389e1c","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        host2 \u003d network_utils.urlsplit(\"snmp://foo:80?security_name\u003dfake\")"},{"line_number":222,"context_line":"        self.assertEqual(self.inspector._get_security_name(host2),"},{"line_number":223,"context_line":"                         \u0027fake\u0027)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def test_get_cmd_error(self):"},{"line_number":226,"context_line":"        self.useFixture(mockpatch.PatchObject("},{"line_number":227,"context_line":"            self.inspector, \u0027_memory_total_oid\u0027, new\u003d\u0027failure\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_6c682e88","side":"PARENT","line":224,"updated":"2014-05-21 11:33:47.000000000","message":"Do we need additional mock-based coverage for the new passwd-setting logic?","commit_id":"1779020170ebcc0e9f8bad82ad3117f849a1a147"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"5e699a33b6248401ba233f989b2937d0852fd477","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        host2 \u003d network_utils.urlsplit(\"snmp://foo:80?security_name\u003dfake\")"},{"line_number":222,"context_line":"        self.assertEqual(self.inspector._get_security_name(host2),"},{"line_number":223,"context_line":"                         \u0027fake\u0027)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def test_get_cmd_error(self):"},{"line_number":226,"context_line":"        self.useFixture(mockpatch.PatchObject("},{"line_number":227,"context_line":"            self.inspector, \u0027_memory_total_oid\u0027, new\u003d\u0027failure\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_03959732","side":"PARENT","line":224,"in_reply_to":"7adec928_6c682e88","updated":"2014-05-28 13:12:55.000000000","message":"Yeah I was thinking about that, but I am not sure what to test there exactly.","commit_id":"1779020170ebcc0e9f8bad82ad3117f849a1a147"}]}
