)]}'
{"tempest/api/orchestration/stacks/templates/eip.yaml":[{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"807d4471dca4cb7504d1e9b42b0d18d679a60459","unresolved":false,"context_lines":[{"line_number":19,"context_line":"      InstanceType: {get_param: Flavor}"},{"line_number":20,"context_line":"      KeyName: {get_param: KeyName}"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  DatabaseIPAddress:"},{"line_number":23,"context_line":"    type: AWS::EC2::EIP"},{"line_number":24,"context_line":"    properties:"},{"line_number":25,"context_line":"      Domain: vpc"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"7adec928_b8a51006","line":22,"updated":"2014-05-08 10:46:31.000000000","message":"\"Database\" is not really descriptive here, since nothing deploys a database, I suspect this is a cut/paste artefact?\n\nI\u0027d suggest converting all the names to lower case (which is the normal convention for HOT templates, but not mandatory obviously), and changing this to just \"floating_ip\", \"eip\" or something like that.","commit_id":"7e89297261ac1f5cb7e773cef10f408ec998c733"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"93d4a35afae40ead6bde72a46183d93bb8526863","unresolved":false,"context_lines":[{"line_number":19,"context_line":"      InstanceType: {get_param: Flavor}"},{"line_number":20,"context_line":"      KeyName: {get_param: KeyName}"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  DatabaseIPAddress:"},{"line_number":23,"context_line":"    type: AWS::EC2::EIP"},{"line_number":24,"context_line":"    properties:"},{"line_number":25,"context_line":"      Domain: vpc"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"7adec928_7cf6fcd8","line":22,"in_reply_to":"7adec928_b8a51006","updated":"2014-05-09 15:56:45.000000000","message":"Done","commit_id":"7e89297261ac1f5cb7e773cef10f408ec998c733"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"807d4471dca4cb7504d1e9b42b0d18d679a60459","unresolved":false,"context_lines":[{"line_number":28,"context_line":"outputs:"},{"line_number":29,"context_line":"  allocation_id:"},{"line_number":30,"context_line":"    description: EIP Value"},{"line_number":31,"context_line":"    value: { get_attr: [ DatabaseIPAddress, AllocationId]}"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"7adec928_58524cde","line":31,"updated":"2014-05-08 10:46:31.000000000","message":"The interface to the EIP resource is kinda odd, in that AllocationId exposes the ID of the EIP (which would normally be accessible via get_resource) and get_resource exposes the actual IP address.\n\nSo I think we need to output not AllocationId and get_resource: \u003cEIP resource\u003e, and sanity check both in the test.","commit_id":"7e89297261ac1f5cb7e773cef10f408ec998c733"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"93d4a35afae40ead6bde72a46183d93bb8526863","unresolved":false,"context_lines":[{"line_number":28,"context_line":"outputs:"},{"line_number":29,"context_line":"  allocation_id:"},{"line_number":30,"context_line":"    description: EIP Value"},{"line_number":31,"context_line":"    value: { get_attr: [ DatabaseIPAddress, AllocationId]}"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"7adec928_9c03c8b7","line":31,"in_reply_to":"7adec928_58524cde","updated":"2014-05-09 15:56:45.000000000","message":"Done","commit_id":"7e89297261ac1f5cb7e773cef10f408ec998c733"}],"tempest/api/orchestration/stacks/test_eip.py":[{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"9f66783b6b13cbe070837a184d7c1115b2c354e7","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        cls.keypair_name \u003d (CONF.orchestration.keypair_name or"},{"line_number":35,"context_line":"                            cls._create_keypair()[\u0027name\u0027])"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if not CONF.orchestration.image_ref:"},{"line_number":38,"context_line":"            raise cls.skipException(\"No image available to test\")"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        # create the stack."}],"source_content_type":"text/x-python","patch_set":3,"id":"bad4c104_59e7b240","line":37,"updated":"2014-04-29 17:49:49.000000000","message":"This should use the compute.image_ref as that is the cirros image which boots way faster, and the templates don\u0027t require any of the cfntools agents included in the (full Fedora) orchestration.image_ref","commit_id":"307fb6ea0d86c279af9d85ad04037994124c37c1"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"53ea2a6d54e37e797327630bf94c99ece9552ea7","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        cls.keypair_name \u003d (CONF.orchestration.keypair_name or"},{"line_number":35,"context_line":"                            cls._create_keypair()[\u0027name\u0027])"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if not CONF.orchestration.image_ref:"},{"line_number":38,"context_line":"            raise cls.skipException(\"No image available to test\")"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        # create the stack."}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_c687620e","line":37,"in_reply_to":"bad4c104_59e7b240","updated":"2014-04-30 15:16:09.000000000","message":"Done","commit_id":"307fb6ea0d86c279af9d85ad04037994124c37c1"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"9f66783b6b13cbe070837a184d7c1115b2c354e7","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            output_map[outputs[\u0027output_key\u0027]] \u003d outputs[\u0027output_value\u0027]"},{"line_number":78,"context_line":"        self.assertTrue(\u0027allocation_id\u0027 in output_map)"},{"line_number":79,"context_line":"        alloc_id \u003d output_map[\u0027allocation_id\u0027]"},{"line_number":80,"context_line":"        self.assertTrue(len(alloc_id) !\u003d 0)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"class EIPAWSTest(EIPYAMLTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bad4c104_194b6a2c","line":80,"updated":"2014-04-29 17:49:49.000000000","message":"You might be able to clean this up a bit by using the helper function I added in https://review.openstack.org/#/c/84852/","commit_id":"307fb6ea0d86c279af9d85ad04037994124c37c1"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"53ea2a6d54e37e797327630bf94c99ece9552ea7","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            output_map[outputs[\u0027output_key\u0027]] \u003d outputs[\u0027output_value\u0027]"},{"line_number":78,"context_line":"        self.assertTrue(\u0027allocation_id\u0027 in output_map)"},{"line_number":79,"context_line":"        alloc_id \u003d output_map[\u0027allocation_id\u0027]"},{"line_number":80,"context_line":"        self.assertTrue(len(alloc_id) !\u003d 0)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"class EIPAWSTest(EIPYAMLTest):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_26764e3f","line":80,"in_reply_to":"bad4c104_194b6a2c","updated":"2014-04-30 15:16:09.000000000","message":"Done","commit_id":"307fb6ea0d86c279af9d85ad04037994124c37c1"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"9f66783b6b13cbe070837a184d7c1115b2c354e7","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"class EIPAWSTest(EIPYAMLTest):"},{"line_number":84,"context_line":"    _tpl_type \u003d \u0027json\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"bad4c104_f946c622","line":84,"updated":"2014-04-29 17:49:49.000000000","message":"I\u0027m not really sure, given the expense of the test (e.g that it launches an instance) if there\u0027s much value in testing the exact same thing twice with two different template syntaxes.","commit_id":"307fb6ea0d86c279af9d85ad04037994124c37c1"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"53ea2a6d54e37e797327630bf94c99ece9552ea7","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"class EIPAWSTest(EIPYAMLTest):"},{"line_number":84,"context_line":"    _tpl_type \u003d \u0027json\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ad9bd40_a6997e70","line":84,"in_reply_to":"bad4c104_f946c622","updated":"2014-04-30 15:16:09.000000000","message":"OK, I will remove the json template","commit_id":"307fb6ea0d86c279af9d85ad04037994124c37c1"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"95f99beb5a5eaba515984e1c03db82bf6d7a12dd","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    @classmethod"},{"line_number":29,"context_line":"    def setUpClass(cls):"},{"line_number":30,"context_line":"        super(EIPYAMLTest, cls).setUpClass()"},{"line_number":31,"context_line":"        cls.stack_name \u003d data_utils.rand_name(\u0027heat\u0027)"},{"line_number":32,"context_line":"        template \u003d cls.load_template(\u0027eip\u0027, ext\u003dcls._tpl_type)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        cls.keypair_name \u003d (CONF.orchestration.keypair_name or"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_11404155","line":31,"updated":"2014-05-05 11:38:52.000000000","message":"You can just use stack_name variable. There is no need to use cls.stack_name as you use cls.stack_name variable in setUpClass only.","commit_id":"0678eab705e84e2d90dd22e4f2a3ce2a7d9adab1"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"68a688b1c8dafa975f013dc4a548ad4ee7f93464","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    @classmethod"},{"line_number":29,"context_line":"    def setUpClass(cls):"},{"line_number":30,"context_line":"        super(EIPYAMLTest, cls).setUpClass()"},{"line_number":31,"context_line":"        cls.stack_name \u003d data_utils.rand_name(\u0027heat\u0027)"},{"line_number":32,"context_line":"        template \u003d cls.load_template(\u0027eip\u0027, ext\u003dcls._tpl_type)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        cls.keypair_name \u003d (CONF.orchestration.keypair_name or"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_3847e21e","line":31,"in_reply_to":"9ad9bd40_11404155","updated":"2014-05-05 14:11:35.000000000","message":"Done","commit_id":"0678eab705e84e2d90dd22e4f2a3ce2a7d9adab1"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"95f99beb5a5eaba515984e1c03db82bf6d7a12dd","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        cls.keypair_name \u003d (CONF.orchestration.keypair_name or"},{"line_number":35,"context_line":"                            cls._create_keypair()[\u0027name\u0027])"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if not CONF.compute.image_ref:"},{"line_number":38,"context_line":"            raise cls.skipException(\"No image available to test\")"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        # create the stack."}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_64baad24","line":37,"updated":"2014-05-05 11:38:52.000000000","message":"I think this \"if\" condition should be written in front of stack_name initialization (line 31).","commit_id":"0678eab705e84e2d90dd22e4f2a3ce2a7d9adab1"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"68a688b1c8dafa975f013dc4a548ad4ee7f93464","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        cls.keypair_name \u003d (CONF.orchestration.keypair_name or"},{"line_number":35,"context_line":"                            cls._create_keypair()[\u0027name\u0027])"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if not CONF.compute.image_ref:"},{"line_number":38,"context_line":"            raise cls.skipException(\"No image available to test\")"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        # create the stack."}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_78516ad7","line":37,"in_reply_to":"9ad9bd40_64baad24","updated":"2014-05-05 14:11:35.000000000","message":"Done","commit_id":"0678eab705e84e2d90dd22e4f2a3ce2a7d9adab1"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"ac60d002c349b2f2ef8eb4e0fd0d829b178a8514","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        stack_name \u003d data_utils.rand_name(\u0027heat\u0027)"},{"line_number":35,"context_line":"        template \u003d cls.load_template(\u0027eip\u0027, ext\u003dcls._tpl_type)"},{"line_number":36,"context_line":"        cls.keypair_name \u003d (CONF.orchestration.keypair_name or"},{"line_number":37,"context_line":"                            cls._create_keypair()[\u0027name\u0027])"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        # create the stack."}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_93eff186","line":36,"updated":"2014-05-06 08:11:37.000000000","message":"Please, use \"keypair_name\" variable instead of \"cls.keypair_name\". You use \"keypair_name\" variable in setUpClass method only.","commit_id":"d4df7a5bcf641f9f06dd65410d258d3cebb37199"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"a42db873c737c17e674cafc314b631d2303ce37c","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        stack_name \u003d data_utils.rand_name(\u0027heat\u0027)"},{"line_number":35,"context_line":"        template \u003d cls.load_template(\u0027eip\u0027, ext\u003dcls._tpl_type)"},{"line_number":36,"context_line":"        cls.keypair_name \u003d (CONF.orchestration.keypair_name or"},{"line_number":37,"context_line":"                            cls._create_keypair()[\u0027name\u0027])"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        # create the stack."}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_5e5e3277","line":36,"in_reply_to":"9ad9bd40_93eff186","updated":"2014-05-06 13:11:18.000000000","message":"Done","commit_id":"d4df7a5bcf641f9f06dd65410d258d3cebb37199"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"ac60d002c349b2f2ef8eb4e0fd0d829b178a8514","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                \u0027Flavor\u0027: CONF.compute.flavor_ref,"},{"line_number":47,"context_line":"            })"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        cls.stack_id \u003d cls.stack_identifier.split(\u0027/\u0027)[1]"},{"line_number":50,"context_line":"        cls.client.wait_for_stack_status(cls.stack_id, \u0027CREATE_COMPLETE\u0027)"},{"line_number":51,"context_line":"        _, resources \u003d cls.client.list_resources(cls.stack_identifier)"},{"line_number":52,"context_line":"        cls.test_resources \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_3369c525","line":49,"updated":"2014-05-06 08:11:37.000000000","message":"\"cls.stack_id\" variable, ditto.","commit_id":"d4df7a5bcf641f9f06dd65410d258d3cebb37199"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"a42db873c737c17e674cafc314b631d2303ce37c","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                \u0027Flavor\u0027: CONF.compute.flavor_ref,"},{"line_number":47,"context_line":"            })"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        cls.stack_id \u003d cls.stack_identifier.split(\u0027/\u0027)[1]"},{"line_number":50,"context_line":"        cls.client.wait_for_stack_status(cls.stack_id, \u0027CREATE_COMPLETE\u0027)"},{"line_number":51,"context_line":"        _, resources \u003d cls.client.list_resources(cls.stack_identifier)"},{"line_number":52,"context_line":"        cls.test_resources \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_1e9d8a0b","line":49,"in_reply_to":"9ad9bd40_3369c525","updated":"2014-05-06 13:11:18.000000000","message":"Done","commit_id":"d4df7a5bcf641f9f06dd65410d258d3cebb37199"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"ac60d002c349b2f2ef8eb4e0fd0d829b178a8514","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    @attr(type\u003d\u0027slow\u0027)"},{"line_number":57,"context_line":"    def test_created_resources(self):"},{"line_number":58,"context_line":"        \"\"\"Verifies created resource.\"\"\""},{"line_number":59,"context_line":"        resources \u003d [(\u0027DatabaseIPAddress\u0027, \u0027AWS::EC2::EIP\u0027)]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        for resource_name, resource_type in resources:"},{"line_number":62,"context_line":"            resource \u003d self.test_resources.get(resource_name, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_f019fcd7","line":59,"updated":"2014-05-06 08:11:37.000000000","message":"May be, just write \n\n    resource_name \u003d \u0027DatabaseIPAddress\u0027\n    resource_type \u003d \u0027AWS::EC2::EIP\u0027\n\ninstead of lines 59 and 60.","commit_id":"d4df7a5bcf641f9f06dd65410d258d3cebb37199"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"a42db873c737c17e674cafc314b631d2303ce37c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    @attr(type\u003d\u0027slow\u0027)"},{"line_number":57,"context_line":"    def test_created_resources(self):"},{"line_number":58,"context_line":"        \"\"\"Verifies created resource.\"\"\""},{"line_number":59,"context_line":"        resources \u003d [(\u0027DatabaseIPAddress\u0027, \u0027AWS::EC2::EIP\u0027)]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        for resource_name, resource_type in resources:"},{"line_number":62,"context_line":"            resource \u003d self.test_resources.get(resource_name, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_fe338611","line":59,"in_reply_to":"9ad9bd40_f019fcd7","updated":"2014-05-06 13:11:18.000000000","message":"Done","commit_id":"d4df7a5bcf641f9f06dd65410d258d3cebb37199"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"1ea088aad57e7de59fd4d9fafe83591863dd117b","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from tempest.api.orchestration import base"},{"line_number":17,"context_line":"from tempest.common.utils import data_utils"},{"line_number":18,"context_line":"from tempest import config"},{"line_number":19,"context_line":"from tempest.test import attr"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"CONF \u003d config.CONF"},{"line_number":22,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad9bd40_f4a3a7af","line":19,"updated":"2014-05-06 13:40:56.000000000","message":"I am sorry I have not noticed this earlier. Please, use \n\n    from tempest import test\n    ...\n    @test.attr(type\u003d\u0027slow\u0027)\n    ...","commit_id":"9e79412260677c4e3153a3ce8e64fd8f65d47d31"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"5a55471d7ecfe1f7918003bc2bbb5518d81a0fec","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from tempest.api.orchestration import base"},{"line_number":17,"context_line":"from tempest.common.utils import data_utils"},{"line_number":18,"context_line":"from tempest import config"},{"line_number":19,"context_line":"from tempest.test import attr"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"CONF \u003d config.CONF"},{"line_number":22,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad9bd40_2fa4da06","line":19,"in_reply_to":"9ad9bd40_f4a3a7af","updated":"2014-05-06 14:01:41.000000000","message":"OK","commit_id":"9e79412260677c4e3153a3ce8e64fd8f65d47d31"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"807d4471dca4cb7504d1e9b42b0d18d679a60459","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    def test_stack_eip_output(self):"},{"line_number":69,"context_line":"        alloc_id \u003d self.get_stack_output("},{"line_number":70,"context_line":"            self.stack_identifier, \u0027allocation_id\u0027)"},{"line_number":71,"context_line":"        self.assertTrue(len(alloc_id) !\u003d 0)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7adec928_b8ab5088","line":71,"updated":"2014-05-08 10:46:31.000000000","message":"I\u0027m not sure testing this is non-zero is enough - wouldn\u0027t it be better if we got the AllocationId, and the IP via get_resource, then looked up the IP direct with neutron and prove they both match?\n\nThen there\u0027s the question of whether the IP is actually associated with the server, I\u0027m not quite sure if it will be as you\u0027re not using  AWS::EC2::EIPAssociation?\n\nIdeally, we want to either check that the IP is actually associated with the instance (i.e that the server is accessible via the IP, e.g via ssh), or drop the whole server aspect of this and just prove that the EIP resource creates the IP in neutron.\n\nAlso, someone may be along soon to say this would be better as a scenario test, which maybe it would be (since this is testing interaction between services/resources, not the heat API surface).  \n\nSee the discussion between stevebaker and myself in https://review.openstack.org/#/c/90143/ for context - I don\u0027t have a strong opinion on it but moving resource-orientated tests to scenarios seems to be the direction we\u0027re headed.","commit_id":"7e89297261ac1f5cb7e773cef10f408ec998c733"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"93d4a35afae40ead6bde72a46183d93bb8526863","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    def test_stack_eip_output(self):"},{"line_number":69,"context_line":"        alloc_id \u003d self.get_stack_output("},{"line_number":70,"context_line":"            self.stack_identifier, \u0027allocation_id\u0027)"},{"line_number":71,"context_line":"        self.assertTrue(len(alloc_id) !\u003d 0)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7adec928_fc8dac32","line":71,"in_reply_to":"7adec928_b8ab5088","updated":"2014-05-09 15:56:45.000000000","message":"So it seems there are two options:\n1 - drop the server, and just test the EIP in neutron\n2 - verify the IP in the server with an enhanced test, and move it to scenarios\n\nor should this just do a simple EIP test, and add another test to do\nthe scenario test which includes EIP, EIPAccociation, and the server\n\nopinions?","commit_id":"7e89297261ac1f5cb7e773cef10f408ec998c733"}],"tempest/api/orchestration/stacks/test_eip_negative.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"ac60d002c349b2f2ef8eb4e0fd0d829b178a8514","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    @classmethod"},{"line_number":49,"context_line":"    def setUpClass(cls):"},{"line_number":50,"context_line":"        super(EIPNegativeTest, cls).setUpClass()"},{"line_number":51,"context_line":"        cls.stack_name \u003d data_utils.rand_name(\u0027heat\u0027)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        cls.keypair_name \u003d (CONF.orchestration.keypair_name or"},{"line_number":54,"context_line":"                            cls._create_keypair()[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_50dd48df","line":51,"updated":"2014-05-06 08:11:37.000000000","message":"See previous comments.","commit_id":"d4df7a5bcf641f9f06dd65410d258d3cebb37199"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"a42db873c737c17e674cafc314b631d2303ce37c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    @classmethod"},{"line_number":49,"context_line":"    def setUpClass(cls):"},{"line_number":50,"context_line":"        super(EIPNegativeTest, cls).setUpClass()"},{"line_number":51,"context_line":"        cls.stack_name \u003d data_utils.rand_name(\u0027heat\u0027)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        cls.keypair_name \u003d (CONF.orchestration.keypair_name or"},{"line_number":54,"context_line":"                            cls._create_keypair()[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_59456c15","line":51,"in_reply_to":"9ad9bd40_50dd48df","updated":"2014-05-06 13:11:18.000000000","message":"Done","commit_id":"d4df7a5bcf641f9f06dd65410d258d3cebb37199"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"ac60d002c349b2f2ef8eb4e0fd0d829b178a8514","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        super(EIPNegativeTest, cls).setUpClass()"},{"line_number":51,"context_line":"        cls.stack_name \u003d data_utils.rand_name(\u0027heat\u0027)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        cls.keypair_name \u003d (CONF.orchestration.keypair_name or"},{"line_number":54,"context_line":"                            cls._create_keypair()[\u0027name\u0027])"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        if not CONF.compute.image_ref:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_70da4ce9","line":53,"updated":"2014-05-06 08:11:37.000000000","message":"ditto","commit_id":"d4df7a5bcf641f9f06dd65410d258d3cebb37199"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"a42db873c737c17e674cafc314b631d2303ce37c","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        super(EIPNegativeTest, cls).setUpClass()"},{"line_number":51,"context_line":"        cls.stack_name \u003d data_utils.rand_name(\u0027heat\u0027)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        cls.keypair_name \u003d (CONF.orchestration.keypair_name or"},{"line_number":54,"context_line":"                            cls._create_keypair()[\u0027name\u0027])"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        if not CONF.compute.image_ref:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_794dd03d","line":53,"in_reply_to":"9ad9bd40_70da4ce9","updated":"2014-05-06 13:11:18.000000000","message":"Done","commit_id":"d4df7a5bcf641f9f06dd65410d258d3cebb37199"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"ac60d002c349b2f2ef8eb4e0fd0d829b178a8514","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            raise cls.skipException(\"No image available to test\")"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        # create the stack."},{"line_number":60,"context_line":"        cls.stack_identifier \u003d cls.create_stack("},{"line_number":61,"context_line":"            cls.stack_name,"},{"line_number":62,"context_line":"            cls.template,"},{"line_number":63,"context_line":"            parameters\u003d{"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_50046849","line":60,"updated":"2014-05-06 08:11:37.000000000","message":"ditto","commit_id":"d4df7a5bcf641f9f06dd65410d258d3cebb37199"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"a42db873c737c17e674cafc314b631d2303ce37c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            raise cls.skipException(\"No image available to test\")"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        # create the stack."},{"line_number":60,"context_line":"        cls.stack_identifier \u003d cls.create_stack("},{"line_number":61,"context_line":"            cls.stack_name,"},{"line_number":62,"context_line":"            cls.template,"},{"line_number":63,"context_line":"            parameters\u003d{"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_d9a89c79","line":60,"in_reply_to":"9ad9bd40_50046849","updated":"2014-05-06 13:11:18.000000000","message":"Done","commit_id":"d4df7a5bcf641f9f06dd65410d258d3cebb37199"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"ac60d002c349b2f2ef8eb4e0fd0d829b178a8514","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                \u0027Flavor\u0027: CONF.compute.flavor_ref,"},{"line_number":67,"context_line":"            })"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        cls.stack_id \u003d cls.stack_identifier.split(\u0027/\u0027)[1]"},{"line_number":70,"context_line":"        cls.client.wait_for_stack_status(cls.stack_id, \u0027CREATE_FAILED\u0027)"},{"line_number":71,"context_line":"        _, resources \u003d cls.client.list_resources(cls.stack_identifier)"},{"line_number":72,"context_line":"        cls.test_resources \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_90fa7041","line":69,"updated":"2014-05-06 08:11:37.000000000","message":"ditto","commit_id":"d4df7a5bcf641f9f06dd65410d258d3cebb37199"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"a42db873c737c17e674cafc314b631d2303ce37c","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                \u0027Flavor\u0027: CONF.compute.flavor_ref,"},{"line_number":67,"context_line":"            })"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        cls.stack_id \u003d cls.stack_identifier.split(\u0027/\u0027)[1]"},{"line_number":70,"context_line":"        cls.client.wait_for_stack_status(cls.stack_id, \u0027CREATE_FAILED\u0027)"},{"line_number":71,"context_line":"        _, resources \u003d cls.client.list_resources(cls.stack_identifier)"},{"line_number":72,"context_line":"        cls.test_resources \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_79ccf06a","line":69,"in_reply_to":"9ad9bd40_90fa7041","updated":"2014-05-06 13:11:18.000000000","message":"Done","commit_id":"d4df7a5bcf641f9f06dd65410d258d3cebb37199"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"ac60d002c349b2f2ef8eb4e0fd0d829b178a8514","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    @attr(type\u003d\u0027slow\u0027)"},{"line_number":77,"context_line":"    def test_created_resources(self):"},{"line_number":78,"context_line":"        \"\"\"Verifies created resource.\"\"\""},{"line_number":79,"context_line":"        resources \u003d [(\u0027DatabaseIPAddress\u0027, \u0027AWS::EC2::EIP\u0027)]"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        for resource_name, resource_type in resources:"},{"line_number":82,"context_line":"            resource \u003d self.test_resources.get(resource_name, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_909190f3","line":79,"updated":"2014-05-06 08:11:37.000000000","message":"See previous comments.","commit_id":"d4df7a5bcf641f9f06dd65410d258d3cebb37199"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"a42db873c737c17e674cafc314b631d2303ce37c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    @attr(type\u003d\u0027slow\u0027)"},{"line_number":77,"context_line":"    def test_created_resources(self):"},{"line_number":78,"context_line":"        \"\"\"Verifies created resource.\"\"\""},{"line_number":79,"context_line":"        resources \u003d [(\u0027DatabaseIPAddress\u0027, \u0027AWS::EC2::EIP\u0027)]"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        for resource_name, resource_type in resources:"},{"line_number":82,"context_line":"            resource \u003d self.test_resources.get(resource_name, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad9bd40_99c9b45b","line":79,"in_reply_to":"9ad9bd40_909190f3","updated":"2014-05-06 13:11:18.000000000","message":"Done","commit_id":"d4df7a5bcf641f9f06dd65410d258d3cebb37199"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"807d4471dca4cb7504d1e9b42b0d18d679a60459","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            })"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        stack_id \u003d stack_identifier.split(\u0027/\u0027)[1]"},{"line_number":69,"context_line":"        cls.client.wait_for_stack_status(stack_id, \u0027CREATE_FAILED\u0027)"},{"line_number":70,"context_line":"        _, resources \u003d cls.client.list_resources(stack_identifier)"},{"line_number":71,"context_line":"        cls.test_resources \u003d {}"},{"line_number":72,"context_line":"        for resource in resources:"}],"source_content_type":"text/x-python","patch_set":10,"id":"7adec928_f87b1827","line":69,"updated":"2014-05-08 10:46:31.000000000","message":"It may be worth reaching out to some tempest-core folks about the negative test, my limited understanding of the current status is that explicit testing of negative/failure scenarios is discouraged, but I may be wrong:\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2013-November/018868.html","commit_id":"7e89297261ac1f5cb7e773cef10f408ec998c733"},{"author":{"_account_id":6698,"name":"Robert Pothier","email":"robpothier35@gmail.com","username":"rpothier"},"change_message_id":"93d4a35afae40ead6bde72a46183d93bb8526863","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            })"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        stack_id \u003d stack_identifier.split(\u0027/\u0027)[1]"},{"line_number":69,"context_line":"        cls.client.wait_for_stack_status(stack_id, \u0027CREATE_FAILED\u0027)"},{"line_number":70,"context_line":"        _, resources \u003d cls.client.list_resources(stack_identifier)"},{"line_number":71,"context_line":"        cls.test_resources \u003d {}"},{"line_number":72,"context_line":"        for resource in resources:"}],"source_content_type":"text/x-python","patch_set":10,"id":"7adec928_dca1d0aa","line":69,"in_reply_to":"7adec928_f87b1827","updated":"2014-05-09 15:56:45.000000000","message":"If this is discouraged, I can remove it, any other opinions?","commit_id":"7e89297261ac1f5cb7e773cef10f408ec998c733"}]}
