)]}'
{"ceilometer/storage/impl_hbase.py":[{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"2c8a94fcc754f2d1c9b838ffa1375fe63692bacd","unresolved":false,"context_lines":[{"line_number":248,"context_line":"                  \u0027f:project_id\u0027: data[\u0027project_id\u0027],"},{"line_number":249,"context_line":"                  \u0027f:message_id\u0027: data[\u0027message_id\u0027],"},{"line_number":250,"context_line":"                  \u0027f:resource_id\u0027: data[\u0027resource_id\u0027],"},{"line_number":251,"context_line":"                  \u0027f:source\u0027: data[\u0027source\u0027],"},{"line_number":252,"context_line":"                  \u0027f:recorded_at\u0027: recorded_at,"},{"line_number":253,"context_line":"                  # add in reversed_ts here for time range scan"},{"line_number":254,"context_line":"                  \u0027f:rts\u0027: str(rts)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAU3%2F%2F1O4%3D","line":251,"updated":"2014-02-24 15:46:22.000000000","message":"This will not be recorded to real HBase, I\u0027m afraid :( But I\u0027m too late anyway. Will fix in one of my patches","commit_id":"0c51a0a686d4843ce46488900ee433ec027b3325"}],"ceilometer/storage/models.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6114a2999192eb4b4144baa67c1e1adde1fd57b1","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        :param timestamp: the time of the measurement"},{"line_number":215,"context_line":"        :param resource_metadata: extra details about the resource"},{"line_number":216,"context_line":"        :param message_id: a message identifier"},{"line_number":217,"context_line":"        :param recorded_at: timestamp of when the sample was recored in storage"},{"line_number":218,"context_line":"        :param message_signature: a hash created from the rest of the"},{"line_number":219,"context_line":"                                  message data"},{"line_number":220,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2Bju4%3D","line":217,"updated":"2014-02-20 14:47:47.000000000","message":"/was recored/was recorded/","commit_id":"4ef9f41f0e872956fa43a7eaa0234a4f2b590873"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"01ca43d41be36ef14b765d6843ba6a1c625da549","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        :param timestamp: the time of the measurement"},{"line_number":215,"context_line":"        :param resource_metadata: extra details about the resource"},{"line_number":216,"context_line":"        :param message_id: a message identifier"},{"line_number":217,"context_line":"        :param recorded_at: timestamp of when the sample was recored in storage"},{"line_number":218,"context_line":"        :param message_signature: a hash created from the rest of the"},{"line_number":219,"context_line":"                                  message data"},{"line_number":220,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BjiM%3D","line":217,"in_reply_to":"AAAAUX%2F%2Bju4%3D","updated":"2014-02-20 15:02:41.000000000","message":"Done","commit_id":"4ef9f41f0e872956fa43a7eaa0234a4f2b590873"}],"ceilometer/storage/sqlalchemy/migrate_repo/versions/028_sample_recorded_at.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6114a2999192eb4b4144baa67c1e1adde1fd57b1","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from ceilometer.storage.sqlalchemy import models"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def upgrade(migrate_engine):"},{"line_number":22,"context_line":"    meta \u003d sqlalchemy.MetaData(bind\u003dmigrate_engine)"},{"line_number":23,"context_line":"    meter \u003d sqlalchemy.Table(\u0027meter\u0027, meta, autoload\u003dTrue)"},{"line_number":24,"context_line":"    c \u003d sqlalchemy.Column(\u0027recorded_at\u0027, models.PreciseTimestamp(),"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2Bjt8%3D","line":21,"updated":"2014-02-20 14:47:47.000000000","message":"we need to bump this up to 029... or 031 if you want to be nice and add it after my patches. :)","commit_id":"4ef9f41f0e872956fa43a7eaa0234a4f2b590873"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"01ca43d41be36ef14b765d6843ba6a1c625da549","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from ceilometer.storage.sqlalchemy import models"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def upgrade(migrate_engine):"},{"line_number":22,"context_line":"    meta \u003d sqlalchemy.MetaData(bind\u003dmigrate_engine)"},{"line_number":23,"context_line":"    meter \u003d sqlalchemy.Table(\u0027meter\u0027, meta, autoload\u003dTrue)"},{"line_number":24,"context_line":"    c \u003d sqlalchemy.Column(\u0027recorded_at\u0027, models.PreciseTimestamp(),"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2Bjig%3D","line":21,"in_reply_to":"AAAAUX%2F%2Bjt8%3D","updated":"2014-02-20 15:02:41.000000000","message":"Done","commit_id":"4ef9f41f0e872956fa43a7eaa0234a4f2b590873"}],"ceilometer/storage/sqlalchemy/models.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"81121c5b20aca5f119d4ba3afb80225c85997679","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    counter_unit \u003d Column(String(255))"},{"line_number":210,"context_line":"    counter_volume \u003d Column(Float(53))"},{"line_number":211,"context_line":"    timestamp \u003d Column(PreciseTimestamp(), default\u003dtimeutils.utcnow)"},{"line_number":212,"context_line":"    recorded_at \u003d Column(PreciseTimestamp(), default\u003dtimeutils.utcnow)"},{"line_number":213,"context_line":"    message_signature \u003d Column(String(1000))"},{"line_number":214,"context_line":"    message_id \u003d Column(String(1000))"},{"line_number":215,"context_line":"    sources \u003d relationship(\"Source\", secondary\u003dlambda: sourceassoc)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9%2FXE%3D","line":212,"updated":"2014-01-31 09:35:18.000000000","message":"The fact that the default value for the old timestamp and the new recorded_at are the *same* (i.e. now) gave me pause, as the whole point IIUC is that these timestampt are always expected to be different in reality to account for the ingestion lag.\n\nThen again on the other hand, I can\u0027t think of a better default for either field when considered individually.","commit_id":"bc80c0d39cf0dcfd58c2b3eba6f6137a216f09de"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"8f5069da087b27d8b4ef6c3b9085a8d1c8629406","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    counter_unit \u003d Column(String(255))"},{"line_number":210,"context_line":"    counter_volume \u003d Column(Float(53))"},{"line_number":211,"context_line":"    timestamp \u003d Column(PreciseTimestamp(), default\u003dtimeutils.utcnow)"},{"line_number":212,"context_line":"    recorded_at \u003d Column(PreciseTimestamp(), default\u003dtimeutils.utcnow)"},{"line_number":213,"context_line":"    message_signature \u003d Column(String(1000))"},{"line_number":214,"context_line":"    message_id \u003d Column(String(1000))"},{"line_number":215,"context_line":"    sources \u003d relationship(\"Source\", secondary\u003dlambda: sourceassoc)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F99f4%3D","line":212,"in_reply_to":"AAAAUH%2F9%2B7A%3D","updated":"2014-01-31 16:36:07.000000000","message":"Yeah, that does sound reasonable.","commit_id":"bc80c0d39cf0dcfd58c2b3eba6f6137a216f09de"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"f92d20f1e265c9578f4358532937e9831e68957b","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    counter_unit \u003d Column(String(255))"},{"line_number":210,"context_line":"    counter_volume \u003d Column(Float(53))"},{"line_number":211,"context_line":"    timestamp \u003d Column(PreciseTimestamp(), default\u003dtimeutils.utcnow)"},{"line_number":212,"context_line":"    recorded_at \u003d Column(PreciseTimestamp(), default\u003dtimeutils.utcnow)"},{"line_number":213,"context_line":"    message_signature \u003d Column(String(1000))"},{"line_number":214,"context_line":"    message_id \u003d Column(String(1000))"},{"line_number":215,"context_line":"    sources \u003d relationship(\"Source\", secondary\u003dlambda: sourceassoc)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9%2B7A%3D","line":212,"in_reply_to":"AAAAUH%2F9%2FXE%3D","updated":"2014-01-31 11:24:22.000000000","message":"What about that:\n\nThe default for timestamp is wrong. It should have no default and have a constraint to be not null.","commit_id":"bc80c0d39cf0dcfd58c2b3eba6f6137a216f09de"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"793395920ad30d36367962f9296b0ba72390cc7b","unresolved":false,"context_lines":[{"line_number":208,"context_line":"    counter_type \u003d Column(String(255))"},{"line_number":209,"context_line":"    counter_unit \u003d Column(String(255))"},{"line_number":210,"context_line":"    counter_volume \u003d Column(Float(53))"},{"line_number":211,"context_line":"    timestamp \u003d Column(PreciseTimestamp(), default\u003dtimeutils.utcnow)"},{"line_number":212,"context_line":"    recorded_at \u003d Column(PreciseTimestamp(), default\u003dtimeutils.utcnow)"},{"line_number":213,"context_line":"    message_signature \u003d Column(String(1000))"},{"line_number":214,"context_line":"    message_id \u003d Column(String(1000))"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUX%2F%2Fr6M%3D","line":211,"updated":"2014-02-11 14:19:00.000000000","message":"Wasn\u0027t there a proposal in an earlier patchset to remove this default value for timestamp?","commit_id":"1c8554409c75b7651e33b34dd8d4705e1dd0f147"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"a8463680cd8c0460687412e0d3b05fd151b4e02a","unresolved":false,"context_lines":[{"line_number":208,"context_line":"    counter_type \u003d Column(String(255))"},{"line_number":209,"context_line":"    counter_unit \u003d Column(String(255))"},{"line_number":210,"context_line":"    counter_volume \u003d Column(Float(53))"},{"line_number":211,"context_line":"    timestamp \u003d Column(PreciseTimestamp(), default\u003dtimeutils.utcnow)"},{"line_number":212,"context_line":"    recorded_at \u003d Column(PreciseTimestamp(), default\u003dtimeutils.utcnow)"},{"line_number":213,"context_line":"    message_signature \u003d Column(String(1000))"},{"line_number":214,"context_line":"    message_id \u003d Column(String(1000))"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUX%2F%2FkSs%3D","line":211,"in_reply_to":"AAAAUX%2F%2Fr6M%3D","updated":"2014-02-12 09:52:19.000000000","message":"Yes but I won\u0027t do that in _that_ patch.","commit_id":"1c8554409c75b7651e33b34dd8d4705e1dd0f147"}],"ceilometer/tests/storage/sqlalchemy/test_models.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6114a2999192eb4b4144baa67c1e1adde1fd57b1","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import mock"},{"line_number":22,"context_line":"import sqlalchemy"},{"line_number":23,"context_line":"from sqlalchemy.dialects.mysql import DECIMAL"},{"line_number":24,"context_line":"from sqlalchemy.types import DATETIME, NUMERIC"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from ceilometer.openstack.common import test"},{"line_number":27,"context_line":"from ceilometer.storage.sqlalchemy import models"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BjrE%3D","line":24,"updated":"2014-02-20 14:47:47.000000000","message":"drop DATETIME","commit_id":"4ef9f41f0e872956fa43a7eaa0234a4f2b590873"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"01ca43d41be36ef14b765d6843ba6a1c625da549","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import mock"},{"line_number":22,"context_line":"import sqlalchemy"},{"line_number":23,"context_line":"from sqlalchemy.dialects.mysql import DECIMAL"},{"line_number":24,"context_line":"from sqlalchemy.types import DATETIME, NUMERIC"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from ceilometer.openstack.common import test"},{"line_number":27,"context_line":"from ceilometer.storage.sqlalchemy import models"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2Bjfw%3D","line":24,"in_reply_to":"AAAAUX%2F%2BjrE%3D","updated":"2014-02-20 15:02:41.000000000","message":"it\u0027s used","commit_id":"4ef9f41f0e872956fa43a7eaa0234a4f2b590873"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6114a2999192eb4b4144baa67c1e1adde1fd57b1","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def fake_dialect(name):"},{"line_number":35,"context_line":"        def _type_descriptor_mock(desc):"},{"line_number":36,"context_line":"            if type(desc) \u003d\u003d DECIMAL:"},{"line_number":37,"context_line":"                return NUMERIC(precision\u003ddesc.precision, scale\u003ddesc.scale)"},{"line_number":38,"context_line":"            if type(desc) \u003d\u003d DATETIME:"},{"line_number":39,"context_line":"                return DATETIME()"},{"line_number":40,"context_line":"        dialect \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2Bjqs%3D","line":37,"updated":"2014-02-20 14:47:47.000000000","message":"update this descriptor_mock..","commit_id":"4ef9f41f0e872956fa43a7eaa0234a4f2b590873"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"f61db97e632bb97fec2285e70b49b67b043db3e0","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def fake_dialect(name):"},{"line_number":35,"context_line":"        def _type_descriptor_mock(desc):"},{"line_number":36,"context_line":"            if type(desc) \u003d\u003d DECIMAL:"},{"line_number":37,"context_line":"                return NUMERIC(precision\u003ddesc.precision, scale\u003ddesc.scale)"},{"line_number":38,"context_line":"            if type(desc) \u003d\u003d DATETIME:"},{"line_number":39,"context_line":"                return DATETIME()"},{"line_number":40,"context_line":"        dialect \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BjB0%3D","line":37,"in_reply_to":"AAAAUX%2F%2BjMk%3D","updated":"2014-02-20 15:45:47.000000000","message":"hmm. yeah. i guess now that i look at it. it doesn\u0027t really matter what the DATETIME clause is. the model really only checks against the DECIMAL clause.\n\ni like the new patch though which drops it.","commit_id":"4ef9f41f0e872956fa43a7eaa0234a4f2b590873"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"8a65a65ab2d486bf5634d2e0aece7b27bb31b5ef","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def fake_dialect(name):"},{"line_number":35,"context_line":"        def _type_descriptor_mock(desc):"},{"line_number":36,"context_line":"            if type(desc) \u003d\u003d DECIMAL:"},{"line_number":37,"context_line":"                return NUMERIC(precision\u003ddesc.precision, scale\u003ddesc.scale)"},{"line_number":38,"context_line":"            if type(desc) \u003d\u003d DATETIME:"},{"line_number":39,"context_line":"                return DATETIME()"},{"line_number":40,"context_line":"        dialect \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BjMk%3D","line":37,"in_reply_to":"AAAAUX%2F%2BjZc%3D","updated":"2014-02-20 15:30:51.000000000","message":"What I actually don\u0027t get is that the tests are working then? :)","commit_id":"4ef9f41f0e872956fa43a7eaa0234a4f2b590873"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"f174fab460bcd0889f8da2f7851438772dfb12e1","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def fake_dialect(name):"},{"line_number":35,"context_line":"        def _type_descriptor_mock(desc):"},{"line_number":36,"context_line":"            if type(desc) \u003d\u003d DECIMAL:"},{"line_number":37,"context_line":"                return NUMERIC(precision\u003ddesc.precision, scale\u003ddesc.scale)"},{"line_number":38,"context_line":"            if type(desc) \u003d\u003d DATETIME:"},{"line_number":39,"context_line":"                return DATETIME()"},{"line_number":40,"context_line":"        dialect \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2BjZc%3D","line":37,"in_reply_to":"AAAAUX%2F%2Bjfg%3D","updated":"2014-02-20 15:10:59.000000000","message":"whoops wrong line. i meant item below (line 38/39...since we\u0027re not actually using DATETIME in model anymore.","commit_id":"4ef9f41f0e872956fa43a7eaa0234a4f2b590873"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"01ca43d41be36ef14b765d6843ba6a1c625da549","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def fake_dialect(name):"},{"line_number":35,"context_line":"        def _type_descriptor_mock(desc):"},{"line_number":36,"context_line":"            if type(desc) \u003d\u003d DECIMAL:"},{"line_number":37,"context_line":"                return NUMERIC(precision\u003ddesc.precision, scale\u003ddesc.scale)"},{"line_number":38,"context_line":"            if type(desc) \u003d\u003d DATETIME:"},{"line_number":39,"context_line":"                return DATETIME()"},{"line_number":40,"context_line":"        dialect \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2Bjfg%3D","line":37,"in_reply_to":"AAAAUX%2F%2Bjqs%3D","updated":"2014-02-20 15:02:41.000000000","message":"how? not sure I get why","commit_id":"4ef9f41f0e872956fa43a7eaa0234a4f2b590873"}]}
