)]}'
{"contrib/rackspace/heat/engine/plugins/cloud_server.py":[{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"17acb23edd396d57deef30311d90ab86013927a3","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        if not self._check_active(server):"},{"line_number":367,"context_line":"            return False"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        #import ipdb; ipdb.set_trace()"},{"line_number":370,"context_line":"        server.get()"},{"line_number":371,"context_line":"        if \u0027rack_connect\u0027 in self.context.roles:  # Account has RackConnect"},{"line_number":372,"context_line":"            if \u0027rackconnect_automation_status\u0027 not in server.metadata:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BSsE%3D","line":369,"updated":"2013-11-27 19:52:11.000000000","message":"It seems you forgot to remove these debug statements.","commit_id":"37d9cab8c4dd299f2200be801a8da3895bb4d032"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"4403cb33b7e711e8b20b0e950dd455e1455e9e5a","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        if not self._check_active(server):"},{"line_number":367,"context_line":"            return False"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        #import ipdb; ipdb.set_trace()"},{"line_number":370,"context_line":"        server.get()"},{"line_number":371,"context_line":"        if \u0027rack_connect\u0027 in self.context.roles:  # Account has RackConnect"},{"line_number":372,"context_line":"            if \u0027rackconnect_automation_status\u0027 not in server.metadata:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BSZc%3D","line":369,"in_reply_to":"AAAATn%2F%2BSsE%3D","updated":"2013-11-27 20:36:33.000000000","message":"Done","commit_id":"37d9cab8c4dd299f2200be801a8da3895bb4d032"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"86d9a9955f657859e8946cab3edbd13d32cbcddc","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        return self._server"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    @property"},{"line_number":181,"context_line":"    def distro(self):"},{"line_number":182,"context_line":"        \"\"\"Get the Linux distribution for this server.\"\"\""},{"line_number":183,"context_line":"        if self.properties[\u0027image\u0027] is not None:"},{"line_number":184,"context_line":"            if self._distro is None:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BR3E%3D","line":181,"updated":"2013-11-27 23:18:47.000000000","message":"I wonder if this should eventually be exposed as an OS::Nova::Server resource attribute?","commit_id":"6a6de2612ac00ab476eb56d7b879a0a7d5584810"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"8e1f9832fb954f58c803724530f5a9e79092de9e","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        return self._server"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    @property"},{"line_number":181,"context_line":"    def distro(self):"},{"line_number":182,"context_line":"        \"\"\"Get the Linux distribution for this server.\"\"\""},{"line_number":183,"context_line":"        if self.properties[\u0027image\u0027] is not None:"},{"line_number":184,"context_line":"            if self._distro is None:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9tOQ%3D","line":181,"in_reply_to":"AAAATn%2F%2BR3E%3D","updated":"2013-12-06 22:12:22.000000000","message":"Done","commit_id":"6a6de2612ac00ab476eb56d7b879a0a7d5584810"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"6281a1585643048cf088f87a03fffd06fac3d2d1","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                logger.debug(\"Calling nova().images.get()\")"},{"line_number":186,"context_line":"                image_data \u003d self.nova().images.get(self.image)"},{"line_number":187,"context_line":"                self._distro \u003d image_data.metadata[\u0027os_distro\u0027]"},{"line_number":188,"context_line":"            return self._distro"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    @property"},{"line_number":191,"context_line":"    def script(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BR5k%3D","line":188,"updated":"2013-11-28 00:08:57.000000000","message":"So we may return None as the distro, is that expected?","commit_id":"6a6de2612ac00ab476eb56d7b879a0a7d5584810"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"8e1f9832fb954f58c803724530f5a9e79092de9e","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                logger.debug(\"Calling nova().images.get()\")"},{"line_number":186,"context_line":"                image_data \u003d self.nova().images.get(self.image)"},{"line_number":187,"context_line":"                self._distro \u003d image_data.metadata[\u0027os_distro\u0027]"},{"line_number":188,"context_line":"            return self._distro"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    @property"},{"line_number":191,"context_line":"    def script(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9tPA%3D","line":188,"in_reply_to":"AAAATn%2F%2BR5k%3D","updated":"2013-12-06 22:12:22.000000000","message":"Not sure what you mean.  When would that happen?","commit_id":"6a6de2612ac00ab476eb56d7b879a0a7d5584810"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"6281a1585643048cf088f87a03fffd06fac3d2d1","unresolved":false,"context_lines":[{"line_number":260,"context_line":"        \"\"\"Validate user parameters.\"\"\""},{"line_number":261,"context_line":"        super(CloudServer, self).validate()"},{"line_number":262,"context_line":"        self.flavor"},{"line_number":263,"context_line":"        self.image"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        # It\u0027s okay if there\u0027s no script, as long as user_data and"},{"line_number":266,"context_line":"        # metadata are empty"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BR5g%3D","line":263,"updated":"2013-11-28 00:08:57.000000000","message":"Why do we need these two lines? It seems they only cache the values into _flavor and _image, but they\u0027re not used anywhere else in this file.","commit_id":"6a6de2612ac00ab476eb56d7b879a0a7d5584810"},{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"fee0b3e307691b79b2ba26423609304641d19cb0","unresolved":false,"context_lines":[{"line_number":260,"context_line":"        \"\"\"Validate user parameters.\"\"\""},{"line_number":261,"context_line":"        super(CloudServer, self).validate()"},{"line_number":262,"context_line":"        self.flavor"},{"line_number":263,"context_line":"        self.image"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        # It\u0027s okay if there\u0027s no script, as long as user_data and"},{"line_number":266,"context_line":"        # metadata are empty"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F95XI%3D","line":263,"in_reply_to":"AAAATn%2F%2BR5g%3D","updated":"2013-12-04 19:01:38.000000000","message":"They also validate the image and flavor names/ids","commit_id":"6a6de2612ac00ab476eb56d7b879a0a7d5584810"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"6281a1585643048cf088f87a03fffd06fac3d2d1","unresolved":false,"context_lines":[{"line_number":308,"context_line":"        security_groups \u003d self.properties.get(\u0027security_groups\u0027, [])"},{"line_number":309,"context_line":"        userdata \u003d self.properties.get(\u0027user_data\u0027, \u0027\u0027)"},{"line_number":310,"context_line":"        flavor \u003d self.properties[\u0027flavor\u0027]"},{"line_number":311,"context_line":"        availability_zone \u003d self.properties[\u0027availability_zone\u0027]"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        # Generate SSH public/private keypair"},{"line_number":314,"context_line":"        if self._private_key is not None:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BR4c%3D","line":311,"updated":"2013-11-28 00:08:57.000000000","message":"this is just nit picking that we could do without, but it would be nice to have all properties.get() or properties[\u0027something\u0027]","commit_id":"6a6de2612ac00ab476eb56d7b879a0a7d5584810"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"8e1f9832fb954f58c803724530f5a9e79092de9e","unresolved":false,"context_lines":[{"line_number":308,"context_line":"        security_groups \u003d self.properties.get(\u0027security_groups\u0027, [])"},{"line_number":309,"context_line":"        userdata \u003d self.properties.get(\u0027user_data\u0027, \u0027\u0027)"},{"line_number":310,"context_line":"        flavor \u003d self.properties[\u0027flavor\u0027]"},{"line_number":311,"context_line":"        availability_zone \u003d self.properties[\u0027availability_zone\u0027]"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        # Generate SSH public/private keypair"},{"line_number":314,"context_line":"        if self._private_key is not None:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9tJ4%3D","line":311,"in_reply_to":"AAAATn%2F%2BR4c%3D","updated":"2013-12-06 22:12:22.000000000","message":"Done","commit_id":"6a6de2612ac00ab476eb56d7b879a0a7d5584810"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"79c9766156804f344028284b3196e2248765a1d0","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        self._private_key \u003d None"},{"line_number":126,"context_line":"        self._server \u003d None"},{"line_number":127,"context_line":"        self._distro \u003d None"},{"line_number":128,"context_line":"        self._flavor \u003d None"},{"line_number":129,"context_line":"        self._image \u003d None"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BhmA%3D","line":128,"updated":"2014-01-24 19:07:44.000000000","message":"I believe this is not required.","commit_id":"73e2c163e813c8ad124f35ddef10801ca94c0c1c"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"ff209d3a4e5fbdefa0f42f1cedfc9f3f2aa19c2e","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        self._private_key \u003d None"},{"line_number":126,"context_line":"        self._server \u003d None"},{"line_number":127,"context_line":"        self._distro \u003d None"},{"line_number":128,"context_line":"        self._flavor \u003d None"},{"line_number":129,"context_line":"        self._image \u003d None"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BhdM%3D","line":128,"in_reply_to":"AAAAUH%2F%2BhmA%3D","updated":"2014-01-24 20:14:57.000000000","message":"Done","commit_id":"73e2c163e813c8ad124f35ddef10801ca94c0c1c"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"79c9766156804f344028284b3196e2248765a1d0","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        self._server \u003d None"},{"line_number":127,"context_line":"        self._distro \u003d None"},{"line_number":128,"context_line":"        self._flavor \u003d None"},{"line_number":129,"context_line":"        self._image \u003d None"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    @property"},{"line_number":132,"context_line":"    def server(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2Bhl4%3D","line":129,"updated":"2014-01-24 19:07:44.000000000","message":"not required.","commit_id":"73e2c163e813c8ad124f35ddef10801ca94c0c1c"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"ff209d3a4e5fbdefa0f42f1cedfc9f3f2aa19c2e","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        self._server \u003d None"},{"line_number":127,"context_line":"        self._distro \u003d None"},{"line_number":128,"context_line":"        self._flavor \u003d None"},{"line_number":129,"context_line":"        self._image \u003d None"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    @property"},{"line_number":132,"context_line":"    def server(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BhdI%3D","line":129,"in_reply_to":"AAAAUH%2F%2Bhl4%3D","updated":"2014-01-24 20:14:57.000000000","message":"See comment below on line 178.","commit_id":"73e2c163e813c8ad124f35ddef10801ca94c0c1c"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"79c9766156804f344028284b3196e2248765a1d0","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        \"\"\"Return the Linux distribution for this server.\"\"\""},{"line_number":141,"context_line":"        # TODO(jason): Update this to work with bootable volumes"},{"line_number":142,"context_line":"        # (image would be None)"},{"line_number":143,"context_line":"        if self.properties.get(self.IMAGE) is not None:"},{"line_number":144,"context_line":"            if self._distro is None:"},{"line_number":145,"context_line":"                image_data \u003d self.nova().images.get(self.image)"},{"line_number":146,"context_line":"                self._distro \u003d image_data.metadata[\u0027os_distro\u0027]"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2Bhj8%3D","line":143,"updated":"2014-01-24 19:07:44.000000000","message":"nit. Here you could avoid nested if.\nif self.properties.get(self.IMAGE) and not self._distro:\n    self._distro \u003d ....\n \nreturn self._distro","commit_id":"73e2c163e813c8ad124f35ddef10801ca94c0c1c"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"ff209d3a4e5fbdefa0f42f1cedfc9f3f2aa19c2e","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        \"\"\"Return the Linux distribution for this server.\"\"\""},{"line_number":141,"context_line":"        # TODO(jason): Update this to work with bootable volumes"},{"line_number":142,"context_line":"        # (image would be None)"},{"line_number":143,"context_line":"        if self.properties.get(self.IMAGE) is not None:"},{"line_number":144,"context_line":"            if self._distro is None:"},{"line_number":145,"context_line":"                image_data \u003d self.nova().images.get(self.image)"},{"line_number":146,"context_line":"                self._distro \u003d image_data.metadata[\u0027os_distro\u0027]"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2Bhao%3D","line":143,"in_reply_to":"AAAAUH%2F%2Bhj8%3D","updated":"2014-01-24 20:14:57.000000000","message":"Done","commit_id":"73e2c163e813c8ad124f35ddef10801ca94c0c1c"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"79c9766156804f344028284b3196e2248765a1d0","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            return base_script"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @property"},{"line_number":170,"context_line":"    def flavor(self):"},{"line_number":171,"context_line":"        \"\"\"Return the server\u0027s flavor ID.\"\"\""},{"line_number":172,"context_line":"        if self._flavor is None:"},{"line_number":173,"context_line":"            flavor \u003d self.properties[self.FLAVOR]"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2Bhlo%3D","line":170,"updated":"2014-01-24 19:07:44.000000000","message":"remove this property, it seems this is not used any more.","commit_id":"73e2c163e813c8ad124f35ddef10801ca94c0c1c"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"ff209d3a4e5fbdefa0f42f1cedfc9f3f2aa19c2e","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            return base_script"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @property"},{"line_number":170,"context_line":"    def flavor(self):"},{"line_number":171,"context_line":"        \"\"\"Return the server\u0027s flavor ID.\"\"\""},{"line_number":172,"context_line":"        if self._flavor is None:"},{"line_number":173,"context_line":"            flavor \u003d self.properties[self.FLAVOR]"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BhfQ%3D","line":170,"in_reply_to":"AAAAUH%2F%2Bhlo%3D","updated":"2014-01-24 20:14:57.000000000","message":"Done","commit_id":"73e2c163e813c8ad124f35ddef10801ca94c0c1c"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"79c9766156804f344028284b3196e2248765a1d0","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        return self._flavor"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    @property"},{"line_number":178,"context_line":"    def image(self):"},{"line_number":179,"context_line":"        \"\"\"Return the server\u0027s image ID.\"\"\""},{"line_number":180,"context_line":"        if self._image is None:"},{"line_number":181,"context_line":"            image \u003d self.properties.get(self.IMAGE)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BhlY%3D","line":178,"updated":"2014-01-24 19:07:44.000000000","message":"this property is not being used.","commit_id":"73e2c163e813c8ad124f35ddef10801ca94c0c1c"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"ff209d3a4e5fbdefa0f42f1cedfc9f3f2aa19c2e","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        return self._flavor"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    @property"},{"line_number":178,"context_line":"    def image(self):"},{"line_number":179,"context_line":"        \"\"\"Return the server\u0027s image ID.\"\"\""},{"line_number":180,"context_line":"        if self._image is None:"},{"line_number":181,"context_line":"            image \u003d self.properties.get(self.IMAGE)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2Bhe8%3D","line":178,"in_reply_to":"AAAAUH%2F%2BhlY%3D","updated":"2014-01-24 20:14:57.000000000","message":"It\u0027s being used in the distro property above.","commit_id":"73e2c163e813c8ad124f35ddef10801ca94c0c1c"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"79c9766156804f344028284b3196e2248765a1d0","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                sftp.close()"},{"line_number":282,"context_line":"                transport.close()"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    def _personality_files(self):"},{"line_number":285,"context_line":"        # Generate SSH public/private keypair"},{"line_number":286,"context_line":"        if self._private_key is not None:"},{"line_number":287,"context_line":"            rsa \u003d RSA.importKey(self._private_key)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2BhhI%3D","line":284,"updated":"2014-01-24 19:07:44.000000000","message":"this method was not used(unless I am missing something)","commit_id":"73e2c163e813c8ad124f35ddef10801ca94c0c1c"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"0ab48903949e316c40fb41985cb13d1fb4bfd135","unresolved":false,"context_lines":[{"line_number":281,"context_line":"                sftp.close()"},{"line_number":282,"context_line":"                transport.close()"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    def _personality_files(self):"},{"line_number":285,"context_line":"        # Generate SSH public/private keypair"},{"line_number":286,"context_line":"        if self._private_key is not None:"},{"line_number":287,"context_line":"            rsa \u003d RSA.importKey(self._private_key)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUH%2F%2Bhfw%3D","line":284,"in_reply_to":"AAAAUH%2F%2BhhI%3D","updated":"2014-01-24 19:12:57.000000000","message":"I see, it was used.\nsorry... I missed dependency patch.","commit_id":"73e2c163e813c8ad124f35ddef10801ca94c0c1c"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"560a9cea566eb5f9bb9100d2a6e7236ee93b8564","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        if personality:"},{"line_number":208,"context_line":"            if \"/root/.ssh/authorized_keys\" in personality:"},{"line_number":209,"context_line":"                msg \u003d _(\"The personality property may not contain a key \""},{"line_number":210,"context_line":"                        \"of \\\"/root/.ssh/authorized_keys\\\"\")"},{"line_number":211,"context_line":"                raise exception.StackValidationFailed(message\u003dmsg)"},{"line_number":212,"context_line":"            elif len(personality) \u003e 4:"},{"line_number":213,"context_line":"                msg \u003d _(\"The personality property may not contain \""}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2BKXE%3D","line":210,"updated":"2014-01-30 05:41:18.000000000","message":"Maybe you could use single quotes here and avoid having to escape characters?","commit_id":"2f15313499ac341b75f4026252ec1fa9f959d106"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"560a9cea566eb5f9bb9100d2a6e7236ee93b8564","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        # It\u0027s important that this runs before the personality files"},{"line_number":218,"context_line":"        # validation above because otherwise the error message could"},{"line_number":219,"context_line":"        # be wrong if len(personality) \u003e 5"},{"line_number":220,"context_line":"        super(CloudServer, self).validate()"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        # Validate that user_data is passed for servers with bootable"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2BKTs%3D","line":219,"updated":"2014-01-30 05:41:18.000000000","message":"This comment is confusing. Should the second validation be run AFTER the validation above? Also, maybe a short explanation of what would go wrong?","commit_id":"2f15313499ac341b75f4026252ec1fa9f959d106"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"60f156fe5f906211bb6e2c779f3f424ad4989793","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        mc_status \u003d server.metadata[\u0027rax_service_level_automation\u0027]"},{"line_number":296,"context_line":"        logger.debug(_(\"Managed Cloud automation status: \") + mc_status)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        if mc_status \u003d\u003d \u0027In Progress\u0027:"},{"line_number":299,"context_line":"            return False"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        elif mc_status \u003d\u003d \u0027Complete\u0027:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2BGk4%3D","line":298,"updated":"2014-01-30 04:21:12.000000000","message":"any chance of some constants?","commit_id":"2f15313499ac341b75f4026252ec1fa9f959d106"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"560a9cea566eb5f9bb9100d2a6e7236ee93b8564","unresolved":false,"context_lines":[{"line_number":299,"context_line":"            return False"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        elif mc_status \u003d\u003d \u0027Complete\u0027:"},{"line_number":302,"context_line":"            pass"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        elif mc_status \u003d\u003d \u0027Build Error\u0027:"},{"line_number":305,"context_line":"            raise exception.Error(_(\"Managed Cloud automation failed\"))"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2BKEs%3D","line":302,"updated":"2014-01-30 05:41:18.000000000","message":"Since we already have more than one return branch any way, shouldn\u0027t this return True instead of passing?","commit_id":"2f15313499ac341b75f4026252ec1fa9f959d106"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"560a9cea566eb5f9bb9100d2a6e7236ee93b8564","unresolved":false,"context_lines":[{"line_number":357,"context_line":"        # Connect via SSH and run script"},{"line_number":358,"context_line":"        cmd \u003d \"bash -ex /root/heat-script.sh \u003e /root/heat-script.log 2\u003e\u00261\""},{"line_number":359,"context_line":"        exit_code \u003d self._run_ssh_command(cmd)"},{"line_number":360,"context_line":"        if exit_code \u003d\u003d 42:"},{"line_number":361,"context_line":"            raise exception.Error(self.SCRIPT_ERROR_MSG %"},{"line_number":362,"context_line":"                                  {\u0027path\u0027: \"cfn-userdata\","},{"line_number":363,"context_line":"                                   \u0027log\u0027: \"/root/cfn-userdata.log\"})"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2BKMM%3D","line":360,"updated":"2014-01-30 05:41:18.000000000","message":"Maybe 42 could be assigned to a constant with an explanation of the error?","commit_id":"2f15313499ac341b75f4026252ec1fa9f959d106"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"560a9cea566eb5f9bb9100d2a6e7236ee93b8564","unresolved":false,"context_lines":[{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        if \u0027rax_managed\u0027 in self.context.roles and not \\"},{"line_number":381,"context_line":"           self._check_managed_cloud_complete(server):"},{"line_number":382,"context_line":"            return False"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        if self.has_userdata:"},{"line_number":385,"context_line":"            self._run_userdata()"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAUH%2F%2BJ%2F4%3D","line":382,"updated":"2014-01-30 05:41:18.000000000","message":"Can the same account be rack_connect and rax_managed at the same time?","commit_id":"2f15313499ac341b75f4026252ec1fa9f959d106"},{"author":{"_account_id":7395,"name":"Andrew Plunk","email":"andrew.plunk@rackspace.com","username":"aplunk"},"change_message_id":"e3c6b7c630c23d9bbb0b73b1c3c5dffbd21d9125","unresolved":false,"context_lines":[{"line_number":295,"context_line":"            rsa \u003d RSA.generate(1024)"},{"line_number":296,"context_line":"        self.private_key \u003d rsa.exportKey()"},{"line_number":297,"context_line":"        public_key \u003d [rsa.publickey().exportKey(\u0027OpenSSH\u0027)]"},{"line_number":298,"context_line":"        personality \u003d {\"/root/.ssh/authorized_keys\": \u0027\\n\u0027.join(public_key)}"},{"line_number":299,"context_line":"        user_personality \u003d self.properties.get(self.PERSONALITY)"},{"line_number":300,"context_line":"        if user_personality:"},{"line_number":301,"context_line":"            personality.update(user_personality)"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUX%2F%2F%2Fic%3D","line":298,"updated":"2014-02-07 21:32:49.000000000","message":"Won\u0027t this overwrite keys passed in via the key_name property?","commit_id":"1a8708573f71644956e084ba8fad0b98a305c4a8"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"93f2c45ea113be63b8b9b0a0a5102fe08af53967","unresolved":false,"context_lines":[{"line_number":295,"context_line":"            rsa \u003d RSA.generate(1024)"},{"line_number":296,"context_line":"        self.private_key \u003d rsa.exportKey()"},{"line_number":297,"context_line":"        public_key \u003d [rsa.publickey().exportKey(\u0027OpenSSH\u0027)]"},{"line_number":298,"context_line":"        personality \u003d {\"/root/.ssh/authorized_keys\": \u0027\\n\u0027.join(public_key)}"},{"line_number":299,"context_line":"        user_personality \u003d self.properties.get(self.PERSONALITY)"},{"line_number":300,"context_line":"        if user_personality:"},{"line_number":301,"context_line":"            personality.update(user_personality)"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUX%2F%2F%2FX4%3D","line":298,"in_reply_to":"AAAAUX%2F%2F%2Fic%3D","updated":"2014-02-07 22:05:55.000000000","message":"Yes.  I will fix this.  Thanks.","commit_id":"1a8708573f71644956e084ba8fad0b98a305c4a8"}],"contrib/rackspace/heat/tests/test_cloud_server.py":[{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"17acb23edd396d57deef30311d90ab86013927a3","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        self.m.ReplayAll()"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"        server \u003d create_server(u\u0027vda\u0027)"},{"line_number":496,"context_line":"        self.assertEqual(server.validate(), None)"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"        server \u003d create_server(\u0027vda\u0027)"},{"line_number":499,"context_line":"        self.assertEqual(server.validate(), None)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BSnw%3D","line":496,"updated":"2013-11-27 19:52:11.000000000","message":"probably this is a minor thing, just swap the assertEqual args.\nPlease fix this in other places as well.","commit_id":"37d9cab8c4dd299f2200be801a8da3895bb4d032"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"4403cb33b7e711e8b20b0e950dd455e1455e9e5a","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        self.m.ReplayAll()"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"        server \u003d create_server(u\u0027vda\u0027)"},{"line_number":496,"context_line":"        self.assertEqual(server.validate(), None)"},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"        server \u003d create_server(\u0027vda\u0027)"},{"line_number":499,"context_line":"        self.assertEqual(server.validate(), None)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BSY8%3D","line":496,"in_reply_to":"AAAATn%2F%2BSnw%3D","updated":"2013-11-27 20:36:33.000000000","message":"I copied all of these tests from test_server.py, where they also had the incorrect order.  If it\u0027s okay, I\u0027d like to fix this as a follow-up review so I can fix all of the assertEquals here and in that file at the same time.","commit_id":"37d9cab8c4dd299f2200be801a8da3895bb4d032"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"6281a1585643048cf088f87a03fffd06fac3d2d1","unresolved":false,"context_lines":[{"line_number":1413,"context_line":"        return_server \u003d self.fc.servers.list()[1]"},{"line_number":1414,"context_line":"        return_server.metadata \u003d {\u0027rax_service_level_automation\u0027: \u0027FOO\u0027}"},{"line_number":1415,"context_line":"        self.m.StubOutWithMock(return_server, \u0027get\u0027)"},{"line_number":1416,"context_line":"        return_server.get()"},{"line_number":1417,"context_line":"        server \u003d self._setup_test_server(return_server,"},{"line_number":1418,"context_line":"                                         \u0027test_managed_cloud_unknown\u0027)"},{"line_number":1419,"context_line":"        server.context.roles \u003d [\u0027rax_managed\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BR2o%3D","line":1416,"updated":"2013-11-28 00:08:57.000000000","message":"Is there a reason why we\u0027re calling this mocked method explicitly here? (same for the other places as well)","commit_id":"6a6de2612ac00ab476eb56d7b879a0a7d5584810"},{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"fee0b3e307691b79b2ba26423609304641d19cb0","unresolved":false,"context_lines":[{"line_number":1413,"context_line":"        return_server \u003d self.fc.servers.list()[1]"},{"line_number":1414,"context_line":"        return_server.metadata \u003d {\u0027rax_service_level_automation\u0027: \u0027FOO\u0027}"},{"line_number":1415,"context_line":"        self.m.StubOutWithMock(return_server, \u0027get\u0027)"},{"line_number":1416,"context_line":"        return_server.get()"},{"line_number":1417,"context_line":"        server \u003d self._setup_test_server(return_server,"},{"line_number":1418,"context_line":"                                         \u0027test_managed_cloud_unknown\u0027)"},{"line_number":1419,"context_line":"        server.context.roles \u003d [\u0027rax_managed\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F95WQ%3D","line":1416,"in_reply_to":"AAAATn%2F%2BR2o%3D","updated":"2013-12-04 19:01:38.000000000","message":"@Anderson so it shows up in the replay.","commit_id":"6a6de2612ac00ab476eb56d7b879a0a7d5584810"}],"contrib/rackspace/heat/tests/test_rackspace_cloud_server.py":[{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"7fab80d00e2e5206d2b608f7211a3f1d10530f3d","unresolved":false,"context_lines":[{"line_number":409,"context_line":"        uuidutils.is_uuid_like(\u00271\u0027).MultipleTimes().AndReturn(True)"},{"line_number":410,"context_line":"        self.m.ReplayAll()"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        self.assertEqual(server.validate(), None)"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        self.m.VerifyAll()"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F91N0%3D","line":412,"updated":"2014-02-03 15:30:03.000000000","message":"self.assertEqual(None, server.validate())","commit_id":"c2b2d80b79e987c94d33a19871da52189d58659f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"f97894092372528a2820c3122867c846b66ac98a","unresolved":false,"context_lines":[{"line_number":409,"context_line":"        uuidutils.is_uuid_like(\u00271\u0027).MultipleTimes().AndReturn(True)"},{"line_number":410,"context_line":"        self.m.ReplayAll()"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        self.assertEqual(server.validate(), None)"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        self.m.VerifyAll()"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F90Cc%3D","line":412,"in_reply_to":"AAAAUH%2F90gs%3D","updated":"2014-02-03 17:55:26.000000000","message":"Done","commit_id":"c2b2d80b79e987c94d33a19871da52189d58659f"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"d38764df9c7a985a6b8e4c98450a809bef8772d3","unresolved":false,"context_lines":[{"line_number":409,"context_line":"        uuidutils.is_uuid_like(\u00271\u0027).MultipleTimes().AndReturn(True)"},{"line_number":410,"context_line":"        self.m.ReplayAll()"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        self.assertEqual(server.validate(), None)"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        self.m.VerifyAll()"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F90QA%3D","line":412,"in_reply_to":"AAAAUH%2F90gs%3D","updated":"2014-02-03 17:11:29.000000000","message":"Thanks Pavlo Shchelokovskyy for correcting.\nyou are right.","commit_id":"c2b2d80b79e987c94d33a19871da52189d58659f"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"252f771769dbff6dfc591047f1a688159da92730","unresolved":false,"context_lines":[{"line_number":409,"context_line":"        uuidutils.is_uuid_like(\u00271\u0027).MultipleTimes().AndReturn(True)"},{"line_number":410,"context_line":"        self.m.ReplayAll()"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        self.assertEqual(server.validate(), None)"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        self.m.VerifyAll()"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F90gs%3D","line":412,"in_reply_to":"AAAAUH%2F91N0%3D","updated":"2014-02-03 16:39:25.000000000","message":"in fact, here and in the next Vijendar comments, it should be assertIsNone(server.validate())","commit_id":"c2b2d80b79e987c94d33a19871da52189d58659f"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"7fab80d00e2e5206d2b608f7211a3f1d10530f3d","unresolved":false,"context_lines":[{"line_number":435,"context_line":"        uuidutils.is_uuid_like(\u00271\u0027).MultipleTimes().AndReturn(True)"},{"line_number":436,"context_line":"        self.m.ReplayAll()"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        self.assertEqual(server.validate(), None)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        self.m.VerifyAll()"},{"line_number":441,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F91Nk%3D","line":438,"updated":"2014-02-03 15:30:03.000000000","message":"self.assertEqual(None, server.validate())","commit_id":"c2b2d80b79e987c94d33a19871da52189d58659f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"f97894092372528a2820c3122867c846b66ac98a","unresolved":false,"context_lines":[{"line_number":435,"context_line":"        uuidutils.is_uuid_like(\u00271\u0027).MultipleTimes().AndReturn(True)"},{"line_number":436,"context_line":"        self.m.ReplayAll()"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        self.assertEqual(server.validate(), None)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        self.m.VerifyAll()"},{"line_number":441,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F90CU%3D","line":438,"in_reply_to":"AAAAUH%2F91Nk%3D","updated":"2014-02-03 17:55:26.000000000","message":"Done","commit_id":"c2b2d80b79e987c94d33a19871da52189d58659f"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"7fab80d00e2e5206d2b608f7211a3f1d10530f3d","unresolved":false,"context_lines":[{"line_number":597,"context_line":"        self.m.ReplayAll()"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        server \u003d create_server(u\u0027vda\u0027)"},{"line_number":600,"context_line":"        self.assertEqual(server.validate(), None)"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        server \u003d create_server(\u0027vda\u0027)"},{"line_number":603,"context_line":"        self.assertEqual(server.validate(), None)"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F91J8%3D","line":600,"updated":"2014-02-03 15:30:03.000000000","message":"swap assertEqual arguments","commit_id":"c2b2d80b79e987c94d33a19871da52189d58659f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"f97894092372528a2820c3122867c846b66ac98a","unresolved":false,"context_lines":[{"line_number":597,"context_line":"        self.m.ReplayAll()"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"        server \u003d create_server(u\u0027vda\u0027)"},{"line_number":600,"context_line":"        self.assertEqual(server.validate(), None)"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        server \u003d create_server(\u0027vda\u0027)"},{"line_number":603,"context_line":"        self.assertEqual(server.validate(), None)"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F90Co%3D","line":600,"in_reply_to":"AAAAUH%2F91J8%3D","updated":"2014-02-03 17:55:26.000000000","message":"Done","commit_id":"c2b2d80b79e987c94d33a19871da52189d58659f"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"7fab80d00e2e5206d2b608f7211a3f1d10530f3d","unresolved":false,"context_lines":[{"line_number":600,"context_line":"        self.assertEqual(server.validate(), None)"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        server \u003d create_server(\u0027vda\u0027)"},{"line_number":603,"context_line":"        self.assertEqual(server.validate(), None)"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"        server \u003d create_server(\u0027vdb\u0027)"},{"line_number":606,"context_line":"        ex \u003d self.assertRaises(exception.StackValidationFailed,"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F91Ik%3D","line":603,"updated":"2014-02-03 15:30:03.000000000","message":"same here.","commit_id":"c2b2d80b79e987c94d33a19871da52189d58659f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"f97894092372528a2820c3122867c846b66ac98a","unresolved":false,"context_lines":[{"line_number":600,"context_line":"        self.assertEqual(server.validate(), None)"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        server \u003d create_server(\u0027vda\u0027)"},{"line_number":603,"context_line":"        self.assertEqual(server.validate(), None)"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"        server \u003d create_server(\u0027vdb\u0027)"},{"line_number":606,"context_line":"        ex \u003d self.assertRaises(exception.StackValidationFailed,"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUH%2F90Cs%3D","line":603,"in_reply_to":"AAAAUH%2F91Ik%3D","updated":"2014-02-03 17:55:26.000000000","message":"Done","commit_id":"c2b2d80b79e987c94d33a19871da52189d58659f"}],"heat/engine/resources/nova_utils.py":[{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"6281a1585643048cf088f87a03fffd06fac3d2d1","unresolved":false,"context_lines":[{"line_number":291,"context_line":"    \"\"\""},{"line_number":292,"context_line":"    volumes \u003d resource.properties[\u0027Volumes\u0027]"},{"line_number":293,"context_line":"    if volumes is None:"},{"line_number":294,"context_line":"        return []"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    return ((vol[\u0027VolumeId\u0027], vol[\u0027Device\u0027]) for vol in volumes)"},{"line_number":297,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BR0E%3D","line":294,"updated":"2013-11-28 00:08:57.000000000","message":"I would rather do:\n     volumes \u003d resource.properties[\u0027Volumes\u0027] or {}\nand not have the \"volumes is None\" check, just as to always return the same object type. Especially because the docstring says it returns an iterator and not a list.","commit_id":"6a6de2612ac00ab476eb56d7b879a0a7d5584810"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"8e1f9832fb954f58c803724530f5a9e79092de9e","unresolved":false,"context_lines":[{"line_number":291,"context_line":"    \"\"\""},{"line_number":292,"context_line":"    volumes \u003d resource.properties[\u0027Volumes\u0027]"},{"line_number":293,"context_line":"    if volumes is None:"},{"line_number":294,"context_line":"        return []"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    return ((vol[\u0027VolumeId\u0027], vol[\u0027Device\u0027]) for vol in volumes)"},{"line_number":297,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9tP4%3D","line":294,"in_reply_to":"AAAATn%2F%2BR0E%3D","updated":"2013-12-06 22:12:22.000000000","message":"This was code I moved from instance.py.  Turns out I didn\u0027t need it.  The next patch won\u0027t contain this moved code.","commit_id":"6a6de2612ac00ab476eb56d7b879a0a7d5584810"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"6281a1585643048cf088f87a03fffd06fac3d2d1","unresolved":false,"context_lines":[{"line_number":296,"context_line":"    return ((vol[\u0027VolumeId\u0027], vol[\u0027Device\u0027]) for vol in volumes)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"def check_active_attach_volume(resource, cookie):"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    server, volume_attach \u003d cookie"},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BRyk%3D","line":299,"updated":"2013-11-28 00:08:57.000000000","message":"This function could use a docstring since it returns different things at different times (plus exceptions)","commit_id":"6a6de2612ac00ab476eb56d7b879a0a7d5584810"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"8e1f9832fb954f58c803724530f5a9e79092de9e","unresolved":false,"context_lines":[{"line_number":296,"context_line":"    return ((vol[\u0027VolumeId\u0027], vol[\u0027Device\u0027]) for vol in volumes)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"def check_active_attach_volume(resource, cookie):"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    server, volume_attach \u003d cookie"},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9tPs%3D","line":299,"in_reply_to":"AAAATn%2F%2BRyk%3D","updated":"2013-12-06 22:12:22.000000000","message":"This was code I moved from instance.py.  Turns out I didn\u0027t need it.  The next patch won\u0027t contain this moved code.","commit_id":"6a6de2612ac00ab476eb56d7b879a0a7d5584810"},{"author":{"_account_id":9189,"name":"Anderson Mesquita","email":"andersonvom@gmail.com","username":"andersonvom"},"change_message_id":"6281a1585643048cf088f87a03fffd06fac3d2d1","unresolved":false,"context_lines":[{"line_number":305,"context_line":"            server.get()"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        # Some clouds append extra (STATUS) strings to the status"},{"line_number":308,"context_line":"        short_server_status \u003d server.status.split(\u0027(\u0027)[0]"},{"line_number":309,"context_line":"        if short_server_status in deferred_server_statuses:"},{"line_number":310,"context_line":"            return False"},{"line_number":311,"context_line":"        elif server.status \u003d\u003d \u0027ACTIVE\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2BRxU%3D","line":308,"updated":"2013-11-28 00:08:57.000000000","message":"should this be rstrip()\u0027ed? or is the status like \"STATUS(EXTRA)\"","commit_id":"6a6de2612ac00ab476eb56d7b879a0a7d5584810"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"8e1f9832fb954f58c803724530f5a9e79092de9e","unresolved":false,"context_lines":[{"line_number":305,"context_line":"            server.get()"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        # Some clouds append extra (STATUS) strings to the status"},{"line_number":308,"context_line":"        short_server_status \u003d server.status.split(\u0027(\u0027)[0]"},{"line_number":309,"context_line":"        if short_server_status in deferred_server_statuses:"},{"line_number":310,"context_line":"            return False"},{"line_number":311,"context_line":"        elif server.status \u003d\u003d \u0027ACTIVE\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9tPk%3D","line":308,"in_reply_to":"AAAATn%2F%2BRxU%3D","updated":"2013-12-06 22:12:22.000000000","message":"This was code I moved from instance.py.  Turns out I didn\u0027t need it.  The next patch won\u0027t contain this moved code.","commit_id":"6a6de2612ac00ab476eb56d7b879a0a7d5584810"}],"heat/engine/resources/server.py":[{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"2fd787353bed1763833f430480cb51275bbb988f","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        \"\"\"Get the Linux distribution for this server.\"\"\""},{"line_number":223,"context_line":"        if self.properties.get(\u0027image\u0027) is not None:"},{"line_number":224,"context_line":"            if self._distro is None:"},{"line_number":225,"context_line":"                logger.debug(\"Calling nova().images.get()\")"},{"line_number":226,"context_line":"                image_data \u003d self.nova().images.get(self.image)"},{"line_number":227,"context_line":"                self._distro \u003d image_data.metadata[\u0027os_distro\u0027]"},{"line_number":228,"context_line":"            return self._distro"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9qH4%3D","line":225,"updated":"2013-12-09 07:21:35.000000000","message":"any reason that this ^ needs to stay?","commit_id":"9991a9fb287714d1f14df7c1b846705038ae9414"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"9ef15b5d2f96d2b5a31b3c838f38b6bbde62ce74","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        \"\"\"Get the Linux distribution for this server.\"\"\""},{"line_number":223,"context_line":"        if self.properties.get(\u0027image\u0027) is not None:"},{"line_number":224,"context_line":"            if self._distro is None:"},{"line_number":225,"context_line":"                logger.debug(\"Calling nova().images.get()\")"},{"line_number":226,"context_line":"                image_data \u003d self.nova().images.get(self.image)"},{"line_number":227,"context_line":"                self._distro \u003d image_data.metadata[\u0027os_distro\u0027]"},{"line_number":228,"context_line":"            return self._distro"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9oHA%3D","line":225,"in_reply_to":"AAAATn%2F9qH4%3D","updated":"2013-12-09 20:54:39.000000000","message":"Nope, I\u0027ll remove it.","commit_id":"9991a9fb287714d1f14df7c1b846705038ae9414"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"2fd787353bed1763833f430480cb51275bbb988f","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            if self._distro is None:"},{"line_number":225,"context_line":"                logger.debug(\"Calling nova().images.get()\")"},{"line_number":226,"context_line":"                image_data \u003d self.nova().images.get(self.image)"},{"line_number":227,"context_line":"                self._distro \u003d image_data.metadata[\u0027os_distro\u0027]"},{"line_number":228,"context_line":"            return self._distro"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def handle_create(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9qHs%3D","line":227,"updated":"2013-12-09 07:21:35.000000000","message":"Is os_distro always set?","commit_id":"9991a9fb287714d1f14df7c1b846705038ae9414"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"9ef15b5d2f96d2b5a31b3c838f38b6bbde62ce74","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            if self._distro is None:"},{"line_number":225,"context_line":"                logger.debug(\"Calling nova().images.get()\")"},{"line_number":226,"context_line":"                image_data \u003d self.nova().images.get(self.image)"},{"line_number":227,"context_line":"                self._distro \u003d image_data.metadata[\u0027os_distro\u0027]"},{"line_number":228,"context_line":"            return self._distro"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def handle_create(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9mHQ%3D","line":227,"in_reply_to":"AAAATn%2F9qHs%3D","updated":"2013-12-09 20:54:39.000000000","message":"Oops, this is apparently Rackspace-specific.  I will move it back to cloud_server.py.","commit_id":"9991a9fb287714d1f14df7c1b846705038ae9414"},{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"7426e61b190f87072e79846da200bc828168bd24","unresolved":false,"context_lines":[{"line_number":582,"context_line":"                        \u0027service provider\u0027) % limits[\u0027maxServerMeta\u0027]"},{"line_number":583,"context_line":"                raise exception.StackValidationFailed(message\u003dmsg)"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"        personality_files \u003d self.properties.get(\u0027personality_files\u0027)"},{"line_number":586,"context_line":"        if personality_files is not None:"},{"line_number":587,"context_line":"            if len(personality_files) \u003e 5:"},{"line_number":588,"context_line":"                msg \u003d _(\"The personality_files property may not contain \""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FPwE%3D","line":585,"updated":"2014-01-15 23:04:54.000000000","message":"This needs a test.","commit_id":"f6fc6c59fa6f09d738a35e73367b4665739e124f"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"6a672f25064abb7d894a1b5dd485d8ebecbceec7","unresolved":false,"context_lines":[{"line_number":582,"context_line":"                        \u0027service provider\u0027) % limits[\u0027maxServerMeta\u0027]"},{"line_number":583,"context_line":"                raise exception.StackValidationFailed(message\u003dmsg)"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"        personality_files \u003d self.properties.get(\u0027personality_files\u0027)"},{"line_number":586,"context_line":"        if personality_files is not None:"},{"line_number":587,"context_line":"            if len(personality_files) \u003e 5:"},{"line_number":588,"context_line":"                msg \u003d _(\"The personality_files property may not contain \""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FMds%3D","line":585,"in_reply_to":"AAAAUH%2F%2FPwE%3D","updated":"2014-01-16 15:19:44.000000000","message":"Weird, those tests got lost in all the rebasing.  Will add them back.  Thanks.","commit_id":"f6fc6c59fa6f09d738a35e73367b4665739e124f"}],"heat/tests/test_server.py":[{"author":{"_account_id":9046,"name":"Maithem","email":"munshedm@vmware.com","username":"Maithem"},"change_message_id":"9ade9a100f7dd537cdd2fa3d649a9b648e039d5f","unresolved":false,"context_lines":[{"line_number":1228,"context_line":""},{"line_number":1229,"context_line":"        self.m.StubOutWithMock(server, \u0027nova\u0027)"},{"line_number":1230,"context_line":"        server.nova().MultipleTimes().AndReturn(self.fc)"},{"line_number":1231,"context_line":"        self.m.ReplayAll()"},{"line_number":1232,"context_line":""},{"line_number":1233,"context_line":"        exc \u003d self.assertRaises(exception.StackValidationFailed,"},{"line_number":1234,"context_line":"                                server.validate)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2FJUc%3D","line":1231,"updated":"2014-01-17 01:08:59.000000000","message":"Mock should be used instead of mox\n\nhttps://wiki.openstack.org/wiki/ReviewChecklist\n\n Please read: Test Case implementation (Mock vs. Mox)","commit_id":"df5a8de77cb61e0bb02487c4506a0b6888afde0d"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"f17a2610e4bcf8d109014a66ac98a334d858499b","unresolved":false,"context_lines":[{"line_number":1228,"context_line":""},{"line_number":1229,"context_line":"        self.m.StubOutWithMock(server, \u0027nova\u0027)"},{"line_number":1230,"context_line":"        server.nova().MultipleTimes().AndReturn(self.fc)"},{"line_number":1231,"context_line":"        self.m.ReplayAll()"},{"line_number":1232,"context_line":""},{"line_number":1233,"context_line":"        exc \u003d self.assertRaises(exception.StackValidationFailed,"},{"line_number":1234,"context_line":"                                server.validate)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2FHsU%3D","line":1231,"in_reply_to":"AAAAUH%2F%2FJUc%3D","updated":"2014-01-17 08:38:19.000000000","message":"@Maithem: as this is not a new test case but single tests in existing test case, it\u0027s OK to continue to use Mox, as link you gave states.","commit_id":"df5a8de77cb61e0bb02487c4506a0b6888afde0d"}]}
