)]}'
{"contrib/rackspace/heat/engine/plugins/auto_scale.py":[{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"64054a47932d6c28833deef3fa9171aa310894ed","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        if self.resource_id is None:"},{"line_number":258,"context_line":"            return True"},{"line_number":259,"context_line":"        try:"},{"line_number":260,"context_line":"            self.auto_scale().delete(self.resource_id)"},{"line_number":261,"context_line":"        except Forbidden:"},{"line_number":262,"context_line":"            return False"},{"line_number":263,"context_line":"        except NotFound:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FLUo%3D","line":260,"updated":"2013-10-02 22:04:48.000000000","message":"So multiple delete calls to the service don\u0027t cause issues? Is there a better way to poll the group status and move the delete call to handle_delete?","commit_id":"37bf94c4a1552e24120a4265f775530c42688a4e"},{"author":{"_account_id":6800,"name":"Christopher Armstrong","email":"chris.armstrong@rackspace.com","username":"radix"},"change_message_id":"7cf3519a27ec3add2b181289eb99a67dc1ae1359","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        if self.resource_id is None:"},{"line_number":258,"context_line":"            return True"},{"line_number":259,"context_line":"        try:"},{"line_number":260,"context_line":"            self.auto_scale().delete(self.resource_id)"},{"line_number":261,"context_line":"        except Forbidden:"},{"line_number":262,"context_line":"            return False"},{"line_number":263,"context_line":"        except NotFound:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FIEI%3D","line":260,"in_reply_to":"AAAAS3%2F%2FLUo%3D","updated":"2013-10-03 21:03:29.000000000","message":"Right. This is the recommended way to delete a group.\n\nTechnically we could also probably repeatedly view the group and wait until actual_capacity is 0, but I think this is another case where asking for forgiveness is better than asking for permission -- we\u0027ll still need to catch errors that come out of delete() and retry in case something weird happens like the capacity increasing again.","commit_id":"37bf94c4a1552e24120a4265f775530c42688a4e"},{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"64054a47932d6c28833deef3fa9171aa310894ed","unresolved":false,"context_lines":[{"line_number":258,"context_line":"            return True"},{"line_number":259,"context_line":"        try:"},{"line_number":260,"context_line":"            self.auto_scale().delete(self.resource_id)"},{"line_number":261,"context_line":"        except Forbidden:"},{"line_number":262,"context_line":"            return False"},{"line_number":263,"context_line":"        except NotFound:"},{"line_number":264,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FLUM%3D","line":261,"updated":"2013-10-02 22:04:48.000000000","message":"What if I\u0027m Forbidden for other reasons? Seems like this could get us in a position to not actually finishing a delete.","commit_id":"37bf94c4a1552e24120a4265f775530c42688a4e"},{"author":{"_account_id":6800,"name":"Christopher Armstrong","email":"chris.armstrong@rackspace.com","username":"radix"},"change_message_id":"7cf3519a27ec3add2b181289eb99a67dc1ae1359","unresolved":false,"context_lines":[{"line_number":258,"context_line":"            return True"},{"line_number":259,"context_line":"        try:"},{"line_number":260,"context_line":"            self.auto_scale().delete(self.resource_id)"},{"line_number":261,"context_line":"        except Forbidden:"},{"line_number":262,"context_line":"            return False"},{"line_number":263,"context_line":"        except NotFound:"},{"line_number":264,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FIDw%3D","line":261,"in_reply_to":"AAAAS3%2F%2FLUM%3D","updated":"2013-10-03 21:03:29.000000000","message":"Yeah, and I don\u0027t think there\u0027s anything better to do here. 403 is what delete() returns when the group still has servers.\n\nI think, though, that *other* reasons for getting 403 here are exceedingly unlikely -- if we can set the min and max entities of the group, those same right should allow us to delete it, too.","commit_id":"37bf94c4a1552e24120a4265f775530c42688a4e"},{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"b5567d582f232cb52ee7895fafe6a23c217abe2c","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        asclient.update_webhook(**args)"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"    def _resolve_attribute(self, key):"},{"line_number":442,"context_line":"        return unicode(db_api.resource_data_get(self, key))"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"    def handle_delete(self):"},{"line_number":445,"context_line":"        if self.resource_id is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FLK4%3D","line":442,"updated":"2013-10-02 22:08:19.000000000","message":"Should handle NotFound and return None, IMO.","commit_id":"37bf94c4a1552e24120a4265f775530c42688a4e"},{"author":{"_account_id":6800,"name":"Christopher Armstrong","email":"chris.armstrong@rackspace.com","username":"radix"},"change_message_id":"7cf3519a27ec3add2b181289eb99a67dc1ae1359","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        asclient.update_webhook(**args)"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"    def _resolve_attribute(self, key):"},{"line_number":442,"context_line":"        return unicode(db_api.resource_data_get(self, key))"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"    def handle_delete(self):"},{"line_number":445,"context_line":"        if self.resource_id is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FIDY%3D","line":442,"in_reply_to":"AAAAS3%2F%2FLK4%3D","updated":"2013-10-03 21:03:29.000000000","message":"Thanks, I\u0027ll fix this.","commit_id":"37bf94c4a1552e24120a4265f775530c42688a4e"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"5e467e9602a6fb414414802e33a735d5928d2758","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    load_balancers_schema \u003d {"},{"line_number":92,"context_line":"        \u0027loadBalancerId\u0027: {"},{"line_number":93,"context_line":"            \u0027Type\u0027: \u0027String\u0027,"},{"line_number":94,"context_line":"            \u0027Required\u0027: True,"},{"line_number":95,"context_line":"            \u0027Description\u0027: _(\"ID of the load balancer.\")},"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2F7bQ%3D","line":92,"updated":"2013-10-25 03:34:48.000000000","message":"do your templates depend on the camel case in the property identifiers?  These are permanent.  I think something like load_balancer_id would make more sense..","commit_id":"76e5a370ec8b946884b7ea00b5d490cbfb508825"},{"author":{"_account_id":6800,"name":"Christopher Armstrong","email":"chris.armstrong@rackspace.com","username":"radix"},"change_message_id":"f6512b360b16a25fe6f1096cc3020c479860fef5","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    load_balancers_schema \u003d {"},{"line_number":92,"context_line":"        \u0027loadBalancerId\u0027: {"},{"line_number":93,"context_line":"            \u0027Type\u0027: \u0027String\u0027,"},{"line_number":94,"context_line":"            \u0027Required\u0027: True,"},{"line_number":95,"context_line":"            \u0027Description\u0027: _(\"ID of the load balancer.\")},"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FzDc%3D","line":92,"in_reply_to":"AAAATn%2F%2F4XI%3D","updated":"2013-10-28 21:49:55.000000000","message":"We plan to :) That\u0027s why I\u0027m working on the native Heat autoscaling. RS AS and these resources will eventually become obsolete once there\u0027s a native autoscaling API.","commit_id":"76e5a370ec8b946884b7ea00b5d490cbfb508825"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"b45a0388256785f3c0ffd2ca3d16f23ad01a793d","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    load_balancers_schema \u003d {"},{"line_number":92,"context_line":"        \u0027loadBalancerId\u0027: {"},{"line_number":93,"context_line":"            \u0027Type\u0027: \u0027String\u0027,"},{"line_number":94,"context_line":"            \u0027Required\u0027: True,"},{"line_number":95,"context_line":"            \u0027Description\u0027: _(\"ID of the load balancer.\")},"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2F4XI%3D","line":92,"in_reply_to":"AAAATn%2F%2F7To%3D","updated":"2013-10-25 18:55:11.000000000","message":"thats too bad, should rewrite rs autoscale api imo :)  Oh well guess we will have to live with it.","commit_id":"76e5a370ec8b946884b7ea00b5d490cbfb508825"},{"author":{"_account_id":6800,"name":"Christopher Armstrong","email":"chris.armstrong@rackspace.com","username":"radix"},"change_message_id":"638f8c62243d44bbcfd1ab00328185f755234aa3","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    load_balancers_schema \u003d {"},{"line_number":92,"context_line":"        \u0027loadBalancerId\u0027: {"},{"line_number":93,"context_line":"            \u0027Type\u0027: \u0027String\u0027,"},{"line_number":94,"context_line":"            \u0027Required\u0027: True,"},{"line_number":95,"context_line":"            \u0027Description\u0027: _(\"ID of the load balancer.\")},"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2F7To%3D","line":92,"in_reply_to":"AAAATn%2F%2F7bQ%3D","updated":"2013-10-25 05:07:07.000000000","message":"Everyone I\u0027ve talked to has said that Heat resources should reflect the API that they talk to, and these properties match the structure of the Rackspace Auto Scale API exactly, which uses camel case.","commit_id":"76e5a370ec8b946884b7ea00b5d490cbfb508825"},{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"f9985c83c322a6082d91c48e377f10ee5305ff1e","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            \u0027Schema\u0027: {\u0027Type\u0027: \u0027Map\u0027, \u0027Schema\u0027: load_balancers_schema}},"},{"line_number":116,"context_line":"    }"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    launch_configuration_schema \u003d {"},{"line_number":119,"context_line":"        \u0027type\u0027: {"},{"line_number":120,"context_line":"            \u0027Type\u0027: \u0027String\u0027,"},{"line_number":121,"context_line":"            \u0027Required\u0027: True,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FzBk%3D","line":118,"updated":"2013-10-28 22:02:05.000000000","message":"I know that its generally accepted currently to adhere to the downstream api as much as possible, but this seems extraneous since I can only pick one type of launch configuration. Since this will eventually be replaced with native autoscale, is it worth the extra complexity in the template?\n\nNot a show stopper, but I\u0027ll reserve +1 for a bit in case you want to comment.","commit_id":"76e5a370ec8b946884b7ea00b5d490cbfb508825"},{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"7122970d8c363ecbe909e0a8267444882287f63d","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            \u0027Schema\u0027: {\u0027Type\u0027: \u0027Map\u0027, \u0027Schema\u0027: load_balancers_schema}},"},{"line_number":116,"context_line":"    }"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    launch_configuration_schema \u003d {"},{"line_number":119,"context_line":"        \u0027type\u0027: {"},{"line_number":120,"context_line":"            \u0027Type\u0027: \u0027String\u0027,"},{"line_number":121,"context_line":"            \u0027Required\u0027: True,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Fy%2Fk%3D","line":118,"in_reply_to":"AAAATn%2F%2FzAM%3D","updated":"2013-10-28 22:16:16.000000000","message":"ok cool. makes sense.","commit_id":"76e5a370ec8b946884b7ea00b5d490cbfb508825"},{"author":{"_account_id":6800,"name":"Christopher Armstrong","email":"chris.armstrong@rackspace.com","username":"radix"},"change_message_id":"76f2a7e858bfa1243f56dc1bf910ba250cb5fe6a","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            \u0027Schema\u0027: {\u0027Type\u0027: \u0027Map\u0027, \u0027Schema\u0027: load_balancers_schema}},"},{"line_number":116,"context_line":"    }"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    launch_configuration_schema \u003d {"},{"line_number":119,"context_line":"        \u0027type\u0027: {"},{"line_number":120,"context_line":"            \u0027Type\u0027: \u0027String\u0027,"},{"line_number":121,"context_line":"            \u0027Required\u0027: True,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FzAM%3D","line":118,"in_reply_to":"AAAATn%2F%2FzBk%3D","updated":"2013-10-28 22:05:52.000000000","message":"Well, a couple things:\n\n- If we\u0027re going to adhere to the downstream API at all, I\u0027d prefer to exactly match it, so a user can basically just copy/paste an example of a POST body into a template and have it work. If we don\u0027t care about this, then I\u0027d rather rewrite the schema entirely to be a lot simpler :)\n\n- more imporantly, however, it\u0027s actually pretty likely that this field will grow an additional type, specifically so RSAS can converge with Heat better -- a \"heat_resources\" launch configuration type, which will act similar to the proposed Heat AS API which accepts heat a set of heat resources as the scaling unit specification.","commit_id":"76e5a370ec8b946884b7ea00b5d490cbfb508825"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"5e467e9602a6fb414414802e33a735d5928d2758","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        \u0027Rackspace::AutoScale::Group\u0027: Group,"},{"line_number":469,"context_line":"        \u0027Rackspace::AutoScale::ScalingPolicy\u0027: ScalingPolicy,"},{"line_number":470,"context_line":"        \u0027Rackspace::AutoScale::WebHook\u0027: WebHook"},{"line_number":471,"context_line":"    }"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"def resource_mapping():"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2F7bA%3D","line":471,"updated":"2013-10-25 03:34:48.000000000","message":"I don\u0027t prefer these 3 plugins being in one file, although I understand they are meant to be used together.  Any possibility of breaking into separate plugins?  -1 for this reason - If I\u0027m off base here feel free to correct.","commit_id":"76e5a370ec8b946884b7ea00b5d490cbfb508825"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"b45a0388256785f3c0ffd2ca3d16f23ad01a793d","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        \u0027Rackspace::AutoScale::Group\u0027: Group,"},{"line_number":469,"context_line":"        \u0027Rackspace::AutoScale::ScalingPolicy\u0027: ScalingPolicy,"},{"line_number":470,"context_line":"        \u0027Rackspace::AutoScale::WebHook\u0027: WebHook"},{"line_number":471,"context_line":"    }"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"def resource_mapping():"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2F4W8%3D","line":471,"in_reply_to":"AAAATn%2F%2F7Tg%3D","updated":"2013-10-25 18:55:11.000000000","message":"guess i\u0027m off base +2","commit_id":"76e5a370ec8b946884b7ea00b5d490cbfb508825"},{"author":{"_account_id":6800,"name":"Christopher Armstrong","email":"chris.armstrong@rackspace.com","username":"radix"},"change_message_id":"638f8c62243d44bbcfd1ab00328185f755234aa3","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        \u0027Rackspace::AutoScale::Group\u0027: Group,"},{"line_number":469,"context_line":"        \u0027Rackspace::AutoScale::ScalingPolicy\u0027: ScalingPolicy,"},{"line_number":470,"context_line":"        \u0027Rackspace::AutoScale::WebHook\u0027: WebHook"},{"line_number":471,"context_line":"    }"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":""},{"line_number":474,"context_line":"def resource_mapping():"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2F7Tg%3D","line":471,"in_reply_to":"AAAATn%2F%2F7bA%3D","updated":"2013-10-25 05:07:07.000000000","message":"This is common practice in the Heat codebase.\n\nheat.engine.resources.eip\nheat.engine.resources.user\nheat.engine.resources.route_table\nheat.engine.resources.neutron.vpnservice\nheat.engine.resources.neutron.router\nheat.engine.resources.neutron.loadbalancer\nheat.engine.resources.neutron.floatingip\nheat.engine.resources.neutron.firewall\nheat.engine.resources.wait_condition\nheat.engine.resources.instance\nheat.engine.resources.autoscaling\nheat.engine.resources.internet_gateway\nheat.engine.resources.volume\n\nEach of these modules has more than one resources declared in them.","commit_id":"76e5a370ec8b946884b7ea00b5d490cbfb508825"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"31a9f3b31d80200c0344114b5d07e6893c44fed0","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        args[\u0027max_entities\u0027] \u003d 0"},{"line_number":258,"context_line":"        try:"},{"line_number":259,"context_line":"            asclient.replace(self.resource_id, **args)"},{"line_number":260,"context_line":"        except NotFound:"},{"line_number":261,"context_line":"            pass"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def check_delete_complete(self, result):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fqpo%3D","line":260,"updated":"2013-10-30 17:01:02.000000000","message":"should do self.resource_id_set(None)?","commit_id":"c905259b6a55060153422e98e6c795289e1867f6"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"31a9f3b31d80200c0344114b5d07e6893c44fed0","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        except Forbidden:"},{"line_number":270,"context_line":"            return False"},{"line_number":271,"context_line":"        except NotFound:"},{"line_number":272,"context_line":"            return True"},{"line_number":273,"context_line":"        else:"},{"line_number":274,"context_line":"            return True"},{"line_number":275,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fqos%3D","line":272,"updated":"2013-10-30 17:01:02.000000000","message":"self.resource_id_set(None)","commit_id":"c905259b6a55060153422e98e6c795289e1867f6"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"31a9f3b31d80200c0344114b5d07e6893c44fed0","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        except NotFound:"},{"line_number":272,"context_line":"            return True"},{"line_number":273,"context_line":"        else:"},{"line_number":274,"context_line":"            return True"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"class ScalingPolicy(rackspace_resource.RackspaceResource):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fqow%3D","line":274,"updated":"2013-10-30 17:01:02.000000000","message":"set resource_id to None here\nself.resource_id_set(None)","commit_id":"c905259b6a55060153422e98e6c795289e1867f6"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"31a9f3b31d80200c0344114b5d07e6893c44fed0","unresolved":false,"context_lines":[{"line_number":380,"context_line":"            asclient.delete_policy(self.properties[\u0027group\u0027], policy_id)"},{"line_number":381,"context_line":"        except NotFound:"},{"line_number":382,"context_line":"            pass"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"class WebHook(rackspace_resource.RackspaceResource):"},{"line_number":386,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FqoY%3D","line":383,"updated":"2013-10-30 17:01:02.000000000","message":"self.resource_id_set(None)?","commit_id":"c905259b6a55060153422e98e6c795289e1867f6"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"31a9f3b31d80200c0344114b5d07e6893c44fed0","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            asclient.delete_webhook(group_id, policy_id, self.resource_id)"},{"line_number":462,"context_line":"        except NotFound:"},{"line_number":463,"context_line":"            pass"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"def unprotected_resources():"},{"line_number":467,"context_line":"    return {"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FqoM%3D","line":464,"updated":"2013-10-30 17:01:02.000000000","message":"self.resource_id_set(None)","commit_id":"c905259b6a55060153422e98e6c795289e1867f6"}],"contrib/rackspace/heat/tests/test_auto_scale.py":[{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"af4262d2c891d25088842be1904c490b23eaa02d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from heat.engine import resource"},{"line_number":21,"context_line":"from heat.engine import scheduler"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ..engine.plugins import auto_scale"},{"line_number":24,"context_line":"from ..engine.plugins import rackspace_resource"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from heat.tests.common import HeatTestCase"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2Fc2M%3D","line":23,"updated":"2013-10-16 00:53:30.000000000","message":"need to add #noqa to the end of these lines to avoid unneeded flake8 complaints.","commit_id":"d58c34a1f30a22cb87e4a7f720a7ce13dcb392c9"},{"author":{"_account_id":6800,"name":"Christopher Armstrong","email":"chris.armstrong@rackspace.com","username":"radix"},"change_message_id":"974def27277d1a5bcf964d4cfa46decf15a302d0","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from heat.engine import resource"},{"line_number":21,"context_line":"from heat.engine import scheduler"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ..engine.plugins import auto_scale"},{"line_number":24,"context_line":"from ..engine.plugins import rackspace_resource"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from heat.tests.common import HeatTestCase"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FcSQ%3D","line":23,"in_reply_to":"AAAATH%2F%2Fc2M%3D","updated":"2013-10-16 04:51:06.000000000","message":"Hmm. I\u0027m not getting any flake8 complaints when I run tox -econtrib. Is there something else I need to run to see them? I want to make sure I really fix them :)","commit_id":"d58c34a1f30a22cb87e4a7f720a7ce13dcb392c9"},{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"8390da8470f5c263d9a5441e5f00e19cf97f302a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from heat.engine import resource"},{"line_number":21,"context_line":"from heat.engine import scheduler"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ..engine.plugins import auto_scale"},{"line_number":24,"context_line":"from ..engine.plugins import rackspace_resource"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from heat.tests.common import HeatTestCase"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FT20%3D","line":23,"in_reply_to":"AAAATH%2F%2FcSQ%3D","updated":"2013-10-17 22:25:20.000000000","message":"I think you may need to update? There were fixes recently that updated tox.ini. originally I had explicitly ignored this error but one of the Steve\u0027s fixed it up right.","commit_id":"d58c34a1f30a22cb87e4a7f720a7ce13dcb392c9"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"21d9b632be070a177b4b36eb88017930e8de9b08","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from heat.engine import scheduler"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ..engine.plugins import auto_scale"},{"line_number":24,"context_line":"from ..engine.plugins import rackspace_resource"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from heat.tests.common import HeatTestCase"},{"line_number":27,"context_line":"from heat.tests import utils"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FwEY%3D","line":24,"updated":"2013-10-29 15:22:00.000000000","message":"I think you need to add a:\n\n # noqa\n\nto the end of lines 23-24 to prevent an annoying error if pyrax isn\u0027t installed.","commit_id":"76e5a370ec8b946884b7ea00b5d490cbfb508825"},{"author":{"_account_id":4715,"name":"Angus Salkeld","email":"asalkeld@redhat.com","username":"asalkeld"},"change_message_id":"d060c5a6571fed5fd1784a337fcb29aba3f2c18c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from heat.engine import scheduler"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ..engine.plugins import auto_scale"},{"line_number":24,"context_line":"from ..engine.plugins import rackspace_resource"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from heat.tests.common import HeatTestCase"},{"line_number":27,"context_line":"from heat.tests import utils"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Ftj8%3D","line":24,"in_reply_to":"AAAATn%2F%2Fu30%3D","updated":"2013-10-30 04:09:51.000000000","message":"git review -d 49435\nflake8 \n./contrib/rackspace/heat/tests/test_auto_scale.py:23:6: H304  No relative imports. \u0027from ..engine.plugins import auto_scale\u0027 is a relative import\nfrom ..engine.plugins import auto_scale\n     ^\n./contrib/rackspace/heat/tests/test_auto_scale.py:24:6: H304  No relative imports. \u0027from ..engine.plugins import rackspace_resource\u0027 is a relative import\nfrom ..engine.plugins import rackspace_resource\n     ^\n./contrib/rackspace/heat/tests/test_clouddatabase.py:29:10: H304  No relative imports. \u0027from ..engine.plugins.clouddatabase import ClientException\u0027 is a relative import\n    from ..engine.plugins.clouddatabase import ClientException\n         ^\n./contrib/rackspace/heat/engine/plugins/auto_scale.py:21:6: H304  No relative imports. \u0027from . import rackspace_resource\u0027 is a relative import\nfrom . import rackspace_resource","commit_id":"76e5a370ec8b946884b7ea00b5d490cbfb508825"},{"author":{"_account_id":7253,"name":"Jason Dunsmore","email":"jasondunsmore@gmail.com","username":"jbd"},"change_message_id":"e7973cec4cb3f8c64cf07ad1d5e8edde4438575f","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from heat.engine import scheduler"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ..engine.plugins import auto_scale"},{"line_number":24,"context_line":"from ..engine.plugins import rackspace_resource"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from heat.tests.common import HeatTestCase"},{"line_number":27,"context_line":"from heat.tests import utils"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Fu30%3D","line":24,"in_reply_to":"AAAATn%2F%2FvYo%3D","updated":"2013-10-29 19:47:38.000000000","message":"Hm, I was also unable to reproduce it.  Hopefully Angus or Randall will be able to shed some light:\nhttps://review.openstack.org/#/c/54271/","commit_id":"76e5a370ec8b946884b7ea00b5d490cbfb508825"},{"author":{"_account_id":6800,"name":"Christopher Armstrong","email":"chris.armstrong@rackspace.com","username":"radix"},"change_message_id":"0a6e6c6f69b183967c6ab7969b200c628d2e122e","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from heat.engine import scheduler"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ..engine.plugins import auto_scale"},{"line_number":24,"context_line":"from ..engine.plugins import rackspace_resource"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from heat.tests.common import HeatTestCase"},{"line_number":27,"context_line":"from heat.tests import utils"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FvYo%3D","line":24,"in_reply_to":"AAAATn%2F%2FwEY%3D","updated":"2013-10-29 17:01:14.000000000","message":"Randall suggested this a while back and I could never reproduce the error, so I never made the change.\n\nEven if I make pyrax un-importable, I still can\u0027t reproduce any complaints from flake8 about this. Can you explain how to reproduce this problem?","commit_id":"76e5a370ec8b946884b7ea00b5d490cbfb508825"}]}
