)]}'
{"nova/scheduler/attestation/attestation.py":[{"author":{"_account_id":1419,"name":"Mike Pittaro","email":"mikeyp@LaHondaResearch.org","username":"mikeyp-3"},"change_message_id":"6a8e2792e9b3dd69d7d5f806d9e08f5c78ddb0c4","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"TRUST_DICT \u003d {\u0027trusted\u0027: \u0027LVL10\u0027,"},{"line_number":53,"context_line":"              \u0027untrusted\u0027: \u0027LVL01\u0027,"},{"line_number":54,"context_line":"              \u0027unknown\u0027: \u0027LVL01\u0027}"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class AttestationService(client.BaseClient):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2BrY%3D","line":54,"updated":"2011-12-07 03:05:57.000000000","message":"The definition here is different from the two definitions in the unit tests.\nalso, trailing comma per HACKING","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":1419,"name":"Mike Pittaro","email":"mikeyp@LaHondaResearch.org","username":"mikeyp-3"},"change_message_id":"6a8e2792e9b3dd69d7d5f806d9e08f5c78ddb0c4","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    \"\"\"Privide access wrapper to attestation server to get integrity report\"\"\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def __init__(self):"},{"line_number":61,"context_line":"        self.doc_root \u003d FLAGS.attestation_doc_root or \"v1.0\""},{"line_number":62,"context_line":"        super(AttestationService, self).__init__("},{"line_number":63,"context_line":"                                    FLAGS.attestation_server,"},{"line_number":64,"context_line":"                                    FLAGS.attestation_port,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2Bsc%3D","line":61,"updated":"2011-12-07 03:05:57.000000000","message":"shouldn\u0027t this match the definition on line 44? if not, the n at least uppercase V1.0","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"}],"nova/scheduler/attestation/client.py":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"54789aa862af84500cebd2d6286676a22e4c9c1a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright (c) 2010 Openstack, LLC."},{"line_number":4,"context_line":"# Copyright 2010 United States Government as represented by the"},{"line_number":5,"context_line":"# Administrator of the National Aeronautics and Space Administration."},{"line_number":6,"context_line":"# All Rights Reserved."},{"line_number":7,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2B%2FU%3D","line":4,"updated":"2011-12-06 10:54:31.000000000","message":"Is this accurate? Where have you copied existing OpenStack code in this file? Is none of this Copyright Intel?","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"54789aa862af84500cebd2d6286676a22e4c9c1a","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class HTTPSClientAuthConnection(httplib.HTTPSConnection):"},{"line_number":31,"context_line":"    \"\"\"Class to make a HTTPS connection,"},{"line_number":32,"context_line":"    with support for full client-based SSL Authentication"},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __init__(self, host, port, key_file, cert_file, ca_file, timeout\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2B%2FY%3D","line":32,"updated":"2011-12-06 10:54:31.000000000","message":"I\u0027d call it ValidatedHTTPSConnection - \"client auth\" suggests something else to me","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"54789aa862af84500cebd2d6286676a22e4c9c1a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        sock \u003d socket.create_connection((self.host, self.port), self.timeout)"},{"line_number":50,"context_line":"        if self._tunnel_host:"},{"line_number":51,"context_line":"            self.sock \u003d sock"},{"line_number":52,"context_line":"            self._tunnel()"},{"line_number":53,"context_line":"        # If there\u0027s no CA File, don\u0027t force Server Certificate Check"},{"line_number":54,"context_line":"        if self.ca_file:"},{"line_number":55,"context_line":"            self.sock \u003d ssl.wrap_socket(sock, self.key_file, self.cert_file,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2B%2Fk%3D","line":52,"updated":"2011-12-06 10:54:31.000000000","message":"I don\u0027t like the way you\u0027re overriding the base class here, because you\u0027re using private implementation details which could change\n\nHowever, from e.g. http://stackoverflow.com/questions/3280603/adding-server-certificate-validation-to-httplib-httpsconnection it looks like you\u0027re not the first person to have done this\n\nHave you tried httplib2? Perhaps that would work better?\n\nIn any case, I\u0027d prefer to this to go into somewhere live nova/crypto.py so it can be re-used by the likes of the Quantum and Melange clients","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":849,"name":"fred yang","username":"fred-yang"},"change_message_id":"2ea5884fa38ea7e116a397c12e29b100ed8e4271","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        sock \u003d socket.create_connection((self.host, self.port), self.timeout)"},{"line_number":50,"context_line":"        if self._tunnel_host:"},{"line_number":51,"context_line":"            self.sock \u003d sock"},{"line_number":52,"context_line":"            self._tunnel()"},{"line_number":53,"context_line":"        # If there\u0027s no CA File, don\u0027t force Server Certificate Check"},{"line_number":54,"context_line":"        if self.ca_file:"},{"line_number":55,"context_line":"            self.sock \u003d ssl.wrap_socket(sock, self.key_file, self.cert_file,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2Bws%3D","line":52,"in_reply_to":"AAAAC3%2F%2F%2B%2Fk%3D","updated":"2011-12-06 23:50:56.000000000","message":"The base code was derived from glance code and then added https support. vaguely remember Glance also added server authentication not long ago.  To generalize is a good suggestion","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":849,"name":"fred yang","username":"fred-yang"},"change_message_id":"8ad9ce2628e8d9eec00120b9dc05189c53802473","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        sock \u003d socket.create_connection((self.host, self.port), self.timeout)"},{"line_number":50,"context_line":"        if self._tunnel_host:"},{"line_number":51,"context_line":"            self.sock \u003d sock"},{"line_number":52,"context_line":"            self._tunnel()"},{"line_number":53,"context_line":"        # If there\u0027s no CA File, don\u0027t force Server Certificate Check"},{"line_number":54,"context_line":"        if self.ca_file:"},{"line_number":55,"context_line":"            self.sock \u003d ssl.wrap_socket(sock, self.key_file, self.cert_file,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2BuA%3D","line":52,"in_reply_to":"AAAAC3%2F%2F%2Bws%3D","updated":"2011-12-09 18:08:48.000000000","message":"The reason to overriding is  to use cert file to authenticate (verify) the server is indeed who it is","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"54789aa862af84500cebd2d6286676a22e4c9c1a","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        # If there\u0027s no CA File, don\u0027t force Server Certificate Check"},{"line_number":54,"context_line":"        if self.ca_file:"},{"line_number":55,"context_line":"            self.sock \u003d ssl.wrap_socket(sock, self.key_file, self.cert_file,"},{"line_number":56,"context_line":"                                        ssl_version\u003dssl.PROTOCOL_SSLv23,"},{"line_number":57,"context_line":"                                        ca_certs\u003dself.ca_file,"},{"line_number":58,"context_line":"                                        cert_reqs\u003dssl.CERT_REQUIRED)"},{"line_number":59,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2B%2Fg%3D","line":56,"updated":"2011-12-06 10:54:31.000000000","message":"Shouldn\u0027t need to explicitly request v23. That\u0027s the default, right?","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"54789aa862af84500cebd2d6286676a22e4c9c1a","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                        cert_reqs\u003dssl.CERT_REQUIRED)"},{"line_number":59,"context_line":"        else:"},{"line_number":60,"context_line":"            self.sock \u003d ssl.wrap_socket(sock, self.key_file, self.cert_file,"},{"line_number":61,"context_line":"                                        cert_reqs\u003dssl.CERT_NONE)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"class BaseClient(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2B%2Fc%3D","line":61,"updated":"2011-12-06 10:54:31.000000000","message":"Don\u0027t need to specify cert_reqs here either, CERT_NONE is the default","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"54789aa862af84500cebd2d6286676a22e4c9c1a","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        self.cert_file \u003d cert_file"},{"line_number":88,"context_line":"        self.ca_file \u003d ca_file"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def set_auth_blob(self, auth_user, auth_passwd):"},{"line_number":91,"context_line":"        \"\"\"Updates the authentication token for this client connection."},{"line_number":92,"context_line":"        \"\"\""},{"line_number":93,"context_line":"        self.auth_user \u003d auth_user"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2B%2FM%3D","line":90,"updated":"2011-12-06 10:54:31.000000000","message":"\u0027blob\u0027 isn\u0027t a great name - how about set_credentials() ?","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"54789aa862af84500cebd2d6286676a22e4c9c1a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                             ca_file\u003dself.ca_file)"},{"line_number":104,"context_line":"        return httplib.HTTPConnection(self.host, self.port)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def do_request(self, method, action, body\u003dNone, headers\u003dNone):"},{"line_number":107,"context_line":"        \"\"\"Connects to the server and issues a request."},{"line_number":108,"context_line":"        Returns the result data, or raises an appropriate exception."},{"line_number":109,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2B%2FQ%3D","line":106,"updated":"2011-12-06 10:54:31.000000000","message":"\u0027action\u0027 isn\u0027t a great name for this parameter - how about \u0027action_url\u0027 to make it clear that it is a URL","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"54789aa862af84500cebd2d6286676a22e4c9c1a","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                c.endheaders()"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"                c.send(\u0027%s\u0027 % (body))"},{"line_number":129,"context_line":"                c.send(\u00270\\r\\n\\r\\n\u0027)"},{"line_number":130,"context_line":"            else:"},{"line_number":131,"context_line":"                # Simple request.through uri"},{"line_number":132,"context_line":"                c.request(method, action, body, headers)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2B%2FI%3D","line":129,"updated":"2011-12-06 10:54:31.000000000","message":"Hmm, I don\u0027t understand why you\u0027re jumping through so many hoops when sending a request with a message body\n\nWhy does the simple c.request(...) call not work when a body is supplied?","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"}],"nova/scheduler/filters/json_filter_integrity.py":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"54789aa862af84500cebd2d6286676a22e4c9c1a","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":28,"context_line":"flags.DEFINE_string(\u0027default_post_filter_driver\u0027, \u0027\u0027,"},{"line_number":29,"context_line":"                    \u0027Post processing function after filter_hosts.\u0027)"},{"line_number":30,"context_line":"flags.DEFINE_bool(\u0027trusted_pools_enforced\u0027, True,"},{"line_number":31,"context_line":"                  \u0027enforce compute nodes to either trusted or untrusted\u0027)"},{"line_number":32,"context_line":"TRUST_DICT \u003d {\u0027trusted\u0027: \u0027LVL10\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2B%2FE%3D","line":29,"updated":"2011-12-06 10:54:31.000000000","message":"This is a terrible hack to allow the IntegrityService to hook into the filter. Need to figure out something better","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":849,"name":"fred yang","username":"fred-yang"},"change_message_id":"2ea5884fa38ea7e116a397c12e29b100ed8e4271","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":28,"context_line":"flags.DEFINE_string(\u0027default_post_filter_driver\u0027, \u0027\u0027,"},{"line_number":29,"context_line":"                    \u0027Post processing function after filter_hosts.\u0027)"},{"line_number":30,"context_line":"flags.DEFINE_bool(\u0027trusted_pools_enforced\u0027, True,"},{"line_number":31,"context_line":"                  \u0027enforce compute nodes to either trusted or untrusted\u0027)"},{"line_number":32,"context_line":"TRUST_DICT \u003d {\u0027trusted\u0027: \u0027LVL10\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2BxE%3D","line":29,"in_reply_to":"AAAAC3%2F%2F%2B%2FE%3D","updated":"2011-12-06 23:50:56.000000000","message":"Agree this is a hack.  as replied on other thread, the best solution is to have Zone_manager object passed to filter","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"54789aa862af84500cebd2d6286676a22e4c9c1a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                value \u003d TRUST_DICT.get(arg.lower(), None)"},{"line_number":55,"context_line":"                if value:"},{"line_number":56,"context_line":"                    integrity_query \u003d True"},{"line_number":57,"context_line":"                    arg \u003d value"},{"line_number":58,"context_line":"                else:"},{"line_number":59,"context_line":"                    arg \u003d self._parse_string(arg, host, hostinfo)"},{"line_number":60,"context_line":"            if arg is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2B%2FA%3D","line":57,"updated":"2011-12-06 10:54:31.000000000","message":"This seems weird. Why isn\u0027t the trust level of the host not just in the compute service capabilities and queried against like [\u0027\u003d\u003d\u0027, \u0027$compute.trust_lvl\u0027, \u0027trusted\u0027]","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":849,"name":"fred yang","username":"fred-yang"},"change_message_id":"2ea5884fa38ea7e116a397c12e29b100ed8e4271","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                value \u003d TRUST_DICT.get(arg.lower(), None)"},{"line_number":55,"context_line":"                if value:"},{"line_number":56,"context_line":"                    integrity_query \u003d True"},{"line_number":57,"context_line":"                    arg \u003d value"},{"line_number":58,"context_line":"                else:"},{"line_number":59,"context_line":"                    arg \u003d self._parse_string(arg, host, hostinfo)"},{"line_number":60,"context_line":"            if arg is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2BxM%3D","line":57,"in_reply_to":"AAAAC3%2F%2F%2B%2FA%3D","updated":"2011-12-06 23:50:56.000000000","message":"\"Trust_lvl\" information can\u0027t be part of \"$compute\" cached state.  Scheduler gets trust_lvl information from a standalone, trusted server which is to verify compute nodes independently.  If trust_lvl is part of $compute attribute then compute node(s) can maliciously, directly trash the trust_lvl info on service_state update","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"54789aa862af84500cebd2d6286676a22e4c9c1a","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                result \u003d any(result)"},{"line_number":87,"context_line":"            if result:"},{"line_number":88,"context_line":"                filtered_hosts.append((host, hostinfo))"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        # force all the compute nodes to either in trusted or non-trusted pool"},{"line_number":91,"context_line":"        if integrity_query is False and FLAGS.trusted_pools_enforced:"},{"line_number":92,"context_line":"            query \u003d [\u0027\u003d\u0027, \u0027$trust_state.trust_lvl\u0027, TRUST_DICT[\u0027untrusted\u0027]]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2B%2B8%3D","line":89,"updated":"2011-12-06 10:54:31.000000000","message":"There\u0027s far too much code in this class copied from the base class. We have to figure out something better than this","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"}],"nova/scheduler/manager_integrity.py":[{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"54789aa862af84500cebd2d6286676a22e4c9c1a","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    \"\"\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def __init__(self, zone_manager):"},{"line_number":45,"context_line":"        FLAGS.default_post_filter_driver \u003d self._post_filter_verifier"},{"line_number":46,"context_line":"        self.zone_manager \u003d zone_manager"},{"line_number":47,"context_line":"        self.snapshots \u003d {}"},{"line_number":48,"context_line":"        self.inflight_hosts \u003d {}  # {host: utc}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2B%2B4%3D","line":45,"updated":"2011-12-06 10:54:31.000000000","message":"FLAGS is not an appropriate way to hook into the filter","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":849,"name":"fred yang","username":"fred-yang"},"change_message_id":"2ea5884fa38ea7e116a397c12e29b100ed8e4271","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    \"\"\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def __init__(self, zone_manager):"},{"line_number":45,"context_line":"        FLAGS.default_post_filter_driver \u003d self._post_filter_verifier"},{"line_number":46,"context_line":"        self.zone_manager \u003d zone_manager"},{"line_number":47,"context_line":"        self.snapshots \u003d {}"},{"line_number":48,"context_line":"        self.inflight_hosts \u003d {}  # {host: utc}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2Bxw%3D","line":45,"in_reply_to":"AAAAC3%2F%2F%2B%2B4%3D","updated":"2011-12-06 23:50:56.000000000","message":"Communicated with Sandy on needs of post-processing after filter driver selected candidates.  But currently there is no better way to handle post-processing except through FLAG, unless Zone_manager object is also passed to filter driver.  The need of post-process is to verify cached trust state is within acceptable timeframe that host nodes aren\u0027t been rebooted and tempered","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"}],"nova/tests/scheduler/test_manager_integrity.py":[{"author":{"_account_id":1419,"name":"Mike Pittaro","email":"mikeyp@LaHondaResearch.org","username":"mikeyp-3"},"change_message_id":"6a8e2792e9b3dd69d7d5f806d9e08f5c78ddb0c4","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"FLAGS \u003d flags.FLAGS"},{"line_number":33,"context_line":"TRUST_DICT \u003d {\u0027trusted\u0027: \u0027LVL10\u0027,"},{"line_number":34,"context_line":"              \u0027untrusted\u0027: \u0027LVL01\u0027}"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class ManagerIntegrityTestCase(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2Brk%3D","line":34,"updated":"2011-12-07 03:05:57.000000000","message":"TRUST_DICT should be imported from the module under test.  I see three definitions.","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":1419,"name":"Mike Pittaro","email":"mikeyp@LaHondaResearch.org","username":"mikeyp-3"},"change_message_id":"6a8e2792e9b3dd69d7d5f806d9e08f5c78ddb0c4","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                ref[\u0027report_count\u0027] +\u003d base_tick - d"},{"line_number":99,"context_line":"            db.service_update(ctx, ref[\u0027id\u0027], ref)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def testintegrity(self):"},{"line_number":102,"context_line":"        counts \u003d 10"},{"line_number":103,"context_line":"        hf \u003d manager_integrity.SchedulerManagerIntegrity()"},{"line_number":104,"context_line":"        pseudo \u003d PseudoServer()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2Brs%3D","line":101,"updated":"2011-12-07 03:05:57.000000000","message":"This is too long for a unit test - there are too many dependencies between the individual time steps. Maybe refactor into something based on a state machine ?","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":1419,"name":"Mike Pittaro","email":"mikeyp@LaHondaResearch.org","username":"mikeyp-3"},"change_message_id":"6a8e2792e9b3dd69d7d5f806d9e08f5c78ddb0c4","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def testintegrity(self):"},{"line_number":102,"context_line":"        counts \u003d 10"},{"line_number":103,"context_line":"        hf \u003d manager_integrity.SchedulerManagerIntegrity()"},{"line_number":104,"context_line":"        pseudo \u003d PseudoServer()"},{"line_number":105,"context_line":"        hf.zone_manager.integrity_service.attestation_service \u003d pseudo"},{"line_number":106,"context_line":"        ctx \u003d context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2Bro%3D","line":103,"updated":"2011-12-07 03:05:57.000000000","message":"the mnemonic significance of hf is lost on me here.","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":1419,"name":"Mike Pittaro","email":"mikeyp@LaHondaResearch.org","username":"mikeyp-3"},"change_message_id":"6a8e2792e9b3dd69d7d5f806d9e08f5c78ddb0c4","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        self._update_ticks(ctx, counts, 1, self.periodic_ticks, 0, down\u003d999)"},{"line_number":115,"context_line":"        hf.periodic_tasks(ctx)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        state \u003d {}"},{"line_number":118,"context_line":"        state \u003d hf.zone_manager.service_states"},{"line_number":119,"context_line":"        for index in [0, 2, 4, 6, 8]:"},{"line_number":120,"context_line":"            host \u003d \u0027host%02d\u0027 % index"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2Br4%3D","line":117,"updated":"2011-12-07 03:05:57.000000000","message":"not needed","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":1419,"name":"Mike Pittaro","email":"mikeyp@LaHondaResearch.org","username":"mikeyp-3"},"change_message_id":"6a8e2792e9b3dd69d7d5f806d9e08f5c78ddb0c4","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        if cmd \u003d\u003d \u0027POST_HOSTS\u0027:"},{"line_number":248,"context_line":"            if len(hosts) \u003d\u003d 0:"},{"line_number":249,"context_line":"                return {}"},{"line_number":250,"context_line":"            self.posted_count +\u003d len(hosts)"},{"line_number":251,"context_line":"            rid \u003d \"-\".join(hosts)"},{"line_number":252,"context_line":"            self.request_id \u003d rid"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2Brg%3D","line":249,"updated":"2011-12-07 03:05:57.000000000","message":"this returns a dict","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"},{"author":{"_account_id":1419,"name":"Mike Pittaro","email":"mikeyp@LaHondaResearch.org","username":"mikeyp-3"},"change_message_id":"6a8e2792e9b3dd69d7d5f806d9e08f5c78ddb0c4","unresolved":false,"context_lines":[{"line_number":250,"context_line":"            self.posted_count +\u003d len(hosts)"},{"line_number":251,"context_line":"            rid \u003d \"-\".join(hosts)"},{"line_number":252,"context_line":"            self.request_id \u003d rid"},{"line_number":253,"context_line":"            return rid"},{"line_number":254,"context_line":"        if cmd \u003d\u003d \u0027GET_HOSTS\u0027:"},{"line_number":255,"context_line":"            if len(self.request_id) \u003d\u003d 0:"},{"line_number":256,"context_line":"                return {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAC3%2F%2F%2Brc%3D","line":253,"updated":"2011-12-07 03:05:57.000000000","message":"this returns a string","commit_id":"c6118c9ad965056edc6bf14308874df3c7e60f7b"}]}
