)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13273,"name":"Lena Novokshonova","email":"enovokshonova@mirantis.com","username":"enovokshonova"},"change_message_id":"ef9a9517f50a5a5ad03bc405ebea86d17d80c83d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     lzhijun \u003cshanling2004@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-11-17 15:29:45 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"For compute resource, expose instance\u0027s metadata information in resource_metadata"},{"line_number":8,"context_line":"Closes-Bug: 1391778"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Change-Id: I588aaf22a0e8593042dad4bbc37be27adc96c2b4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5a890539_97cf8755","line":7,"updated":"2014-11-17 11:54:41.000000000","message":"The first line should be limited to 50 characters, for more information https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_GIT_commit_message_structure","commit_id":"0f3b3f505505bd056958b365a6c9dc48b404ec19"},{"author":{"_account_id":6924,"name":"Pradeep Kilambi","email":"pkilambi@redhat.com","username":"pkilambi"},"change_message_id":"8474df44095311a7520c74bb2b084421ca4d4b07","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     BrianLing \u003cshanling2004@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-11-17 14:28:58 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"For compute resource, expose instance\u0027s metadata information in resource_metadata"},{"line_number":8,"context_line":"The related bug id: https://bugs.launchpad.net/ceilometer/+bug/1391778"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Closes-Bug: 1391778"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a890539_e245506f","line":7,"updated":"2014-11-25 21:22:27.000000000","message":"Please follow the commit message guidelines. The first line should be limited to 50 chars. https://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"72df6551a4c768161b92ae10c2bf2758c092344a"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"6a1d3427cad005c351ba446c47ac20f989034681","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2014-11-17 14:28:58 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"For compute resource, expose instance\u0027s metadata information in resource_metadata"},{"line_number":8,"context_line":"The related bug id: https://bugs.launchpad.net/ceilometer/+bug/1391778"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Closes-Bug: 1391778"},{"line_number":11,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a890539_4952db67","line":8,"updated":"2014-11-17 15:30:51.000000000","message":"this line is not needed since bug id already pointed out in L10","commit_id":"72df6551a4c768161b92ae10c2bf2758c092344a"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"6a1d3427cad005c351ba446c47ac20f989034681","unresolved":false,"context_lines":[{"line_number":8,"context_line":"The related bug id: https://bugs.launchpad.net/ceilometer/+bug/1391778"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Closes-Bug: 1391778"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I588aaf22a0e8593042dad4bbc37be27adc96c2b4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a890539_29de6fdd","line":11,"updated":"2014-11-17 15:30:51.000000000","message":"nit: we usually put tags in last paragraph, so it would be nice if L11 is removed","commit_id":"72df6551a4c768161b92ae10c2bf2758c092344a"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"1238f37c1b5f9346a8dfa3d29fd766a6d70f989f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"publish_samples function. Then it\u0027s available for customized publisher"},{"line_number":14,"context_line":"to access metadata."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I588aaf22a0e8593042dad4bbc37be27adc96c2b4"},{"line_number":17,"context_line":"Closes-bug: #1391778"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a961159_a10a0177","line":16,"updated":"2015-01-13 07:51:02.000000000","message":"-1: since new option is introduce, please add DocImpact tag, and mention it in commit message about the new config option","commit_id":"90b043b042bc8d1fa908d6962057a6d5f05eb989"}],"ceilometer/compute/pollsters/net.py":[{"author":{"_account_id":13273,"name":"Lena Novokshonova","email":"enovokshonova@mirantis.com","username":"enovokshonova"},"change_message_id":"50cc29f3b1eda058de3869fbd54835a3202dc017","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        resource_metadata[\u0027instance_id\u0027] \u003d instance.id"},{"line_number":46,"context_line":"        resource_metadata[\u0027instance_type\u0027] \u003d (instance.flavor[\u0027id\u0027] if"},{"line_number":47,"context_line":"                                              instance.flavor else None)"},{"line_number":48,"context_line":"        resource_metadata[\u0027raw_metadata\u0027] \u003d instance.metadata if instance.metadata else None"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        compute_util.add_reserved_user_metadata(instance.metadata,"},{"line_number":51,"context_line":"                                                resource_metadata)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_b7ac838d","line":48,"updated":"2014-11-17 11:48:32.000000000","message":"This line is too long, max length of string is 79 characters","commit_id":"0f3b3f505505bd056958b365a6c9dc48b404ec19"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"39854ee064ba51dfaebfb2be772708307380e025","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        resource_metadata[\u0027instance_id\u0027] \u003d instance.id"},{"line_number":46,"context_line":"        resource_metadata[\u0027instance_type\u0027] \u003d (instance.flavor[\u0027id\u0027] if"},{"line_number":47,"context_line":"                                              instance.flavor else None)"},{"line_number":48,"context_line":"        resource_metadata[\u0027raw_metadata\u0027] \u003d instance.metadata if instance.metadata else None"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        compute_util.add_reserved_user_metadata(instance.metadata,"},{"line_number":51,"context_line":"                                                resource_metadata)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_6de088fa","line":48,"in_reply_to":"5a890539_b7ac838d","updated":"2014-11-17 13:05:56.000000000","message":"You may simplify this expression: resource_metadata[\u0027raw_metadata\u0027] \u003d instance.metadata or None","commit_id":"0f3b3f505505bd056958b365a6c9dc48b404ec19"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"6a1d3427cad005c351ba446c47ac20f989034681","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        resource_metadata[\u0027instance_id\u0027] \u003d instance.id"},{"line_number":46,"context_line":"        resource_metadata[\u0027instance_type\u0027] \u003d (instance.flavor[\u0027id\u0027] if"},{"line_number":47,"context_line":"                                              instance.flavor else None)"},{"line_number":48,"context_line":"        resource_metadata[\u0027raw_metadata\u0027] \u003d instance.metadata if instance.metadata else None"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        compute_util.add_reserved_user_metadata(instance.metadata,"},{"line_number":51,"context_line":"                                                resource_metadata)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_297aefbc","line":48,"updated":"2014-11-17 15:30:51.000000000","message":"I think instance.metadata is a dictionary here\n\nusually, we keep a field type consistent, so, it is better to use {} instead of None, then developer can easily use resource_metadata[\u0027raw_metadata\u0027].get(\u0027something\u0027), and etc\n\ncorrect me if I\u0027m wrong","commit_id":"72df6551a4c768161b92ae10c2bf2758c092344a"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"38d0da8ae1ad3915545415471a20f79436cea65c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        resource_metadata[\u0027instance_id\u0027] \u003d instance.id"},{"line_number":46,"context_line":"        resource_metadata[\u0027instance_type\u0027] \u003d (instance.flavor[\u0027id\u0027] if"},{"line_number":47,"context_line":"                                              instance.flavor else None)"},{"line_number":48,"context_line":"        resource_metadata[\u0027raw_metadata\u0027] \u003d instance.metadata if instance.metadata else None"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        compute_util.add_reserved_user_metadata(instance.metadata,"},{"line_number":51,"context_line":"                                                resource_metadata)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_0338b43b","line":48,"updated":"2014-11-17 14:37:33.000000000","message":"This line is still be too long 79 chars is max length. \n\nIlia have proposed a good simplifying:\nresource_metadata[\u0027raw_metadata\u0027] \u003d instance.metadata or None","commit_id":"72df6551a4c768161b92ae10c2bf2758c092344a"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"333fd708d4572529b6d5a9900493f7ac3f69ab52","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        resource_metadata[\u0027instance_id\u0027] \u003d instance.id"},{"line_number":46,"context_line":"        resource_metadata[\u0027instance_type\u0027] \u003d (instance.flavor[\u0027id\u0027] if"},{"line_number":47,"context_line":"                                              instance.flavor else None)"},{"line_number":48,"context_line":"        resource_metadata[\u0027raw_metadata\u0027] \u003d instance.metadata if instance.metadata else None"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        compute_util.add_reserved_user_metadata(instance.metadata,"},{"line_number":51,"context_line":"                                                resource_metadata)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_77a4d24a","line":48,"in_reply_to":"5a890539_297aefbc","updated":"2014-11-17 16:17:00.000000000","message":"Agree with ZhiQiang Fan, using {} is predictable behavior in this case and better than None","commit_id":"72df6551a4c768161b92ae10c2bf2758c092344a"}],"ceilometer/compute/pollsters/util.py":[{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"39854ee064ba51dfaebfb2be772708307380e025","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        \u0027host\u0027: instance.hostId,"},{"line_number":44,"context_line":"        \u0027flavor\u0027: instance.flavor,"},{"line_number":45,"context_line":"        \u0027status\u0027: instance.status.lower(),"},{"line_number":46,"context_line":"        \u0027raw_metadata\u0027: (instance.metadata if instance.metadata else None),"},{"line_number":47,"context_line":"    }"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    # Image properties"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_edeb98d9","line":46,"updated":"2014-11-17 13:05:56.000000000","message":"Same here","commit_id":"0f3b3f505505bd056958b365a6c9dc48b404ec19"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"6a1d3427cad005c351ba446c47ac20f989034681","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        \u0027host\u0027: instance.hostId,"},{"line_number":44,"context_line":"        \u0027flavor\u0027: instance.flavor,"},{"line_number":45,"context_line":"        \u0027status\u0027: instance.status.lower(),"},{"line_number":46,"context_line":"        \u0027raw_metadata\u0027: (instance.metadata if instance.metadata else None),"},{"line_number":47,"context_line":"    }"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    # Image properties"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_495c9b4b","line":46,"updated":"2014-11-17 15:30:51.000000000","message":"ditto","commit_id":"72df6551a4c768161b92ae10c2bf2758c092344a"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"38d0da8ae1ad3915545415471a20f79436cea65c","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        \u0027host\u0027: instance.hostId,"},{"line_number":44,"context_line":"        \u0027flavor\u0027: instance.flavor,"},{"line_number":45,"context_line":"        \u0027status\u0027: instance.status.lower(),"},{"line_number":46,"context_line":"        \u0027raw_metadata\u0027: (instance.metadata if instance.metadata else None),"},{"line_number":47,"context_line":"    }"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    # Image properties"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_23577059","line":46,"updated":"2014-11-17 14:37:33.000000000","message":"ditto\n\nIt seems that here we could use some simplification:\n\u0027raw_metadata\u0027: instance.metadata or None,","commit_id":"72df6551a4c768161b92ae10c2bf2758c092344a"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"333fd708d4572529b6d5a9900493f7ac3f69ab52","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        \u0027host\u0027: instance.hostId,"},{"line_number":44,"context_line":"        \u0027flavor\u0027: instance.flavor,"},{"line_number":45,"context_line":"        \u0027status\u0027: instance.status.lower(),"},{"line_number":46,"context_line":"        \u0027raw_metadata\u0027: (instance.metadata if instance.metadata else None),"},{"line_number":47,"context_line":"    }"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    # Image properties"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_97669e28","line":46,"in_reply_to":"5a890539_495c9b4b","updated":"2014-11-17 16:17:00.000000000","message":"ditto","commit_id":"72df6551a4c768161b92ae10c2bf2758c092344a"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"a1cece1bdad0ee9daba89ba087db31ac8fb1efe1","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        \u0027host\u0027: instance.hostId,"},{"line_number":44,"context_line":"        \u0027flavor\u0027: instance.flavor,"},{"line_number":45,"context_line":"        \u0027status\u0027: instance.status.lower(),"},{"line_number":46,"context_line":"        \u0027raw_metadata\u0027: instance.metadata or {},"},{"line_number":47,"context_line":"    }"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    # Image properties"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_475e6214","line":46,"updated":"2015-01-07 08:11:06.000000000","message":"does user_metadata doesn\u0027t statisfy your need? see https://github.com/openstack/ceilometer/blob/master/ceilometer/compute/util.py#L34\n\nor if you want all metadata, is it better to enabled by a configurable options? since metadata can be large and unpredictable, deployer should be able to decide use it or not","commit_id":"5823562c6f2f1648630419dd0c4d02f84879d96b"}],"ceilometer/compute/util.py":[{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"f02da6731a42313e2cd92a50b8511aed00e61e69","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        )"},{"line_number":48,"context_line":"        user_metadata.update(md)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    for cared_key in cfg.CONF.reserved_metadata_caredkey:"},{"line_number":51,"context_line":"        md \u003d dict("},{"line_number":52,"context_line":"            (k.replace(\u0027.\u0027, \u0027_\u0027),"},{"line_number":53,"context_line":"             v[:limit] if isinstance(v, six.string_types) else v)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_a155a1fb","line":50,"updated":"2015-01-13 07:24:46.000000000","message":"Maybe I\u0027m wrong but metadata will have duplication of fields which start with metering in default case, isn\u0027t it? \n\"metering.field\" from cared loop and \"field\" from reserved loop, for example.\nI think it isn\u0027t right. Maybe cared fields should to define strictly? \"k \u003d\u003d cared_key\" instead \"k.startswith(cared_key)\"?","commit_id":"bf09d72588db519eb38e1582bcb3a2d228602708"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"eb385b59ae92389d0022a1661482ab8b4ceff52d","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import six"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"OPTS \u003d ["},{"line_number":23,"context_line":"    cfg.ListOpt(\u0027reserved_metadata_namespace\u0027,"},{"line_number":24,"context_line":"                default\u003d[\u0027metering.\u0027],"},{"line_number":25,"context_line":"                help\u003d\u0027List of metadata prefixes reserved for metering use.\u0027),"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_25c9845a","line":22,"updated":"2015-01-14 15:08:13.000000000","message":"Looks like that we don\u0027t have any docs about these magic configs. Not sure that it should be done in this patch... but it would be great :)","commit_id":"911ffe960267d9049c442e2cd90c9f9143ee64d1"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"9895ae0fd20c9db2afef7aa22f79c1e690ce4ef5","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import six"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"OPTS \u003d ["},{"line_number":23,"context_line":"    cfg.ListOpt(\u0027reserved_metadata_namespace\u0027,"},{"line_number":24,"context_line":"                default\u003d[\u0027metering.\u0027],"},{"line_number":25,"context_line":"                help\u003d\u0027List of metadata prefixes reserved for metering use.\u0027),"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_5522a954","line":22,"in_reply_to":"3a961159_25c9845a","updated":"2015-01-15 01:07:55.000000000","message":"@Nadya Privalova\n\nhere is a simple doc: http://docs.openstack.org/developer/ceilometer/measurements.html#user-defined-sample-metadata-for-nova\n\nbut we could write more","commit_id":"911ffe960267d9049c442e2cd90c9f9143ee64d1"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"f4313039be6c06fe392cb1e7838b34dda0617682","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import six"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"OPTS \u003d ["},{"line_number":23,"context_line":"    cfg.ListOpt(\u0027reserved_metadata_namespace\u0027,"},{"line_number":24,"context_line":"                default\u003d[\u0027metering.\u0027],"},{"line_number":25,"context_line":"                help\u003d\u0027List of metadata prefixes reserved for metering use.\u0027),"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_7636b903","line":22,"in_reply_to":"3a961159_5522a954","updated":"2015-01-15 13:27:25.000000000","message":"Ah, great! I didn\u0027t find it. So could you please add there a description about \u0027reserved_metadata_caredkey\u0027?","commit_id":"911ffe960267d9049c442e2cd90c9f9143ee64d1"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"de153528fbeaea414891037c92617c23e4d99bcb","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import six"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# Below config is for collecting metadata user defined in nova"},{"line_number":23,"context_line":"# and storing it to Sample for future use according to user\u0027s requirement."},{"line_number":24,"context_line":"# Such as use it as a OpenTSDB tag for a metrics"},{"line_number":25,"context_line":"OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":14,"id":"3a961159_ee4666a6","line":22,"updated":"2015-01-15 03:22:06.000000000","message":"maybe current only nova case uses it, but not only for nova?","commit_id":"ddab3b5d34e74289f91d8ba77509f23040fd61d0"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"de153528fbeaea414891037c92617c23e4d99bcb","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# Below config is for collecting metadata user defined in nova"},{"line_number":23,"context_line":"# and storing it to Sample for future use according to user\u0027s requirement."},{"line_number":24,"context_line":"# Such as use it as a OpenTSDB tag for a metrics"},{"line_number":25,"context_line":"OPTS \u003d ["},{"line_number":26,"context_line":"    cfg.ListOpt(\u0027reserved_metadata_namespace\u0027,"},{"line_number":27,"context_line":"                default\u003d[\u0027metering.\u0027],"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a961159_4ee4daa7","line":24,"updated":"2015-01-15 03:22:06.000000000","message":"a metrics?","commit_id":"ddab3b5d34e74289f91d8ba77509f23040fd61d0"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"de153528fbeaea414891037c92617c23e4d99bcb","unresolved":false,"context_lines":[{"line_number":30,"context_line":"               default\u003d256,"},{"line_number":31,"context_line":"               help\u003d\u0027Limit on length of reserved metadata values.\u0027),"},{"line_number":32,"context_line":"    cfg.ListOpt(\u0027reserved_metadata_caredkey\u0027,"},{"line_number":33,"context_line":"                default\u003d[],"},{"line_number":34,"context_line":"                help\u003d\u0027List of metadata key reserved for metering use.\u0027),"},{"line_number":35,"context_line":"]"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3a961159_eef4a656","line":33,"updated":"2015-01-15 03:22:06.000000000","message":"nice catch :)","commit_id":"ddab3b5d34e74289f91d8ba77509f23040fd61d0"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"e4d2529430a291158db5c232df2fc534f9b9547a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    cfg.IntOpt(\u0027reserved_metadata_length\u0027,"},{"line_number":30,"context_line":"               default\u003d256,"},{"line_number":31,"context_line":"               help\u003d\u0027Limit on length of reserved metadata values.\u0027),"},{"line_number":32,"context_line":"    cfg.ListOpt(\u0027reserved_metadata_caredkey\u0027,"},{"line_number":33,"context_line":"                default\u003d[],"},{"line_number":34,"context_line":"                help\u003d\u0027List of metadata key reserved for metering use.\u0027),"},{"line_number":35,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a961159_0f7c5770","line":32,"updated":"2015-01-16 11:23:01.000000000","message":"A \u0027_\u0027 is missing from \"caredkey\u0027 in the name of this conf parameter. Although I think \u0027reserved_metadata_keys\u0027 would be enough.","commit_id":"713b46d7c9af7ce800ad64a9ed96d93d536599fd"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"19b327a028e6ddfd3be7764d93db80fa859e819e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"               default\u003d256,"},{"line_number":31,"context_line":"               help\u003d\u0027Limit on length of reserved metadata values.\u0027),"},{"line_number":32,"context_line":"    cfg.ListOpt(\u0027reserved_metadata_caredkey\u0027,"},{"line_number":33,"context_line":"                default\u003d[],"},{"line_number":34,"context_line":"                help\u003d\u0027List of metadata key reserved for metering use.\u0027),"},{"line_number":35,"context_line":"]"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3a961159_d10e9731","line":33,"updated":"2015-01-15 13:32:32.000000000","message":"nit: key \u003d\u003e keys","commit_id":"713b46d7c9af7ce800ad64a9ed96d93d536599fd"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"e4d2529430a291158db5c232df2fc534f9b9547a","unresolved":false,"context_lines":[{"line_number":31,"context_line":"               help\u003d\u0027Limit on length of reserved metadata values.\u0027),"},{"line_number":32,"context_line":"    cfg.ListOpt(\u0027reserved_metadata_caredkey\u0027,"},{"line_number":33,"context_line":"                default\u003d[],"},{"line_number":34,"context_line":"                help\u003d\u0027List of metadata key reserved for metering use.\u0027),"},{"line_number":35,"context_line":"]"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"cfg.CONF.register_opts(OPTS)"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a961159_0fe7f7e3","line":34,"updated":"2015-01-16 11:23:01.000000000","message":"I would add to the help string that these metadata keys are additional to the ones included in the namespace.","commit_id":"713b46d7c9af7ce800ad64a9ed96d93d536599fd"}],"ceilometer/tests/compute/pollsters/base.py":[{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"eb385b59ae92389d0022a1661482ab8b4ceff52d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.instance.id \u003d 1"},{"line_number":37,"context_line":"        self.instance.flavor \u003d {\u0027name\u0027: \u0027m1.small\u0027, \u0027id\u0027: 2, \u0027vcpus\u0027: 1,"},{"line_number":38,"context_line":"                                \u0027ram\u0027: 512, \u0027disk\u0027: 20, \u0027ephemeral\u0027: 0}"},{"line_number":39,"context_line":"        self.instance.status \u003d \u0027active\u0027"},{"line_number":40,"context_line":"        self.instance.metadata \u003d {\u0027fqdn\u0027: \u0027vm_fqdn\u0027}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        patch_virt \u003d mockpatch.Patch("}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_a511f4b0","line":39,"updated":"2015-01-14 15:08:13.000000000","message":"One plea from me: could you please test \u0027reserved_metadata_namespace\u0027 as well? It\u0027s not tested now... E.g. case self.instance.metadata \u003d {\u0027fqdn\u0027: \u0027vm_fqdn\u0027, \u0027metering.a\u0027: \u0027b\u0027, \u0027a\u0027: \u0027b\u0027}. If I understand correctly result metadata should be {\u0027fqdn\u0027: \u0027vm_fqdn\u0027, \u0027a\u0027: \u0027b\u0027}","commit_id":"911ffe960267d9049c442e2cd90c9f9143ee64d1"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"9895ae0fd20c9db2afef7aa22f79c1e690ce4ef5","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        self.instance.id \u003d 1"},{"line_number":37,"context_line":"        self.instance.flavor \u003d {\u0027name\u0027: \u0027m1.small\u0027, \u0027id\u0027: 2, \u0027vcpus\u0027: 1,"},{"line_number":38,"context_line":"                                \u0027ram\u0027: 512, \u0027disk\u0027: 20, \u0027ephemeral\u0027: 0}"},{"line_number":39,"context_line":"        self.instance.status \u003d \u0027active\u0027"},{"line_number":40,"context_line":"        self.instance.metadata \u003d {\u0027fqdn\u0027: \u0027vm_fqdn\u0027}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        patch_virt \u003d mockpatch.Patch("}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_b5e3cd03","line":39,"in_reply_to":"3a961159_a511f4b0","updated":"2015-01-15 01:07:55.000000000","message":"with this patch, and (caredkey\u003dfqdn, namespace\u003dmetering.) then yes","commit_id":"911ffe960267d9049c442e2cd90c9f9143ee64d1"}],"ceilometer/tests/compute/pollsters/test_instance.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"c381891795857e2955ccb9f643b1a5708c3926ae","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from ceilometer.compute.pollsters import instance as pollsters_instance"},{"line_number":24,"context_line":"from ceilometer.tests.compute.pollsters import base"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from oslo.config import cfg"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class TestInstancePollster(base.TestPollsterBase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_ff6f4091","line":26,"updated":"2015-01-13 08:56:07.000000000","message":"-1: we usually put third party modules before self-project modules, which means you should put L26 to L21","commit_id":"e530f1a8b24089028574c2663610f8220df1b19a"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"c381891795857e2955ccb9f643b1a5708c3926ae","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def test_get_samples_instance(self):"},{"line_number":36,"context_line":"        mgr \u003d manager.AgentManager()"},{"line_number":37,"context_line":"        pollster \u003d pollsters_instance.InstancePollster()"},{"line_number":38,"context_line":"        cfg.CONF.reserved_metadata_caredkey \u003d [\u0027fqdn\u0027]"},{"line_number":39,"context_line":"        samples \u003d list(pollster.get_samples(mgr, {}, [self.instance]))"},{"line_number":40,"context_line":"        self.assertEqual(1, len(samples))"},{"line_number":41,"context_line":"        self.assertEqual(\u0027instance\u0027, samples[0].name)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a961159_df9a8461","line":38,"updated":"2015-01-13 08:56:07.000000000","message":"I\u0027m not sure if this is right, maybe consider set_override?","commit_id":"e530f1a8b24089028574c2663610f8220df1b19a"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"1d858b56769433e65730883af7b71b7335caa7dc","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import mock"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo.config import cfg"},{"line_number":23,"context_line":"from ceilometer.agent import manager"},{"line_number":24,"context_line":"from ceilometer.compute.pollsters import instance as pollsters_instance"},{"line_number":25,"context_line":"from ceilometer.tests.compute.pollsters import base"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_dae8d2b5","line":22,"updated":"2015-01-13 09:39:32.000000000","message":"-1: maybe my previous comment mentioned about line number is a bit confusing, the truth is, we organize import in the following style:\n\n    import builtin_mod_a\n    import builtin_mod_b\n\n    import third_party_mod_a\n    import third_party_mod_b\n\n    from ceilometer import x\n    from ceilometer import y\n\nI think pep8 will check this issue, so please run tox -epep8 in your local dev env if you can\n\nthanks","commit_id":"7cf609e7b234b1b6a19e446fdd40abf1c62f4201"},{"author":{"_account_id":14118,"name":"mizeng","email":"mizeng@ebaysf.com","username":"mizeng"},"change_message_id":"c88c8b159f1db25ee115b0278800bea6dcee5bd9","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import mock"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo.config import cfg"},{"line_number":23,"context_line":"from ceilometer.agent import manager"},{"line_number":24,"context_line":"from ceilometer.compute.pollsters import instance as pollsters_instance"},{"line_number":25,"context_line":"from ceilometer.tests.compute.pollsters import base"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_151eab74","line":22,"in_reply_to":"3a961159_dae8d2b5","updated":"2015-01-13 10:14:30.000000000","message":"Done","commit_id":"7cf609e7b234b1b6a19e446fdd40abf1c62f4201"},{"author":{"_account_id":7729,"name":"Ilya Tyaptin","email":"ityaptin@mirantis.com","username":"ityaptin"},"change_message_id":"961d2a56cbc7a0a6a39b145696d169b8f551c343","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def test_get_samples_instance(self):"},{"line_number":35,"context_line":"        mgr \u003d manager.AgentManager()"},{"line_number":36,"context_line":"        pollster \u003d pollsters_instance.InstancePollster()"},{"line_number":37,"context_line":"        cfg.CONF.reserved_metadata_caredkey \u003d [\u0027fqdn\u0027]"},{"line_number":38,"context_line":"        samples \u003d list(pollster.get_samples(mgr, {}, [self.instance]))"},{"line_number":39,"context_line":"        self.assertEqual(1, len(samples))"},{"line_number":40,"context_line":"        self.assertEqual(\u0027instance\u0027, samples[0].name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_9590db43","line":37,"updated":"2015-01-13 09:56:57.000000000","message":"I think it\u0027s better to use fixtures here.\nhttp://docs.openstack.org/developer/oslo.config/fixture.html\n\n1) \"from oslo.config import fixture as fixture_config\" instead \"from oslo.config import cfg\"\n2) After super at setUp: self.CONF \u003d self.useFixture(fixture_config.Config()).conf\n   self.CONF([], project\u003d\u0027ceilometer\u0027)\n3) \"self.CONF.set_override(\u0027reserved_metadata_caredkey\u0027, [\u0027fqdn\u0027])\" instead \"cfg.CONF.reserved_metadata_caredkey \u003d [\u0027fqdn\u0027]\"\n\nExample of fixtures using in ceilometer test you could find at ceilometer/tests/db.py","commit_id":"7cf609e7b234b1b6a19e446fdd40abf1c62f4201"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"ab0acceee50019c3940ac78a26624038c74d32c4","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @mock.patch(\u0027ceilometer.pipeline.setup_pipeline\u0027, mock.MagicMock())"},{"line_number":56,"context_line":"    def test_get_reserved_metadata_with_caredkey(self):"},{"line_number":57,"context_line":"        self.CONF \u003d self.useFixture(fixture_config.Config()).conf"},{"line_number":58,"context_line":"        self.CONF.set_override(\u0027reserved_metadata_caredkey\u0027, [\u0027fqdn\u0027])"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        mgr \u003d manager.AgentManager()"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_eabcd9b7","line":57,"updated":"2015-01-13 13:09:45.000000000","message":"-1, since you\u0027re creating a local variable, no need to set to attribute IIUC","commit_id":"206357ec35e8eeff880d11ddd3b021759568f9de"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"0122ba9bc863fc8bdfaebf4d03e460892f3decfb","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @mock.patch(\u0027ceilometer.pipeline.setup_pipeline\u0027, mock.MagicMock())"},{"line_number":56,"context_line":"    def test_get_reserved_metadata_with_caredkey(self):"},{"line_number":57,"context_line":"        self.CONF \u003d self.useFixture(fixture_config.Config()).conf"},{"line_number":58,"context_line":"        self.CONF.set_override(\u0027reserved_metadata_caredkey\u0027, [\u0027fqdn\u0027])"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        mgr \u003d manager.AgentManager()"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_949d1d69","line":57,"in_reply_to":"3a961159_eabcd9b7","updated":"2015-01-14 02:06:52.000000000","message":"I mean you can use local variable\n\ns/self.CONF/conf/\n\nI\u0027m not sure if it is better to move this to test.base, but use it in this place is ok to me","commit_id":"206357ec35e8eeff880d11ddd3b021759568f9de"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"ab0acceee50019c3940ac78a26624038c74d32c4","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        mgr \u003d manager.AgentManager()"},{"line_number":69,"context_line":"        pollster \u003d pollsters_instance.InstancePollster()"},{"line_number":70,"context_line":"        samples \u003d list(pollster.get_samples(mgr, {}, [self.instance]))"},{"line_number":71,"context_line":"        self.assertTrue(\u0027user_metadata\u0027 not in samples[0].resource_metadata)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_6a9aa963","line":71,"updated":"2015-01-13 13:09:45.000000000","message":"-1: use assertNotIn method","commit_id":"206357ec35e8eeff880d11ddd3b021759568f9de"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"de153528fbeaea414891037c92617c23e4d99bcb","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @mock.patch(\u0027ceilometer.pipeline.setup_pipeline\u0027, mock.MagicMock())"},{"line_number":56,"context_line":"    def test_get_reserved_metadata_with_caredkey(self):"},{"line_number":57,"context_line":"        self.CONF \u003d self.useFixture(fixture_config.Config()).conf"},{"line_number":58,"context_line":"        self.CONF.set_override(\u0027reserved_metadata_caredkey\u0027, [\u0027fqdn\u0027])"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        mgr \u003d manager.AgentManager()"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a961159_eea2e63d","line":57,"updated":"2015-01-15 03:22:06.000000000","message":"I still not agree the self.CONF for local used variable, see what others say","commit_id":"ddab3b5d34e74289f91d8ba77509f23040fd61d0"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"de153528fbeaea414891037c92617c23e4d99bcb","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        self.assertEqual({\u0027stack\u0027: \u00272cadc4b4-8789-123c-b4eg-edd2f0a9c128\u0027},"},{"line_number":73,"context_line":"                         samples[0].resource_metadata[\u0027user_metadata\u0027])"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        self.CONF \u003d self.useFixture(fixture_config.Config()).conf"},{"line_number":76,"context_line":"        self.CONF.set_override(\u0027reserved_metadata_namespace\u0027, [])"},{"line_number":77,"context_line":"        mgr \u003d manager.AgentManager()"},{"line_number":78,"context_line":"        pollster \u003d pollsters_instance.InstancePollster()"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a961159_4e693af7","line":75,"updated":"2015-01-15 03:22:06.000000000","message":"ditto","commit_id":"ddab3b5d34e74289f91d8ba77509f23040fd61d0"}],"doc/source/measurements.rst":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"9d72723befc73175f262460112e2c8fabe8ef94a","unresolved":false,"context_lines":[{"line_number":541,"context_line":""},{"line_number":542,"context_line":"::"},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"   reserved_metadata_keys\u003dfqdn"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"Note: The name of the metadata shouldn\u0027t exceed 256 characters otherwise it will be cut off."},{"line_number":547,"context_line":"Also, if it has \u0027.\u0027, this will be replaced by a \u0027_\u0027 in ceilometer."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3a961159_329ce8bf","line":544,"updated":"2015-01-19 10:39:33.000000000","message":"it would be nice if this doc reference the reserved_metadata_namespace option too","commit_id":"568717ae53e676b8b947bf139a0e22e9ddfc094d"}]}
