)]}'
{"nodepool/fakeprovider.py":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"83da8adac5fd841702f1e4119af3835462f4c477","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    def get(self, path):"},{"line_number":68,"context_line":"        raise requests.exceptions.ProxyError"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"#class BadClient(FakeClient):"},{"line_number":72,"context_line":"#    def __init__(self, images):"},{"line_number":73,"context_line":"#        super(BadClient, self).__init__(images)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a1a9d01_60745f67","line":70,"updated":"2015-09-29 17:45:11.000000000","message":"I\u0027m guessing these can go?","commit_id":"09a5b10b89b1b58685ef1a65d417822c1f27c04f"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"18880a9159eb0c27db02b63e2213c617aa8461c4","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                        dict(version\u003d6, addr\u003d\u0027fake_v6\u0027)],"},{"line_number":108,"context_line":"                private\u003d[dict(version\u003d4, addr\u003d\u0027fake\u0027)]"},{"line_number":109,"context_line":"            )"},{"line_number":110,"context_line":"            public_v6 \u003d \u0027fake_v6\u0027"},{"line_number":111,"context_line":"            break"},{"line_number":112,"context_line":"        if not addresses:"},{"line_number":113,"context_line":"            addresses \u003d dict("}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_96e459e0","line":110,"updated":"2015-09-29 18:50:18.000000000","message":"Don\u0027t we want shade\u0027s get_openstack_vars() to set these non nested items like public_v6 and public_v4?","commit_id":"a38deac321a2f5a9d7951fd1eab03c8624d06482"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"18880a9159eb0c27db02b63e2213c617aa8461c4","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                public\u003d[dict(version\u003d4, addr\u003d\u0027fake\u0027)],"},{"line_number":115,"context_line":"                private\u003d[dict(version\u003d4, addr\u003d\u0027fake\u0027)]"},{"line_number":116,"context_line":"            )"},{"line_number":117,"context_line":"            public_v6 \u003d \u0027\u0027"},{"line_number":118,"context_line":"        s \u003d Dummy(instance_type,"},{"line_number":119,"context_line":"                  id\u003duuid.uuid4().hex,"},{"line_number":120,"context_line":"                  name\u003dkw[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_f631155b","line":117,"updated":"2015-09-29 18:50:18.000000000","message":"See above.","commit_id":"a38deac321a2f5a9d7951fd1eab03c8624d06482"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"18880a9159eb0c27db02b63e2213c617aa8461c4","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                  key_name\u003dkw.get(\u0027key_name\u0027, None),"},{"line_number":127,"context_line":"                  public_v4\u003d\u0027fake\u0027,"},{"line_number":128,"context_line":"                  private_v4\u003d\u0027fake\u0027,"},{"line_number":129,"context_line":"                  public_v6\u003dpublic_v6,"},{"line_number":130,"context_line":"                  should_fail\u003dshould_fail)"},{"line_number":131,"context_line":"        instance_list.append(s)"},{"line_number":132,"context_line":"        t \u003d threading.Thread(target\u003dself._finish,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_56dd61de","line":129,"updated":"2015-09-29 18:50:18.000000000","message":"See above.","commit_id":"a38deac321a2f5a9d7951fd1eab03c8624d06482"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9a267d34724a457b60d5201b1b3aaf62dfabee59","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                        dict(version\u003d6, addr\u003d\u0027fake_v6\u0027)],"},{"line_number":108,"context_line":"                private\u003d[dict(version\u003d4, addr\u003d\u0027fake\u0027)]"},{"line_number":109,"context_line":"            )"},{"line_number":110,"context_line":"            public_v6 \u003d \u0027fake_v6\u0027"},{"line_number":111,"context_line":"            break"},{"line_number":112,"context_line":"        if not addresses:"},{"line_number":113,"context_line":"            addresses \u003d dict("}],"source_content_type":"text/x-python","patch_set":17,"id":"9a1a9d01_af8b3bc2","line":110,"updated":"2015-09-29 21:56:40.000000000","message":"This var isn\u0027t required at all now right? I intended on deleting it completely.","commit_id":"e1acfa27bbf7b74d40fab10444bac1ef3df521d9"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9a267d34724a457b60d5201b1b3aaf62dfabee59","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                public\u003d[dict(version\u003d4, addr\u003d\u0027fake\u0027)],"},{"line_number":115,"context_line":"                private\u003d[dict(version\u003d4, addr\u003d\u0027fake\u0027)]"},{"line_number":116,"context_line":"            )"},{"line_number":117,"context_line":"            public_v6 \u003d \u0027\u0027"},{"line_number":118,"context_line":"        s \u003d Dummy(instance_type,"},{"line_number":119,"context_line":"                  id\u003duuid.uuid4().hex,"},{"line_number":120,"context_line":"                  name\u003dkw[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a1a9d01_cf88efc7","line":117,"updated":"2015-09-29 21:56:40.000000000","message":"Same as above.","commit_id":"e1acfa27bbf7b74d40fab10444bac1ef3df521d9"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"9a267d34724a457b60d5201b1b3aaf62dfabee59","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def get_openstack_vars(self, server):"},{"line_number":184,"context_line":"        server.public_v4 \u003d \u0027fake\u0027"},{"line_number":185,"context_line":"        server.public_v6 \u003d \u0027fake\u0027"},{"line_number":186,"context_line":"        server.private_v4 \u003d \u0027fake\u0027"},{"line_number":187,"context_line":"        return server"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a1a9d01_4fc37fed","line":185,"updated":"2015-09-29 21:56:40.000000000","message":"Based on the address dict we use elsewhere I think this should be \u003d \u0027fake_v6\u0027.","commit_id":"e1acfa27bbf7b74d40fab10444bac1ef3df521d9"},{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"6b43b27d6716de51830ce5287b250cd337651684","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        for k, v in kw.items():"},{"line_number":38,"context_line":"            setattr(self, k, v)"},{"line_number":39,"context_line":"        try:"},{"line_number":40,"context_line":"            if self.should_fail:"},{"line_number":41,"context_line":"                raise shade.OpenStackCloudException(\u0027This image has \u0027"},{"line_number":42,"context_line":"                                                    \u0027SHOULD_FAIL set to True.\u0027)"},{"line_number":43,"context_line":"        except AttributeError:"}],"source_content_type":"text/x-python","patch_set":54,"id":"3afc51ec_b4d8261f","line":40,"updated":"2016-03-11 16:22:44.000000000","message":"technically this doesnt mean its set to True, just set to something that doesnt eval as False","commit_id":"6c7930002916ae5222dd1b710c07f3c523960dfe"},{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"6b43b27d6716de51830ce5287b250cd337651684","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    return cloud_config.get_one_cloud(**cloud_kwargs)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class FakeOpenStackCloud(object):"},{"line_number":67,"context_line":"    log \u003d logging.getLogger(\"nodepool.FakeOpenStackCloud\")"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":54,"id":"3afc51ec_94f88a7e","line":65,"updated":"2016-03-11 16:22:44.000000000","message":"too many new lines","commit_id":"6c7930002916ae5222dd1b710c07f3c523960dfe"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"27fa5bc6fa60f02862cbf00aaa107859b4825688","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        return s"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def _delete(self, name_or_id, instance_list):"},{"line_number":143,"context_line":"        self.log.debug(\"Delete from %s\" % repr(instance_list))"},{"line_number":144,"context_line":"        instance \u003d None"},{"line_number":145,"context_line":"        for maybe in instance_list:"},{"line_number":146,"context_line":"            if maybe.name \u003d\u003d name_or_id or maybe.id \u003d\u003d name_or_id:"}],"source_content_type":"text/x-python","patch_set":54,"id":"3afc51ec_82a32c9e","line":143,"updated":"2016-03-11 16:52:10.000000000","message":"That is one solution, however, under the prevailing style in nodepool it would actually be:\n\n\"Delete from %s\" % (repr(instance_list),)\n\nWhich is equally safe as the other approach.  So I do think this should be changed -- but only to match everywhere else.","commit_id":"6c7930002916ae5222dd1b710c07f3c523960dfe"},{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"6b43b27d6716de51830ce5287b250cd337651684","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        return s"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def _delete(self, name_or_id, instance_list):"},{"line_number":143,"context_line":"        self.log.debug(\"Delete from %s\" % repr(instance_list))"},{"line_number":144,"context_line":"        instance \u003d None"},{"line_number":145,"context_line":"        for maybe in instance_list:"},{"line_number":146,"context_line":"            if maybe.name \u003d\u003d name_or_id or maybe.id \u003d\u003d name_or_id:"}],"source_content_type":"text/x-python","patch_set":54,"id":"3afc51ec_9489aacd","line":143,"updated":"2016-03-11 16:22:44.000000000","message":"sending messages to log should use c-style vars passed with a comment not \"%s\" % mesg. This avoids an annoying and horrible to track down bug. But what you ahve fits current coding, it should be changed everywhere else.\n\n    log.debug(\"%s\", mesg)","commit_id":"6c7930002916ae5222dd1b710c07f3c523960dfe"},{"author":{"_account_id":14119,"name":"Sam Yaple","email":"sam+git@yaple.net","username":"SamYaple"},"change_message_id":"64d114ff599d9a4d3b63557dd96dc4310ac19867","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        return s"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def _delete(self, name_or_id, instance_list):"},{"line_number":143,"context_line":"        self.log.debug(\"Delete from %s\" % repr(instance_list))"},{"line_number":144,"context_line":"        instance \u003d None"},{"line_number":145,"context_line":"        for maybe in instance_list:"},{"line_number":146,"context_line":"            if maybe.name \u003d\u003d name_or_id or maybe.id \u003d\u003d name_or_id:"}],"source_content_type":"text/x-python","patch_set":54,"id":"3afc51ec_f8dbbc19","line":143,"in_reply_to":"3afc51ec_82a32c9e","updated":"2016-03-11 18:36:59.000000000","message":"I happen to agree with the consistency arguement, however I disagree it is equally safe for all cases, just for a few cases what you purpose is solved as well using c-style variable passing.\n\nusing \u0027%\u0027 or .format() will result in an exception being raised if the string interpolation fails for some reason (unicode or bad variable or whatever reason) for example:\n\n    log.debug(\u0027%s %s\u0027 % var1)\n\nbreaks the program whereas using \n\n    log.debug(\u0027%s %s\u0027, var1)\n\n_wont_ block and fail the program, it will just report the error in the log","commit_id":"6c7930002916ae5222dd1b710c07f3c523960dfe"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"e7b998b4dd8689ba85d4473cbf0983b28e922332","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    def get_server(self, name_or_id):"},{"line_number":199,"context_line":"        return self._get(name_or_id, self._server_list)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def wait_for_Server(self, server, **kwargs):"},{"line_number":202,"context_line":"        server.status \u003d \u0027ACTIVE\u0027"},{"line_number":203,"context_line":"        return server"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":62,"id":"fa0719c6_d4d2add1","line":201,"updated":"2016-03-22 18:29:35.000000000","message":"capital S -\u003e lowercase","commit_id":"5bcb60cd8fc7af28b391938a60a0f1ad8798fb01"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"da227495c6ea8979b69356f95fb75ef9f4385cac","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        addresses \u003d None"},{"line_number":116,"context_line":"        # if keyword \u0027ipv6-uuid\u0027 is found in provider config,"},{"line_number":117,"context_line":"        # ipv6 address will be available in public addr dict."},{"line_number":118,"context_line":"        self.log.debug(nics)"},{"line_number":119,"context_line":"        for nic in nics:"},{"line_number":120,"context_line":"            self.log.debug(nic)"},{"line_number":121,"context_line":"            if \u0027ipv6-uuid\u0027 not in nic[\u0027net-id\u0027]:"}],"source_content_type":"text/x-python","patch_set":83,"id":"da0c15f0_524a7184","line":118,"updated":"2016-03-25 14:39:21.000000000","message":"Remove.","commit_id":"1b1293ba96012bfcff38f9f13706069f8cee48e8"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"da227495c6ea8979b69356f95fb75ef9f4385cac","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        # ipv6 address will be available in public addr dict."},{"line_number":118,"context_line":"        self.log.debug(nics)"},{"line_number":119,"context_line":"        for nic in nics:"},{"line_number":120,"context_line":"            self.log.debug(nic)"},{"line_number":121,"context_line":"            if \u0027ipv6-uuid\u0027 not in nic[\u0027net-id\u0027]:"},{"line_number":122,"context_line":"                continue"},{"line_number":123,"context_line":"            addresses \u003d dict("}],"source_content_type":"text/x-python","patch_set":83,"id":"da0c15f0_324ffd93","line":120,"updated":"2016-03-25 14:39:21.000000000","message":"Remove.","commit_id":"1b1293ba96012bfcff38f9f13706069f8cee48e8"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"da227495c6ea8979b69356f95fb75ef9f4385cac","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            private_v4 \u003d \u0027fake\u0027"},{"line_number":131,"context_line":"            break"},{"line_number":132,"context_line":"        if not addresses:"},{"line_number":133,"context_line":"            self.log.debug"},{"line_number":134,"context_line":"            addresses \u003d dict("},{"line_number":135,"context_line":"                public\u003d[dict(version\u003d4, addr\u003d\u0027fake\u0027)],"},{"line_number":136,"context_line":"                private\u003d[dict(version\u003d4, addr\u003d\u0027fake\u0027)]"}],"source_content_type":"text/x-python","patch_set":83,"id":"da0c15f0_92440975","line":133,"updated":"2016-03-25 14:39:21.000000000","message":"Remove.","commit_id":"1b1293ba96012bfcff38f9f13706069f8cee48e8"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"da227495c6ea8979b69356f95fb75ef9f4385cac","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def get_server(self, name_or_id):"},{"line_number":220,"context_line":"        result \u003d self._get(name_or_id, self._server_list)"},{"line_number":221,"context_line":"        return result"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def wait_for_server(self, server, **kwargs):"},{"line_number":224,"context_line":"        server.status \u003d \u0027ACTIVE\u0027"}],"source_content_type":"text/x-python","patch_set":83,"id":"da0c15f0_7249758b","line":221,"updated":"2016-03-25 14:39:21.000000000","message":"In patchset 62, thas was just \"return self._get...\".  No idea why it was changed.  Certainly didn\u0027t need to be.  Notaminusone, just weird.","commit_id":"1b1293ba96012bfcff38f9f13706069f8cee48e8"}],"nodepool/nodepool.py":[{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"29487c90401524bce7400e43a946f0f31bfb4764","unresolved":false,"context_lines":[{"line_number":1069,"context_line":"                image_id\u003dimage_id, config_drive\u003dself.image.config_drive,"},{"line_number":1070,"context_line":"                nodepool_snapshot_image_id\u003dself.snap_image.id)[\u0027id\u0027]"},{"line_number":1071,"context_line":"        except Exception:"},{"line_number":1072,"context_line":"            if self.manager.deleteKeypair(key_name):"},{"line_number":1073,"context_line":"                self.log.debug("},{"line_number":1074,"context_line":"                    \u0027Deleted keypair for failed image build %s\u0027 %"},{"line_number":1075,"context_line":"                    self.snap_image.id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_ddeaf773","line":1072,"updated":"2015-09-29 15:54:13.000000000","message":"Shade returns True from delete operations on success. False is failure (i.e., not found). And raises exception on something really bad. So need to use \u0027if not\u0027 here, at least.","commit_id":"1af03756c52cce586a25ff14c48cccf633bab03f"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"fb83ab622d087749c5cc46556d75e8b25d9c3936","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                             # READY or is not the current or previous image"},{"line_number":56,"context_line":"DELETE_DELAY \u003d 1 * MINS      # Delay before deleting a node that has completed"},{"line_number":57,"context_line":"                             # its job."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"# HP Cloud requires qemu compat with 0.10. That version works elsewhere,"},{"line_number":60,"context_line":"# so just hardcode it for all qcow2 building"},{"line_number":61,"context_line":"DEFAULT_QEMU_IMAGE_COMPAT_OPTIONS \u003d \"--qemu-img-options \u0027compat\u003d0.10\u0027\""}],"source_content_type":"text/x-python","patch_set":14,"id":"9a1a9d01_ace916b9","side":"PARENT","line":58,"updated":"2015-09-29 16:26:46.000000000","message":"Why is this being removed?","commit_id":"787e592c64fc0fb3fb9bf9380728912c82a358b7"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"7bec491c6733ff4252f353d659e4549018ef8fe7","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                             # READY or is not the current or previous image"},{"line_number":56,"context_line":"DELETE_DELAY \u003d 1 * MINS      # Delay before deleting a node that has completed"},{"line_number":57,"context_line":"                             # its job."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"# HP Cloud requires qemu compat with 0.10. That version works elsewhere,"},{"line_number":60,"context_line":"# so just hardcode it for all qcow2 building"},{"line_number":61,"context_line":"DEFAULT_QEMU_IMAGE_COMPAT_OPTIONS \u003d \"--qemu-img-options \u0027compat\u003d0.10\u0027\""}],"source_content_type":"text/x-python","patch_set":14,"id":"9a1a9d01_a59b6965","side":"PARENT","line":58,"in_reply_to":"9a1a9d01_ace916b9","updated":"2015-09-29 17:30:59.000000000","message":"It hasn\u0027t been needed in a long time (this removal was in the final patch of the series and made more sense bundled with those changes - it was the \"just trust occ\" patch.) Basically, dib always sets this now, so nodepool knowing anything about it is not needed.","commit_id":"787e592c64fc0fb3fb9bf9380728912c82a358b7"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"fb83ab622d087749c5cc46556d75e8b25d9c3936","unresolved":false,"context_lines":[{"line_number":863,"context_line":""},{"line_number":864,"context_line":"        img_elements \u003d image.elements"},{"line_number":865,"context_line":"        img_types \u003d \",\".join(image.image_types)"},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"        qemu_img_options \u003d \u0027\u0027"},{"line_number":868,"context_line":"        if \u0027qcow2\u0027 in img_types:"},{"line_number":869,"context_line":"            qemu_img_options \u003d DEFAULT_QEMU_IMAGE_COMPAT_OPTIONS"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a1a9d01_4cd39a04","side":"PARENT","line":866,"updated":"2015-09-29 16:26:46.000000000","message":"And this?","commit_id":"787e592c64fc0fb3fb9bf9380728912c82a358b7"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"7bec491c6733ff4252f353d659e4549018ef8fe7","unresolved":false,"context_lines":[{"line_number":863,"context_line":""},{"line_number":864,"context_line":"        img_elements \u003d image.elements"},{"line_number":865,"context_line":"        img_types \u003d \",\".join(image.image_types)"},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"        qemu_img_options \u003d \u0027\u0027"},{"line_number":868,"context_line":"        if \u0027qcow2\u0027 in img_types:"},{"line_number":869,"context_line":"            qemu_img_options \u003d DEFAULT_QEMU_IMAGE_COMPAT_OPTIONS"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a1a9d01_65a2319b","side":"PARENT","line":866,"in_reply_to":"9a1a9d01_4cd39a04","updated":"2015-09-29 17:30:59.000000000","message":"Same reason.","commit_id":"787e592c64fc0fb3fb9bf9380728912c82a358b7"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"fb83ab622d087749c5cc46556d75e8b25d9c3936","unresolved":false,"context_lines":[{"line_number":872,"context_line":"            dib_cmd \u003d \u0027nodepool/tests/fake-image-create\u0027"},{"line_number":873,"context_line":"        else:"},{"line_number":874,"context_line":"            dib_cmd \u003d \u0027disk-image-create\u0027"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"        cmd \u003d (\u0027%s -x -t %s --no-tmpfs %s -o %s %s\u0027 %"},{"line_number":877,"context_line":"               (dib_cmd, img_types, qemu_img_options, filename, img_elements))"},{"line_number":878,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9a1a9d01_6cd0def6","side":"PARENT","line":875,"updated":"2015-09-29 16:26:46.000000000","message":"And this changing?","commit_id":"787e592c64fc0fb3fb9bf9380728912c82a358b7"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"7bec491c6733ff4252f353d659e4549018ef8fe7","unresolved":false,"context_lines":[{"line_number":872,"context_line":"            dib_cmd \u003d \u0027nodepool/tests/fake-image-create\u0027"},{"line_number":873,"context_line":"        else:"},{"line_number":874,"context_line":"            dib_cmd \u003d \u0027disk-image-create\u0027"},{"line_number":875,"context_line":""},{"line_number":876,"context_line":"        cmd \u003d (\u0027%s -x -t %s --no-tmpfs %s -o %s %s\u0027 %"},{"line_number":877,"context_line":"               (dib_cmd, img_types, qemu_img_options, filename, img_elements))"},{"line_number":878,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9a1a9d01_25a8b976","side":"PARENT","line":875,"in_reply_to":"9a1a9d01_6cd0def6","updated":"2015-09-29 17:30:59.000000000","message":"Same reason","commit_id":"787e592c64fc0fb3fb9bf9380728912c82a358b7"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"18880a9159eb0c27db02b63e2213c617aa8461c4","unresolved":false,"context_lines":[{"line_number":1069,"context_line":"                image_id\u003dimage_id, config_drive\u003dself.image.config_drive,"},{"line_number":1070,"context_line":"                nodepool_snapshot_image_id\u003dself.snap_image.id)[\u0027id\u0027]"},{"line_number":1071,"context_line":"        except Exception:"},{"line_number":1072,"context_line":"            if not self.manager.deleteKeypair(key_name):"},{"line_number":1073,"context_line":"                self.log.debug("},{"line_number":1074,"context_line":"                    \u0027Deleted keypair for failed image build %s\u0027 %"},{"line_number":1075,"context_line":"                    self.snap_image.id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_51980bc0","line":1072,"updated":"2015-09-29 18:50:18.000000000","message":"Will this raise an exception as above if the cloud does not support keypairs? or will it return falsey values always?","commit_id":"a38deac321a2f5a9d7951fd1eab03c8624d06482"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"18880a9159eb0c27db02b63e2213c617aa8461c4","unresolved":false,"context_lines":[{"line_number":1348,"context_line":"                \u0027template-{image.name}-{timestamp}\u0027"},{"line_number":1349,"context_line":"            )"},{"line_number":1350,"context_line":"            p.image_type \u003d provider.get("},{"line_number":1351,"context_line":"                \u0027image-type\u0027, p.cloud_config.config[\u0027image_format\u0027])"},{"line_number":1352,"context_line":"            p.images \u003d {}"},{"line_number":1353,"context_line":"            for image in provider[\u0027images\u0027]:"},{"line_number":1354,"context_line":"                i \u003d ProviderImage()"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_91f0e3fe","line":1351,"updated":"2015-09-29 18:50:18.000000000","message":"This really should be external to the squash since it isn\u0027t related to shade (but its a nice addition).","commit_id":"a38deac321a2f5a9d7951fd1eab03c8624d06482"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"2e29633f201ec38e8323602f8f0fce0143b0ace0","unresolved":false,"context_lines":[{"line_number":476,"context_line":"            config_drive\u003dself.image.config_drive,"},{"line_number":477,"context_line":"            nodepool_node_id\u003dself.node_id,"},{"line_number":478,"context_line":"            nodepool_image_name\u003dself.image.name,"},{"line_number":479,"context_line":"            wait\u003dTrue)"},{"line_number":480,"context_line":"        server_id \u003d server[\u0027id\u0027]"},{"line_number":481,"context_line":"        self.node.external_id \u003d server_id"},{"line_number":482,"context_line":"        session.commit()"}],"source_content_type":"text/x-python","patch_set":61,"id":"fa0719c6_f9088c2f","line":479,"updated":"2016-03-22 18:14:44.000000000","message":"Why are we making this change from PS 60?  Don\u0027t we want to get the server ID here ASAP and store it in the database, then wait for the server to come online?","commit_id":"eea51ac1b54d4c8419d677942f404daa1d76a729"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"da227495c6ea8979b69356f95fb75ef9f4385cac","unresolved":false,"context_lines":[{"line_number":2010,"context_line":"                                           meta[\u0027nodepool_provider_name\u0027]))"},{"line_number":2011,"context_line":"                        continue"},{"line_number":2012,"context_line":"                    snap_image_id \u003d meta.get(\u0027nodepool_snapshot_image_id\u0027)"},{"line_number":2013,"context_line":"                    node_id \u003d meta.get(\u0027nodepool_node_id\u0027)"},{"line_number":2014,"context_line":"                    if snap_image_id:"},{"line_number":2015,"context_line":"                        if session.getSnapshotImage(snap_image_id):"},{"line_number":2016,"context_line":"                            continue"}],"source_content_type":"text/x-python","patch_set":83,"id":"da0c15f0_d25e8144","line":2013,"updated":"2016-03-25 14:39:21.000000000","message":"Nothing about the metadata handling here should change in this patch.","commit_id":"1b1293ba96012bfcff38f9f13706069f8cee48e8"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"495e7c48856adc3b15c5f82c14ead6b3b032e55e","unresolved":false,"context_lines":[{"line_number":930,"context_line":"                nodepool_snapshot_image_id\u003dself.snap_image.id)"},{"line_number":931,"context_line":"            server_id \u003d server[\u0027id\u0027]"},{"line_number":932,"context_line":"        except Exception:"},{"line_number":933,"context_line":"            if not self.manager.deleteKeypair(key_name):"},{"line_number":934,"context_line":"                self.log.debug("},{"line_number":935,"context_line":"                    \u0027Deleted keypair for failed image build %s\u0027 %"},{"line_number":936,"context_line":"                    self.snap_image.id)"}],"source_content_type":"text/x-python","patch_set":90,"id":"da0c15f0_61918e52","line":933,"updated":"2016-03-25 23:46:13.000000000","message":"deleteKeypair should return True when it successfully deletes a key. This means this if block only fires when delete fails but here we are logging a successful keydeletion.\n\nTo fix this I think you need to remove the not in the condition and possibly add an else case to say \"failed to delete keypair for failed image build\".","commit_id":"aaedc82e7a9c4aa5f3e953aea37ad086fbe5ce96"}],"nodepool/provider_manager.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"18880a9159eb0c27db02b63e2213c617aa8461c4","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            manager\u003dself,"},{"line_number":134,"context_line":"            **self.provider.cloud_config.config)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def runTask(self, task):"},{"line_number":137,"context_line":"        try:"},{"line_number":138,"context_line":"            task.run(self._client)"},{"line_number":139,"context_line":"        except requests.exceptions.ProxyError:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_711f4f08","line":136,"updated":"2015-09-29 18:50:18.000000000","message":"It may be worth documenting in nodepool how the taskmanager integration with shade works. This runTask method is just sort of hanging out here and isn\u0027t really clear on why it exists. AIUI it is because shade is using these task managers to execute its tasks.","commit_id":"a38deac321a2f5a9d7951fd1eab03c8624d06482"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"18880a9159eb0c27db02b63e2213c617aa8461c4","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    def runTask(self, task):"},{"line_number":137,"context_line":"        try:"},{"line_number":138,"context_line":"            task.run(self._client)"},{"line_number":139,"context_line":"        except requests.exceptions.ProxyError:"},{"line_number":140,"context_line":"            # Try to get a new client object if we get a ProxyError"},{"line_number":141,"context_line":"            self.log.exception(\u0027Resetting client due to ProxyError\u0027)"},{"line_number":142,"context_line":"            self.resetClient()"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_b143a712","line":139,"updated":"2015-09-29 18:50:18.000000000","message":"If we are removing the test for this shouldn\u0027t we just remove it?","commit_id":"a38deac321a2f5a9d7951fd1eab03c8624d06482"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"da227495c6ea8979b69356f95fb75ef9f4385cac","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        if name in self._images:"},{"line_number":197,"context_line":"            del self._images[name]"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        with shade_inner_exceptions():"},{"line_number":200,"context_line":"            result \u003d self._client.delete_image(name)"},{"line_number":201,"context_line":"        return result"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":83,"id":"da0c15f0_f27e25ad","line":199,"updated":"2016-03-25 14:39:21.000000000","message":"You can return from inside a context manager; the temporary variable assignment is not necessary.","commit_id":"1b1293ba96012bfcff38f9f13706069f8cee48e8"}],"nodepool/tests/test_commands.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"18880a9159eb0c27db02b63e2213c617aa8461c4","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        def fail_list(self):"},{"line_number":125,"context_line":"            raise RuntimeError(\u0027Fake list error\u0027)"},{"line_number":126,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":127,"context_line":"            \u0027nodepool.fakeprovider.FakeOpenStackCloud.list_servers\u0027,"},{"line_number":128,"context_line":"            fail_list))"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        configfile \u003d self.setup_config(\"node_cmd.yaml\")"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_761f4508","line":127,"updated":"2015-09-29 18:50:18.000000000","message":"This should list images not servers.","commit_id":"a38deac321a2f5a9d7951fd1eab03c8624d06482"}],"nodepool/tests/test_nodepool.py":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"7828ad314c6b040ffcc561ab61280942328b4cc6","unresolved":false,"context_lines":[{"line_number":320,"context_line":"            # Make sure our old node is in delete state"},{"line_number":321,"context_line":"            self.assertEqual(len(deleted_nodes), 1)"},{"line_number":322,"context_line":"            self.assertEqual(node_id, deleted_nodes[0].id)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    #def test_proxy_timeout(self):"},{"line_number":325,"context_line":"    #    \"\"\"Test that we re-run a task after a ProxyError\"\"\""},{"line_number":326,"context_line":"    #    configfile \u003d self.setup_config(\u0027node.yaml\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a1a9d01_4c0e3a3c","line":323,"updated":"2015-09-29 16:35:01.000000000","message":"I think responsibility for this behavior has moved to shade, so we can remove the test.","commit_id":"46f8c56bc2ac854353594751810fed9493b73ccf"}]}
