)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"6f946706e0815d8d0466a4f7c55b4ee0919ea73b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Bharath Thiruveedula \u003cbharath_ves@hotmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-03-16 23:28:34 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] Implements auto flavor creation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I59526f4868fb0189f963dc146d13d24831518b4d"},{"line_number":10,"context_line":"Partially-implements: automatic-resource-creation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1af94dfe_27225ea3","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":5},"updated":"2016-03-18 21:31:03.000000000","message":"Is it time to remove WIP ? :)","commit_id":"116c39d0ddf2a9cab1535003ac9a36ba25c70990"}],"tacker/tests/unit/vm/drivers/heat/data/hot_tosca_flavor.yaml":[{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"fa4928ae17d282c60bc8f7f0d34f91e4adce44c0","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    properties:"},{"line_number":18,"context_line":"      disk: 10"},{"line_number":19,"context_line":"      ram: 512"},{"line_number":20,"context_line":"      vcpus: 1"},{"line_number":21,"context_line":"outputs: {}"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"1af94dfe_6d6ba51e","line":20,"updated":"2016-03-18 22:59:42.000000000","message":"Clarification: the file tosca_flavor.yaml in L16 specifies 2 num_cpus whereas above it is specifying vcpus. Your test  test_create_tosca_with_new_flavor at L299 in test_heat.py file is trying to assert that they match and will fail, right?","commit_id":"116c39d0ddf2a9cab1535003ac9a36ba25c70990"}],"tacker/tests/unit/vm/infra_drivers/heat/data/hot_flavor.yaml":[{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"2c0a708736b9441650665c13ad018dd7427ecf97","unresolved":false,"context_lines":[{"line_number":1,"context_line":"heat_template_version: 2013-05-23"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"description: \u003e"},{"line_number":4,"context_line":"  OpenWRT with services"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"da0c15f0_e93e0fd9","line":1,"updated":"2016-03-27 23:53:13.000000000","message":"this file has flavor capabilities, looks file names got swapped ?","commit_id":"4cb64532db60390f4582a264962348176fec5c26"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"267f9abda7db7f13149b871ffb17fd65587316a8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"heat_template_version: 2013-05-23"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"description: \u003e"},{"line_number":4,"context_line":"  OpenWRT with services"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"da0c15f0_84301a03","line":1,"in_reply_to":"da0c15f0_e93e0fd9","updated":"2016-03-28 01:46:29.000000000","message":"No, this file is creating a new flavor and referencing it. Expected behavior.","commit_id":"4cb64532db60390f4582a264962348176fec5c26"}],"tacker/tests/unit/vm/infra_drivers/heat/data/hot_flavor_defaults.yaml":[{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"a183ddb5b8a2f4bde45afe9e1e9664050f28a5f0","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  CP1:"},{"line_number":24,"context_line":"    type: OS::Neutron::Port"},{"line_number":25,"context_line":"    properties:"},{"line_number":26,"context_line":"      network: existing_network_1 "},{"line_number":27,"context_line":"  VDU1_flavor:"},{"line_number":28,"context_line":"    type: OS::Nova::Flavor"},{"line_number":29,"context_line":"    properties:"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"da0c15f0_f160b537","line":26,"updated":"2016-03-28 05:05:48.000000000","message":"nit:spurious blank space","commit_id":"15acb317460610e58161643155bfdfd45ebc9fbd"}],"tacker/tests/unit/vm/infra_drivers/heat/data/hot_flavor_no_units.yaml":[{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"a183ddb5b8a2f4bde45afe9e1e9664050f28a5f0","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  CP1:"},{"line_number":24,"context_line":"    type: OS::Neutron::Port"},{"line_number":25,"context_line":"    properties:"},{"line_number":26,"context_line":"      network: existing_network_1 "},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"  VDU1_flavor:"},{"line_number":29,"context_line":"    type: OS::Nova::Flavor"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"da0c15f0_d163f13f","line":26,"updated":"2016-03-28 05:05:48.000000000","message":"nit:spurious blank space","commit_id":"15acb317460610e58161643155bfdfd45ebc9fbd"}],"tacker/tests/unit/vm/infra_drivers/heat/data/test_tosca_flavor.yaml":[{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"2c0a708736b9441650665c13ad018dd7427ecf97","unresolved":false,"context_lines":[{"line_number":1,"context_line":"tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"description: OpenWRT with services"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":20,"id":"da0c15f0_295ac750","line":1,"updated":"2016-03-27 23:53:13.000000000","message":"it will be good one of these sample files for flavor in the main samples dir. as well under devstack.","commit_id":"4cb64532db60390f4582a264962348176fec5c26"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"267f9abda7db7f13149b871ffb17fd65587316a8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"description: OpenWRT with services"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":20,"id":"da0c15f0_c4185287","line":1,"in_reply_to":"da0c15f0_295ac750","updated":"2016-03-28 01:46:29.000000000","message":"Done","commit_id":"4cb64532db60390f4582a264962348176fec5c26"}],"tacker/tests/unit/vm/infra_drivers/heat/data/test_tosca_flavor_and_capabilities.yaml":[{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"a183ddb5b8a2f4bde45afe9e1e9664050f28a5f0","unresolved":false,"context_lines":[{"line_number":26,"context_line":"            - {trigger: failure, action: respawn}"},{"line_number":27,"context_line":"          parameters:"},{"line_number":28,"context_line":"            count: \"3\""},{"line_number":29,"context_line":"            interval: \"10\" "},{"line_number":30,"context_line":"    CP1:"},{"line_number":31,"context_line":"      type: tosca.nodes.nfv.CP.Tacker"},{"line_number":32,"context_line":"      properties:"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"da0c15f0_914a19ab","line":29,"updated":"2016-03-28 05:05:48.000000000","message":"nit:spurious blank space","commit_id":"15acb317460610e58161643155bfdfd45ebc9fbd"}],"tacker/tests/unit/vm/infra_drivers/heat/data/test_tosca_flavor_defaults.yaml":[{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"a183ddb5b8a2f4bde45afe9e1e9664050f28a5f0","unresolved":false,"context_lines":[{"line_number":23,"context_line":"            - {trigger: failure, action: respawn}"},{"line_number":24,"context_line":"          parameters:"},{"line_number":25,"context_line":"            count: \"3\""},{"line_number":26,"context_line":"            interval: \"10\" "},{"line_number":27,"context_line":"    CP1:"},{"line_number":28,"context_line":"      type: tosca.nodes.nfv.CP.Tacker"},{"line_number":29,"context_line":"      properties:"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"da0c15f0_31d22dd3","line":26,"updated":"2016-03-28 05:05:48.000000000","message":"nit:spurious blank space","commit_id":"15acb317460610e58161643155bfdfd45ebc9fbd"}],"tacker/tests/unit/vm/infra_drivers/heat/data/test_tosca_flavor_no_units.yaml":[{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"a183ddb5b8a2f4bde45afe9e1e9664050f28a5f0","unresolved":false,"context_lines":[{"line_number":25,"context_line":"            - {trigger: failure, action: respawn}"},{"line_number":26,"context_line":"          parameters:"},{"line_number":27,"context_line":"            count: \"3\""},{"line_number":28,"context_line":"            interval: \"10\" "},{"line_number":29,"context_line":"    CP1:"},{"line_number":30,"context_line":"      type: tosca.nodes.nfv.CP.Tacker"},{"line_number":31,"context_line":"      properties:"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"da0c15f0_71dca5e4","line":28,"updated":"2016-03-28 05:05:48.000000000","message":"nit:spurious blank space","commit_id":"15acb317460610e58161643155bfdfd45ebc9fbd"}],"tacker/tests/unit/vm/infra_drivers/heat/test_heat.py":[{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"9a3e983d07cc3caeea65ee0a0ff6cb323e68b408","unresolved":false,"context_lines":[{"line_number":251,"context_line":"                \u0027tenant_id\u0027: u\u0027ad7ebc56538745a08ef7c5e97f8bd437\u0027}"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    def _get_dummy_tosca_device(self, template\u003d\u0027\u0027):"},{"line_number":254,"context_line":"        tosca_template \u003d getattr(self, \u0027tosca_\u0027 + template, None)"},{"line_number":255,"context_line":"        if not tosca_template:"},{"line_number":256,"context_line":"            tosca_template \u003d self.tosca_openwrt"},{"line_number":257,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"fa0719c6_1b55781c","line":254,"updated":"2016-03-22 17:35:56.000000000","message":"This approach in L254 to L255 may end up all tests passing. If the template object is not defined in L60 - L73, the tests will pass with using  tosca_template object which is not what is desired. Might be better to ask bobh to have him modify this function to be generic and take tempate object as parameter.","commit_id":"4fa1819918506c56b4f8dfa14de14d6cab3a1e79"},{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"2f9072c596ec59d52fdafec1e4f1046204fb67ee","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    hot_param_template \u003d _get_template(\u0027hot_openwrt_params.yaml\u0027)"},{"line_number":51,"context_line":"    hot_ipparam_template \u003d _get_template(\u0027hot_openwrt_ipparams.yaml\u0027)"},{"line_number":52,"context_line":"    vnfd_openwrt \u003d _get_template(\u0027openwrt.yaml\u0027)"},{"line_number":53,"context_line":"    tosca_openwrt \u003d _get_template(\u0027test_tosca_openwrt.yaml\u0027)"},{"line_number":54,"context_line":"    hot_tosca_openwrt \u003d _get_template(\u0027hot_tosca_openwrt.yaml\u0027)"},{"line_number":55,"context_line":"    config_data \u003d _get_template(\u0027config_data.yaml\u0027)"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"fa0719c6_933956da","line":53,"updated":"2016-03-23 07:10:00.000000000","message":"L53 and L54 need to be removed as they are no longer referenced","commit_id":"9c24b0d45234994cdb8afe593872f5b3ba3f4a82"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"f83d8ecd795605a3b29ca7cda681e527c3063400","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    hot_param_template \u003d _get_template(\u0027hot_openwrt_params.yaml\u0027)"},{"line_number":51,"context_line":"    hot_ipparam_template \u003d _get_template(\u0027hot_openwrt_ipparams.yaml\u0027)"},{"line_number":52,"context_line":"    vnfd_openwrt \u003d _get_template(\u0027openwrt.yaml\u0027)"},{"line_number":53,"context_line":"    tosca_openwrt \u003d _get_template(\u0027test_tosca_openwrt.yaml\u0027)"},{"line_number":54,"context_line":"    hot_tosca_openwrt \u003d _get_template(\u0027hot_tosca_openwrt.yaml\u0027)"},{"line_number":55,"context_line":"    config_data \u003d _get_template(\u0027config_data.yaml\u0027)"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"fa0719c6_73a92290","line":53,"in_reply_to":"fa0719c6_933956da","updated":"2016-03-23 07:15:15.000000000","message":"we are referring these variables in L202, L203, L214, L215","commit_id":"9c24b0d45234994cdb8afe593872f5b3ba3f4a82"},{"author":{"_account_id":16511,"name":"Bob Haddleton","email":"bob.haddleton@nokia.com","username":"bobh"},"change_message_id":"385910b8f0c8dd1f02a458b2c83d9c2021a50ee4","unresolved":false,"context_lines":[{"line_number":313,"context_line":"        self.assertEqual(expected_result, result)"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def test_add_resources_tpl_for_flavor(self):"},{"line_number":316,"context_line":"        dummy_heat_tpl \u003d \"\"\""},{"line_number":317,"context_line":"            description: OpenWRT with services"},{"line_number":318,"context_line":"            heat_template_version: 2013-05-23"},{"line_number":319,"context_line":"            outputs: {}"}],"source_content_type":"text/x-python","patch_set":19,"id":"da0c15f0_394ea26f","line":316,"range":{"start_line":316,"start_character":8,"end_line":316,"end_character":22},"updated":"2016-03-27 03:42:37.000000000","message":"This file was modified recently to put all of the expected and test template strings in files to facilitate reuse and simplify future modifications.","commit_id":"741ba5facbeec04d19859381919780ae19ba259f"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"2c0a708736b9441650665c13ad018dd7427ecf97","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        return device"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    def test_create_tosca(self):"},{"line_number":236,"context_line":"        # self.skipTest(\"Not ready yet\")"},{"line_number":237,"context_line":"        device \u003d self._get_dummy_tosca_device(\u0027test_tosca_openwrt.yaml\u0027)"},{"line_number":238,"context_line":"        expected_result \u003d \u00274a4c2d44-8a52-4895-9a75-9d1c76c3e738\u0027"},{"line_number":239,"context_line":"        expected_fields \u003d self._get_expected_fields_tosca("},{"line_number":240,"context_line":"            \u0027hot_tosca_openwrt.yaml\u0027)"},{"line_number":241,"context_line":"        expected_device \u003d self._get_expected_tosca_device()"},{"line_number":242,"context_line":"        result \u003d self.heat_driver.create(plugin\u003dNone, context\u003dself.context,"},{"line_number":243,"context_line":"                                         device\u003ddevice)"},{"line_number":244,"context_line":"        # self.heat_client.create.assert_called_once_with(expected_fields)"},{"line_number":245,"context_line":"        actual_fields \u003d self.heat_client.create.call_args[0][0]"},{"line_number":246,"context_line":"        actual_fields[\"template\"] \u003d yaml.safe_load(actual_fields[\"template\"])"},{"line_number":247,"context_line":"        expected_fields[\"template\"] \u003d \\"},{"line_number":248,"context_line":"            yaml.safe_load(expected_fields[\"template\"])"},{"line_number":249,"context_line":"        self.assertEqual(actual_fields, expected_fields)"},{"line_number":250,"context_line":"        device[\"attributes\"][\"heat_template\"] \u003d yaml.safe_load("},{"line_number":251,"context_line":"            device[\"attributes\"][\"heat_template\"])"},{"line_number":252,"context_line":"        self.assertEqual(expected_result, result)"},{"line_number":253,"context_line":"        self.assertEqual(device, expected_device)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def test_create_tosca_with_new_flavor(self):"},{"line_number":256,"context_line":"        device \u003d self._get_dummy_tosca_device("},{"line_number":257,"context_line":"            \u0027test_tosca_flavor.yaml\u0027)"},{"line_number":258,"context_line":"        expected_result \u003d \u00274a4c2d44-8a52-4895-9a75-9d1c76c3e738\u0027"},{"line_number":259,"context_line":"        expected_fields \u003d self._get_expected_fields_tosca("},{"line_number":260,"context_line":"            \u0027hot_flavor.yaml\u0027)"},{"line_number":261,"context_line":"        result \u003d self.heat_driver.create(plugin\u003dNone, context\u003dself.context,"},{"line_number":262,"context_line":"                                         device\u003ddevice)"},{"line_number":263,"context_line":"        actual_fields \u003d self.heat_client.create.call_args[0][0]"},{"line_number":264,"context_line":"        actual_fields[\"template\"] \u003d yaml.safe_load(actual_fields[\"template\"])"},{"line_number":265,"context_line":"        expected_fields[\"template\"] \u003d \\"},{"line_number":266,"context_line":"            yaml.safe_load(expected_fields[\"template\"])"},{"line_number":267,"context_line":"        self.assertEqual(actual_fields, expected_fields)"},{"line_number":268,"context_line":"        self.assertEqual(expected_result, result)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def test_create_tosca_with_new_flavor_with_defaults(self):"},{"line_number":271,"context_line":"        device \u003d self._get_dummy_tosca_device("},{"line_number":272,"context_line":"            \u0027test_tosca_flavor_defaults.yaml\u0027)"},{"line_number":273,"context_line":"        expected_result \u003d \u00274a4c2d44-8a52-4895-9a75-9d1c76c3e738\u0027"},{"line_number":274,"context_line":"        expected_fields \u003d self._get_expected_fields_tosca("},{"line_number":275,"context_line":"            \u0027hot_flavor_defaults.yaml\u0027)"},{"line_number":276,"context_line":"        result \u003d self.heat_driver.create(plugin\u003dNone, context\u003dself.context,"},{"line_number":277,"context_line":"                                         device\u003ddevice)"},{"line_number":278,"context_line":"        actual_fields \u003d self.heat_client.create.call_args[0][0]"},{"line_number":279,"context_line":"        actual_fields[\"template\"] \u003d yaml.safe_load(actual_fields[\"template\"])"},{"line_number":280,"context_line":"        expected_fields[\"template\"] \u003d \\"},{"line_number":281,"context_line":"            yaml.safe_load(expected_fields[\"template\"])"},{"line_number":282,"context_line":"        self.assertEqual(actual_fields, expected_fields)"},{"line_number":283,"context_line":"        self.assertEqual(expected_result, result)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def test_create_tosca_with_flavor_and_capabilities(self):"},{"line_number":286,"context_line":"        device \u003d self._get_dummy_tosca_device("},{"line_number":287,"context_line":"            \u0027test_tosca_flavor_and_capabilities.yaml\u0027)"},{"line_number":288,"context_line":"        expected_result \u003d \u00274a4c2d44-8a52-4895-9a75-9d1c76c3e738\u0027"},{"line_number":289,"context_line":"        expected_fields \u003d self._get_expected_fields_tosca("},{"line_number":290,"context_line":"            \u0027hot_flavor_and_capabilities.yaml\u0027)"},{"line_number":291,"context_line":"        result \u003d self.heat_driver.create(plugin\u003dNone, context\u003dself.context,"},{"line_number":292,"context_line":"                                         device\u003ddevice)"},{"line_number":293,"context_line":"        actual_fields \u003d self.heat_client.create.call_args[0][0]"},{"line_number":294,"context_line":"        actual_fields[\"template\"] \u003d yaml.safe_load(actual_fields[\"template\"])"},{"line_number":295,"context_line":"        expected_fields[\"template\"] \u003d \\"},{"line_number":296,"context_line":"            yaml.safe_load(expected_fields[\"template\"])"},{"line_number":297,"context_line":"        self.assertEqual(actual_fields, expected_fields)"},{"line_number":298,"context_line":"        self.assertEqual(expected_result, result)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def test_create_tosca_with_flavor_no_units(self):"},{"line_number":301,"context_line":"        device \u003d self._get_dummy_tosca_device("},{"line_number":302,"context_line":"            \u0027test_tosca_flavor_no_units.yaml\u0027)"},{"line_number":303,"context_line":"        expected_result \u003d \u00274a4c2d44-8a52-4895-9a75-9d1c76c3e738\u0027"},{"line_number":304,"context_line":"        expected_fields \u003d self._get_expected_fields_tosca("},{"line_number":305,"context_line":"            \u0027hot_flavor_no_units.yaml\u0027)"},{"line_number":306,"context_line":"        result \u003d self.heat_driver.create(plugin\u003dNone, context\u003dself.context,"},{"line_number":307,"context_line":"                                         device\u003ddevice)"},{"line_number":308,"context_line":"        actual_fields \u003d self.heat_client.create.call_args[0][0]"},{"line_number":309,"context_line":"        actual_fields[\"template\"] \u003d yaml.safe_load(actual_fields[\"template\"])"},{"line_number":310,"context_line":"        expected_fields[\"template\"] \u003d \\"},{"line_number":311,"context_line":"            yaml.safe_load(expected_fields[\"template\"])"},{"line_number":312,"context_line":"        self.assertEqual(actual_fields, expected_fields)"},{"line_number":313,"context_line":"        self.assertEqual(expected_result, result)"}],"source_content_type":"text/x-python","patch_set":20,"id":"da0c15f0_0945436f","line":313,"range":{"start_line":236,"start_character":8,"end_line":313,"end_character":49},"updated":"2016-03-27 23:53:13.000000000","message":"all these test cases are doing the same logic for initialize and assert except for tosca file input. Can the tests logic be combined to one inner testcase which takes tosca file as an input and does the rest of logic in a single method. this method can later be invoked in individual test cases","commit_id":"4cb64532db60390f4582a264962348176fec5c26"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"267f9abda7db7f13149b871ffb17fd65587316a8","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        return device"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    def test_create_tosca(self):"},{"line_number":236,"context_line":"        # self.skipTest(\"Not ready yet\")"},{"line_number":237,"context_line":"        device \u003d self._get_dummy_tosca_device(\u0027test_tosca_openwrt.yaml\u0027)"},{"line_number":238,"context_line":"        expected_result \u003d \u00274a4c2d44-8a52-4895-9a75-9d1c76c3e738\u0027"},{"line_number":239,"context_line":"        expected_fields \u003d self._get_expected_fields_tosca("},{"line_number":240,"context_line":"            \u0027hot_tosca_openwrt.yaml\u0027)"},{"line_number":241,"context_line":"        expected_device \u003d self._get_expected_tosca_device()"},{"line_number":242,"context_line":"        result \u003d self.heat_driver.create(plugin\u003dNone, context\u003dself.context,"},{"line_number":243,"context_line":"                                         device\u003ddevice)"},{"line_number":244,"context_line":"        # self.heat_client.create.assert_called_once_with(expected_fields)"},{"line_number":245,"context_line":"        actual_fields \u003d self.heat_client.create.call_args[0][0]"},{"line_number":246,"context_line":"        actual_fields[\"template\"] \u003d yaml.safe_load(actual_fields[\"template\"])"},{"line_number":247,"context_line":"        expected_fields[\"template\"] \u003d \\"},{"line_number":248,"context_line":"            yaml.safe_load(expected_fields[\"template\"])"},{"line_number":249,"context_line":"        self.assertEqual(actual_fields, expected_fields)"},{"line_number":250,"context_line":"        device[\"attributes\"][\"heat_template\"] \u003d yaml.safe_load("},{"line_number":251,"context_line":"            device[\"attributes\"][\"heat_template\"])"},{"line_number":252,"context_line":"        self.assertEqual(expected_result, result)"},{"line_number":253,"context_line":"        self.assertEqual(device, expected_device)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def test_create_tosca_with_new_flavor(self):"},{"line_number":256,"context_line":"        device \u003d self._get_dummy_tosca_device("},{"line_number":257,"context_line":"            \u0027test_tosca_flavor.yaml\u0027)"},{"line_number":258,"context_line":"        expected_result \u003d \u00274a4c2d44-8a52-4895-9a75-9d1c76c3e738\u0027"},{"line_number":259,"context_line":"        expected_fields \u003d self._get_expected_fields_tosca("},{"line_number":260,"context_line":"            \u0027hot_flavor.yaml\u0027)"},{"line_number":261,"context_line":"        result \u003d self.heat_driver.create(plugin\u003dNone, context\u003dself.context,"},{"line_number":262,"context_line":"                                         device\u003ddevice)"},{"line_number":263,"context_line":"        actual_fields \u003d self.heat_client.create.call_args[0][0]"},{"line_number":264,"context_line":"        actual_fields[\"template\"] \u003d yaml.safe_load(actual_fields[\"template\"])"},{"line_number":265,"context_line":"        expected_fields[\"template\"] \u003d \\"},{"line_number":266,"context_line":"            yaml.safe_load(expected_fields[\"template\"])"},{"line_number":267,"context_line":"        self.assertEqual(actual_fields, expected_fields)"},{"line_number":268,"context_line":"        self.assertEqual(expected_result, result)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def test_create_tosca_with_new_flavor_with_defaults(self):"},{"line_number":271,"context_line":"        device \u003d self._get_dummy_tosca_device("},{"line_number":272,"context_line":"            \u0027test_tosca_flavor_defaults.yaml\u0027)"},{"line_number":273,"context_line":"        expected_result \u003d \u00274a4c2d44-8a52-4895-9a75-9d1c76c3e738\u0027"},{"line_number":274,"context_line":"        expected_fields \u003d self._get_expected_fields_tosca("},{"line_number":275,"context_line":"            \u0027hot_flavor_defaults.yaml\u0027)"},{"line_number":276,"context_line":"        result \u003d self.heat_driver.create(plugin\u003dNone, context\u003dself.context,"},{"line_number":277,"context_line":"                                         device\u003ddevice)"},{"line_number":278,"context_line":"        actual_fields \u003d self.heat_client.create.call_args[0][0]"},{"line_number":279,"context_line":"        actual_fields[\"template\"] \u003d yaml.safe_load(actual_fields[\"template\"])"},{"line_number":280,"context_line":"        expected_fields[\"template\"] \u003d \\"},{"line_number":281,"context_line":"            yaml.safe_load(expected_fields[\"template\"])"},{"line_number":282,"context_line":"        self.assertEqual(actual_fields, expected_fields)"},{"line_number":283,"context_line":"        self.assertEqual(expected_result, result)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def test_create_tosca_with_flavor_and_capabilities(self):"},{"line_number":286,"context_line":"        device \u003d self._get_dummy_tosca_device("},{"line_number":287,"context_line":"            \u0027test_tosca_flavor_and_capabilities.yaml\u0027)"},{"line_number":288,"context_line":"        expected_result \u003d \u00274a4c2d44-8a52-4895-9a75-9d1c76c3e738\u0027"},{"line_number":289,"context_line":"        expected_fields \u003d self._get_expected_fields_tosca("},{"line_number":290,"context_line":"            \u0027hot_flavor_and_capabilities.yaml\u0027)"},{"line_number":291,"context_line":"        result \u003d self.heat_driver.create(plugin\u003dNone, context\u003dself.context,"},{"line_number":292,"context_line":"                                         device\u003ddevice)"},{"line_number":293,"context_line":"        actual_fields \u003d self.heat_client.create.call_args[0][0]"},{"line_number":294,"context_line":"        actual_fields[\"template\"] \u003d yaml.safe_load(actual_fields[\"template\"])"},{"line_number":295,"context_line":"        expected_fields[\"template\"] \u003d \\"},{"line_number":296,"context_line":"            yaml.safe_load(expected_fields[\"template\"])"},{"line_number":297,"context_line":"        self.assertEqual(actual_fields, expected_fields)"},{"line_number":298,"context_line":"        self.assertEqual(expected_result, result)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def test_create_tosca_with_flavor_no_units(self):"},{"line_number":301,"context_line":"        device \u003d self._get_dummy_tosca_device("},{"line_number":302,"context_line":"            \u0027test_tosca_flavor_no_units.yaml\u0027)"},{"line_number":303,"context_line":"        expected_result \u003d \u00274a4c2d44-8a52-4895-9a75-9d1c76c3e738\u0027"},{"line_number":304,"context_line":"        expected_fields \u003d self._get_expected_fields_tosca("},{"line_number":305,"context_line":"            \u0027hot_flavor_no_units.yaml\u0027)"},{"line_number":306,"context_line":"        result \u003d self.heat_driver.create(plugin\u003dNone, context\u003dself.context,"},{"line_number":307,"context_line":"                                         device\u003ddevice)"},{"line_number":308,"context_line":"        actual_fields \u003d self.heat_client.create.call_args[0][0]"},{"line_number":309,"context_line":"        actual_fields[\"template\"] \u003d yaml.safe_load(actual_fields[\"template\"])"},{"line_number":310,"context_line":"        expected_fields[\"template\"] \u003d \\"},{"line_number":311,"context_line":"            yaml.safe_load(expected_fields[\"template\"])"},{"line_number":312,"context_line":"        self.assertEqual(actual_fields, expected_fields)"},{"line_number":313,"context_line":"        self.assertEqual(expected_result, result)"}],"source_content_type":"text/x-python","patch_set":20,"id":"da0c15f0_180d8e37","line":313,"range":{"start_line":236,"start_character":8,"end_line":313,"end_character":49},"in_reply_to":"da0c15f0_0945436f","updated":"2016-03-28 01:46:29.000000000","message":"Done","commit_id":"4cb64532db60390f4582a264962348176fec5c26"},{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"a183ddb5b8a2f4bde45afe9e1e9664050f28a5f0","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        device[\u0027device_template\u0027] \u003d dtemplate[\u0027device_template\u0027]"},{"line_number":233,"context_line":"        return device"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    def _test_tosca_templates(self, tosca_tpl_name, hot_tpl_name):"},{"line_number":236,"context_line":"        device \u003d self._get_dummy_tosca_device(tosca_tpl_name)"},{"line_number":237,"context_line":"        expected_result \u003d \u00274a4c2d44-8a52-4895-9a75-9d1c76c3e738\u0027"},{"line_number":238,"context_line":"        expected_fields \u003d self._get_expected_fields_tosca(hot_tpl_name)"}],"source_content_type":"text/x-python","patch_set":21,"id":"da0c15f0_b182bd92","line":235,"updated":"2016-03-28 05:05:48.000000000","message":"This method is asserting equals, you may want to consider renaming this method to indicate the function that this method does, e.g; _test_assert_equal_for_tosca_templates or similar such name that you see fit.","commit_id":"15acb317460610e58161643155bfdfd45ebc9fbd"}],"tacker/vm/infra_drivers/heat/heat.py":[{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"44395781f943aaf2cf13782300f397838b88319d","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                # Prepend the tacker_defs.yaml import file with the full"},{"line_number":277,"context_line":"                # path to the file"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"                res_tpl \u003d toscautils.check_remove_resr_tpl(vnfd_dict)"},{"line_number":280,"context_line":"                tosca \u003d ToscaTemplate(parsed_params\u003dparsed_params,"},{"line_number":281,"context_line":"                                      a_file\u003dFalse, yaml_dict_tpl\u003dvnfd_dict)"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3afc51ec_a472ad7a","line":279,"updated":"2016-03-11 22:19:03.000000000","message":"clarification: Is there a reason why this cannot be executed as part of L284 toscautils.post_process_template(tosca) ? The post_process_template could return a value.","commit_id":"bbd862b5c50fc2008aca979ec62405d381023142"},{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"356dc4456c1d179b803bcb21dcdbc198bc6b0f27","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                }"},{"line_number":221,"context_line":"            networks_list.append(dict(network_param))"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def _add_resources_tpl(self, heat_tpl, hot_res_tpl):"},{"line_number":224,"context_line":"        heat_dict \u003d yaml.safe_load(heat_tpl)"},{"line_number":225,"context_line":"        for res, res_dict in hot_res_tpl.iteritems():"},{"line_number":226,"context_line":"            for vdu, vdu_dict in res_dict.iteritems():"}],"source_content_type":"text/x-python","patch_set":6,"id":"1af94dfe_776322dd","line":223,"updated":"2016-03-16 05:49:52.000000000","message":"Clarification:Do you plan to have any unit tests for this method?","commit_id":"26ec6fe69e4f5bd24b604a8c39433655c15cd8ab"},{"author":{"_account_id":16511,"name":"Bob Haddleton","email":"bob.haddleton@nokia.com","username":"bobh"},"change_message_id":"385910b8f0c8dd1f02a458b2c83d9c2021a50ee4","unresolved":false,"context_lines":[{"line_number":305,"context_line":"                heat_template_yaml \u003d toscautils.post_process_heat_template("},{"line_number":306,"context_line":"                    heat_template_yaml, mgmt_ports)"},{"line_number":307,"context_line":"                heat_template_yaml \u003d \\"},{"line_number":308,"context_line":"                    self._add_resources_tpl(heat_template_yaml, res_tpl)"},{"line_number":309,"context_line":"            else:"},{"line_number":310,"context_line":"                assert \u0027template\u0027 not in fields"},{"line_number":311,"context_line":"                assert \u0027template_url\u0027 not in fields"}],"source_content_type":"text/x-python","patch_set":19,"id":"da0c15f0_b942b23c","line":308,"range":{"start_line":308,"start_character":25,"end_line":308,"end_character":43},"updated":"2016-03-27 03:42:37.000000000","message":"Can this be done as part of the post_process_heat_template() so that the HOT template only needs to be modified in one place?","commit_id":"741ba5facbeec04d19859381919780ae19ba259f"}],"tacker/vm/tosca/lib/tacker_defs.yaml":[{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"fa47e3c1816da7eb3f724fc1e50d674855684a26","unresolved":false,"context_lines":[{"line_number":29,"context_line":"  tosca.datatypes.compute_properties:"},{"line_number":30,"context_line":"    properties:"},{"line_number":31,"context_line":"      num_cpus:"},{"line_number":32,"context_line":"        type: string"},{"line_number":33,"context_line":"      mem_size:"},{"line_number":34,"context_line":"        type: string"},{"line_number":35,"context_line":"      disk_size:"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"fa0719c6_c2134b5b","line":32,"updated":"2016-03-21 17:20:24.000000000","message":"Consider leveraging the integer type, in case you upload a new patch set","commit_id":"832b481d1618e147c9b0fb88d1f8ebc0e1b11a59"},{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"2f9072c596ec59d52fdafec1e4f1046204fb67ee","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        type: map"},{"line_number":71,"context_line":"        entry_schema:"},{"line_number":72,"context_line":"          type: string"},{"line_number":73,"context_line":"      "},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"  tosca.policies.tacker.Monitoring.NoOp:"},{"line_number":76,"context_line":"    derived_from: tosca.policies.tacker.Monitoring"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"fa0719c6_f3b7f237","line":73,"updated":"2016-03-23 07:10:00.000000000","message":"spurious tab","commit_id":"9c24b0d45234994cdb8afe593872f5b3ba3f4a82"}],"tacker/vm/tosca/schema.py":[{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"44395781f943aaf2cf13782300f397838b88319d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"COMPUTE_KEYS \u003d [\u0027host\u0027, \u0027nfv_compute\u0027]"},{"line_number":14,"context_line":"FLAVOR_SCHEMA_PROP \u003d {"},{"line_number":15,"context_line":"    \"type\": \"object\","},{"line_number":16,"context_line":"    \"required\": [\"properties\"],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afc51ec_43cc7c35","line":13,"updated":"2016-03-11 22:19:03.000000000","message":"I dont believe that host is supported in the latest simple or simple_nfv profile","commit_id":"bbd862b5c50fc2008aca979ec62405d381023142"},{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"44395781f943aaf2cf13782300f397838b88319d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"}"},{"line_number":23,"context_line":"FLAVOR_SCHEMA \u003d {"},{"line_number":24,"context_line":"    \"type\": \"object\","},{"line_number":25,"context_line":"    \"required\": [\"capabilities\"],"},{"line_number":26,"context_line":"    \"properties\": {"},{"line_number":27,"context_line":"        \"capabilities\": {"},{"line_number":28,"context_line":"            \"type\": \"object\","}],"source_content_type":"text/x-python","patch_set":3,"id":"3afc51ec_c3236c04","line":25,"updated":"2016-03-11 22:19:03.000000000","message":"the schema has to be updated to include nfv_compute and properties as required as well per http://paste.openstack.org/show/490245/","commit_id":"bbd862b5c50fc2008aca979ec62405d381023142"}],"tacker/vm/tosca/utils.py":[{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"19a0e70ab797272fdfa41a3dd078b356433fd2d2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"}"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"FLAVOR_SCHEMA \u003d {"},{"line_number":40,"context_line":"    \"type\": \"object\","},{"line_number":41,"context_line":"    \"properties\": {"},{"line_number":42,"context_line":"        \"capabilites\": {"},{"line_number":43,"context_line":"            \"type\": \"object\","}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_f4995ec5","line":40,"updated":"2016-03-10 07:00:30.000000000","message":"When the EVP spec was reviewed and approved, the structure was as below:\nVDU_NAME\n  type: tosca.nodes.nfv.VDU\n  capabilities:\n      nfv_compute:\n         properties:\n             num_cpus: 4\n             mem_size: 4096\n             disk_size: 8\n\nYou may want to get this clarified by Bob and Sridhar","commit_id":"dbd019a9430a9a6a9e159481b17451d89d3795c2"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"21e11233ecc606ef5c555e74657722a68c9ff086","unresolved":false,"context_lines":[{"line_number":37,"context_line":"}"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"FLAVOR_SCHEMA \u003d {"},{"line_number":40,"context_line":"    \"type\": \"object\","},{"line_number":41,"context_line":"    \"properties\": {"},{"line_number":42,"context_line":"        \"capabilites\": {"},{"line_number":43,"context_line":"            \"type\": \"object\","}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_f46c87d1","line":40,"in_reply_to":"5aef4532_f4995ec5","updated":"2016-03-11 01:14:29.000000000","message":"Good catch. Yes, please use the latest syntax as in the EVP spec. Also left a similar comment in utils.py file.","commit_id":"dbd019a9430a9a6a9e159481b17451d89d3795c2"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"21e11233ecc606ef5c555e74657722a68c9ff086","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            if (not vdu_dict[\"properties\"].get(\"flavor\", None) and"},{"line_number":171,"context_line":"              not validate(vdu_dict, FLAVOR_SCHEMA)):"},{"line_number":172,"context_line":"                hot_tpl[vdu] \u003d dict()"},{"line_number":173,"context_line":"                properties \u003d vdu_dict[\"capabilities\"][\"host\"][\"properties\"]"},{"line_number":174,"context_line":"                for prop, (hot_prop, default, unit) in \\"},{"line_number":175,"context_line":"                        FLAVOR_PROPS.iteritems():"},{"line_number":176,"context_line":"                    if unit and properties.get(prop, None):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_743357f6","line":173,"updated":"2016-03-11 01:14:29.000000000","message":"Please use the latest VDU node_template described in EVP spec [1]\n\ncapabilities:\n nfv_compute:\n   properties:\n     num_cpus: 8\n     mem_size: 4096 # Memory Size in MB\n     disk_size: 8 # Value in GB\n\n[1] https://review.openstack.org/#/c/257847/15/specs/mitaka/enhanced-placement.rst,unified L164","commit_id":"dbd019a9430a9a6a9e159481b17451d89d3795c2"},{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"44395781f943aaf2cf13782300f397838b88319d","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    return hot_tpl"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"def _get_vdus(template):"},{"line_number":174,"context_line":"    vdus \u003d []"},{"line_number":175,"context_line":"    node_templates \u003d template[\"topology_template\"][\"node_templates\"]"},{"line_number":176,"context_line":"    for vdu in node_templates:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afc51ec_3804047d","line":173,"updated":"2016-03-11 22:19:03.000000000","message":"Clarify: How different is this from the findvdus() in L77? Trying to see if reuse is possible instead of defining a new method","commit_id":"bbd862b5c50fc2008aca979ec62405d381023142"},{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"44395781f943aaf2cf13782300f397838b88319d","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    return vdus"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"def check_remove_resr_tpl(template):"},{"line_number":183,"context_line":"    res_tpl \u003d dict()"},{"line_number":184,"context_line":"    for res, method in OS_RESOURCES.iteritems():"},{"line_number":185,"context_line":"        res_tpl[res] \u003d getattr(sys.modules[__name__],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3afc51ec_6b8358cd","line":182,"updated":"2016-03-11 22:19:03.000000000","message":"suggestion: rename the method to such as \"check_remove_res_template\" for better readability if you are in agreement.","commit_id":"bbd862b5c50fc2008aca979ec62405d381023142"},{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"8afa5ca3df0544fc82954bd32ab84c29a69638d5","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    pass"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"def get_flavor_dict(template):"},{"line_number":136,"context_line":"    flavor_dict \u003d {}"},{"line_number":137,"context_line":"    for nt in template.nodetemplates:"},{"line_number":138,"context_line":"        if (nt.type_definition.is_derived_from(TACKERVDU) and"}],"source_content_type":"text/x-python","patch_set":6,"id":"1af94dfe_774cc270","line":135,"updated":"2016-03-16 05:48:29.000000000","message":"Clarification:Do you plan to have any unit tests for this method?","commit_id":"26ec6fe69e4f5bd24b604a8c39433655c15cd8ab"},{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"fa4928ae17d282c60bc8f7f0d34f91e4adce44c0","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            properties \u003d nt.get_capabilities()[\"nfv_compute\"].get_properties()"},{"line_number":142,"context_line":"            for prop, (hot_prop, default, unit) in \\"},{"line_number":143,"context_line":"                    FLAVOR_PROPS.iteritems():"},{"line_number":144,"context_line":"                hot_prop_val \u003d None"},{"line_number":145,"context_line":"                if unit and properties.get(prop, None):"},{"line_number":146,"context_line":"                    hot_prop_val \u003d \\"},{"line_number":147,"context_line":"                        utils.change_memory_unit(properties[prop].value, unit)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af94dfe_2db87d74","line":144,"updated":"2016-03-18 22:59:42.000000000","message":"Setting \u0027hot_prop_value \u003d None\u0027 always sets the value of vcpus as default value of 1 at L149","commit_id":"116c39d0ddf2a9cab1535003ac9a36ba25c70990"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"681ed2bc419cd26aa7a0b6d8165fcaedf92ad8d2","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            properties \u003d nt.get_capabilities()[\"nfv_compute\"].get_properties()"},{"line_number":142,"context_line":"            for prop, (hot_prop, default, unit) in \\"},{"line_number":143,"context_line":"                    FLAVOR_PROPS.iteritems():"},{"line_number":144,"context_line":"                hot_prop_val \u003d None"},{"line_number":145,"context_line":"                if unit and properties.get(prop, None):"},{"line_number":146,"context_line":"                    hot_prop_val \u003d \\"},{"line_number":147,"context_line":"                        utils.change_memory_unit(properties[prop].value, unit)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af94dfe_dc0265b3","line":144,"in_reply_to":"1af94dfe_2db87d74","updated":"2016-03-19 05:53:18.000000000","message":"Thanks vishwanath, that\u0027s a nice catch. Updated the patchset","commit_id":"116c39d0ddf2a9cab1535003ac9a36ba25c70990"},{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"fae688ec237be7b55de5ed406da15def0180ec13","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                    if properties.get(prop, None) else None)"},{"line_number":135,"context_line":"                if unit and hot_prop_val:"},{"line_number":136,"context_line":"                    hot_prop_val \u003d \\"},{"line_number":137,"context_line":"                        utils.change_memory_unit(properties[prop].value, unit)"},{"line_number":138,"context_line":"                flavor_dict[nt.name][hot_prop] \u003d \\"},{"line_number":139,"context_line":"                    hot_prop_val if hot_prop_val else default"},{"line_number":140,"context_line":"    return flavor_dict"}],"source_content_type":"text/x-python","patch_set":9,"id":"1af94dfe_d0652945","line":137,"updated":"2016-03-19 08:22:55.000000000","message":"you may want to use hot_prop_val instead of properties[prop].value here","commit_id":"3ab9d90067631154903a4c14cc12a283c8142430"},{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"92591f4a3a3f219236b2b1b9e46d65afe2e96446","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    vdus \u003d findvdus(template)"},{"line_number":127,"context_line":"    for nt in vdus:"},{"line_number":128,"context_line":"        flavor_tmp \u003d nt.get_properties().get(\u0027flavor\u0027, None)"},{"line_number":129,"context_line":"        if flavor_tmp:"},{"line_number":130,"context_line":"            continue"},{"line_number":131,"context_line":"        if nt.get_capabilities().get(\"nfv_compute\", None):"},{"line_number":132,"context_line":"            flavor_dict[nt.name] \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa0719c6_01460923","line":129,"updated":"2016-03-21 00:30:03.000000000","message":"Clarify:if Flavor is specified and capabilities-\u003enfv_compute -\u003e Properties are specified, will flavor trump nfv_compute?","commit_id":"6674d8343cd7e6ffac133264485f3a89b4b558f5"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"fd03a09c1d6f87cc229dc324410d112a60da017c","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    vdus \u003d findvdus(template)"},{"line_number":127,"context_line":"    for nt in vdus:"},{"line_number":128,"context_line":"        flavor_tmp \u003d nt.get_properties().get(\u0027flavor\u0027, None)"},{"line_number":129,"context_line":"        if flavor_tmp:"},{"line_number":130,"context_line":"            continue"},{"line_number":131,"context_line":"        if nt.get_capabilities().get(\"nfv_compute\", None):"},{"line_number":132,"context_line":"            flavor_dict[nt.name] \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa0719c6_81a7b94e","line":129,"in_reply_to":"fa0719c6_01460923","updated":"2016-03-21 01:15:10.000000000","message":"That is the behavior we want which maintains backward compatibility.","commit_id":"6674d8343cd7e6ffac133264485f3a89b4b558f5"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"7eddf3a2b48676b676291418f9b040e455b1b512","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    vdus \u003d findvdus(template)"},{"line_number":127,"context_line":"    for nt in vdus:"},{"line_number":128,"context_line":"        flavor_tmp \u003d nt.get_properties().get(\u0027flavor\u0027, None)"},{"line_number":129,"context_line":"        if flavor_tmp:"},{"line_number":130,"context_line":"            continue"},{"line_number":131,"context_line":"        if nt.get_capabilities().get(\"nfv_compute\", None):"},{"line_number":132,"context_line":"            flavor_dict[nt.name] \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa0719c6_55cb9b72","line":129,"in_reply_to":"fa0719c6_0411f7ac","updated":"2016-03-21 06:21:29.000000000","message":"Thanks sridhar for clarifying. We are giving priority for user given flavor name first.","commit_id":"6674d8343cd7e6ffac133264485f3a89b4b558f5"},{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"4b732ceb3852337d7696c027768a04377292c0f7","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    vdus \u003d findvdus(template)"},{"line_number":127,"context_line":"    for nt in vdus:"},{"line_number":128,"context_line":"        flavor_tmp \u003d nt.get_properties().get(\u0027flavor\u0027, None)"},{"line_number":129,"context_line":"        if flavor_tmp:"},{"line_number":130,"context_line":"            continue"},{"line_number":131,"context_line":"        if nt.get_capabilities().get(\"nfv_compute\", None):"},{"line_number":132,"context_line":"            flavor_dict[nt.name] \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa0719c6_0411f7ac","line":129,"in_reply_to":"fa0719c6_81a7b94e","updated":"2016-03-21 02:21:50.000000000","message":"Thanks for clarifying. @tbh, Will need a unit test case to ensure that  this works as expected.","commit_id":"6674d8343cd7e6ffac133264485f3a89b4b558f5"},{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"92591f4a3a3f219236b2b1b9e46d65afe2e96446","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                    FLAVOR_PROPS.iteritems():"},{"line_number":136,"context_line":"                hot_prop_val \u003d (properties[prop].value"},{"line_number":137,"context_line":"                    if properties.get(prop, None) else None)"},{"line_number":138,"context_line":"                if unit and hot_prop_val:"},{"line_number":139,"context_line":"                    hot_prop_val \u003d \\"},{"line_number":140,"context_line":"                        utils.change_memory_unit(properties[prop].value, unit)"},{"line_number":141,"context_line":"                flavor_dict[nt.name][hot_prop] \u003d \\"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa0719c6_613f0526","line":138,"updated":"2016-03-21 00:30:03.000000000","message":"clarify: How does the code handle the case where units may not be provided in the TOSCA template for the disk size and memory?","commit_id":"6674d8343cd7e6ffac133264485f3a89b4b558f5"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"7eddf3a2b48676b676291418f9b040e455b1b512","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                    FLAVOR_PROPS.iteritems():"},{"line_number":136,"context_line":"                hot_prop_val \u003d (properties[prop].value"},{"line_number":137,"context_line":"                    if properties.get(prop, None) else None)"},{"line_number":138,"context_line":"                if unit and hot_prop_val:"},{"line_number":139,"context_line":"                    hot_prop_val \u003d \\"},{"line_number":140,"context_line":"                        utils.change_memory_unit(properties[prop].value, unit)"},{"line_number":141,"context_line":"                flavor_dict[nt.name][hot_prop] \u003d \\"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa0719c6_75e7bf12","line":138,"in_reply_to":"fa0719c6_24835bce","updated":"2016-03-21 06:21:29.000000000","message":"Thanks sridhar for the clarifying. @vish, nice catch, we need to handle disk_size value if no mem unit is specified. As heat accepts disk_size in \"GB\". Will update the patch set with these unit tests as well","commit_id":"6674d8343cd7e6ffac133264485f3a89b4b558f5"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"fd03a09c1d6f87cc229dc324410d112a60da017c","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                    FLAVOR_PROPS.iteritems():"},{"line_number":136,"context_line":"                hot_prop_val \u003d (properties[prop].value"},{"line_number":137,"context_line":"                    if properties.get(prop, None) else None)"},{"line_number":138,"context_line":"                if unit and hot_prop_val:"},{"line_number":139,"context_line":"                    hot_prop_val \u003d \\"},{"line_number":140,"context_line":"                        utils.change_memory_unit(properties[prop].value, unit)"},{"line_number":141,"context_line":"                flavor_dict[nt.name][hot_prop] \u003d \\"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa0719c6_c167f123","line":138,"in_reply_to":"fa0719c6_613f0526","updated":"2016-03-21 01:15:10.000000000","message":"TOSCA assumes the default unit is in MB [1] which makes sense.\n\n[1] http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.0/csprd01/TOSCA-Simple-Profile-YAML-v1.0-csprd01.html#_Toc430015746","commit_id":"6674d8343cd7e6ffac133264485f3a89b4b558f5"},{"author":{"_account_id":12525,"name":"vishwanath jayaraman","email":"vishwanathj@hotmail.com","username":"vish"},"change_message_id":"4b732ceb3852337d7696c027768a04377292c0f7","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                    FLAVOR_PROPS.iteritems():"},{"line_number":136,"context_line":"                hot_prop_val \u003d (properties[prop].value"},{"line_number":137,"context_line":"                    if properties.get(prop, None) else None)"},{"line_number":138,"context_line":"                if unit and hot_prop_val:"},{"line_number":139,"context_line":"                    hot_prop_val \u003d \\"},{"line_number":140,"context_line":"                        utils.change_memory_unit(properties[prop].value, unit)"},{"line_number":141,"context_line":"                flavor_dict[nt.name][hot_prop] \u003d \\"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa0719c6_24835bce","line":138,"in_reply_to":"fa0719c6_c167f123","updated":"2016-03-21 02:21:50.000000000","message":"Thanks for clarifying, @tbh, will need a test case that has a TOSCA template with units not specified.","commit_id":"6674d8343cd7e6ffac133264485f3a89b4b558f5"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"2c0a708736b9441650665c13ad018dd7427ecf97","unresolved":false,"context_lines":[{"line_number":113,"context_line":"def add_resources_tpl(heat_dict, hot_res_tpl):"},{"line_number":114,"context_line":"    for res, res_dict in hot_res_tpl.iteritems():"},{"line_number":115,"context_line":"        for vdu, vdu_dict in res_dict.iteritems():"},{"line_number":116,"context_line":"            res_name \u003d vdu + \"_\" + res"},{"line_number":117,"context_line":"            heat_dict[\"resources\"][res_name] \u003d {"},{"line_number":118,"context_line":"                \"type\": HEAT_RESOURCE_MAP[res],"},{"line_number":119,"context_line":"                \"properties\": {}"}],"source_content_type":"text/x-python","patch_set":20,"id":"da0c15f0_e9ebaf76","line":116,"range":{"start_line":116,"start_character":12,"end_line":116,"end_character":38},"updated":"2016-03-27 23:53:13.000000000","message":"for the case of flavor resource, res_name will be created as say: \"VDU1_flavor\"\n\nIf the tosca template is redeployed, then heat will try creating flavor resource with same name VDU1_flavor and error out.\n Can we come up with something better to uniquely identify flavor across all VNFs which use the same VNFD","commit_id":"4cb64532db60390f4582a264962348176fec5c26"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"dde7dcdc68c66a90ba4835ca4eecd8208f366771","unresolved":false,"context_lines":[{"line_number":113,"context_line":"def add_resources_tpl(heat_dict, hot_res_tpl):"},{"line_number":114,"context_line":"    for res, res_dict in hot_res_tpl.iteritems():"},{"line_number":115,"context_line":"        for vdu, vdu_dict in res_dict.iteritems():"},{"line_number":116,"context_line":"            res_name \u003d vdu + \"_\" + res"},{"line_number":117,"context_line":"            heat_dict[\"resources\"][res_name] \u003d {"},{"line_number":118,"context_line":"                \"type\": HEAT_RESOURCE_MAP[res],"},{"line_number":119,"context_line":"                \"properties\": {}"}],"source_content_type":"text/x-python","patch_set":20,"id":"da0c15f0_58fee638","line":116,"range":{"start_line":116,"start_character":12,"end_line":116,"end_character":38},"in_reply_to":"da0c15f0_380df290","updated":"2016-03-28 02:18:56.000000000","message":"makes sense!","commit_id":"4cb64532db60390f4582a264962348176fec5c26"},{"author":{"_account_id":12455,"name":"bharaththiruveedula","email":"bharath_ves@hotmail.com","username":"bharaththiruveedula"},"change_message_id":"267f9abda7db7f13149b871ffb17fd65587316a8","unresolved":false,"context_lines":[{"line_number":113,"context_line":"def add_resources_tpl(heat_dict, hot_res_tpl):"},{"line_number":114,"context_line":"    for res, res_dict in hot_res_tpl.iteritems():"},{"line_number":115,"context_line":"        for vdu, vdu_dict in res_dict.iteritems():"},{"line_number":116,"context_line":"            res_name \u003d vdu + \"_\" + res"},{"line_number":117,"context_line":"            heat_dict[\"resources\"][res_name] \u003d {"},{"line_number":118,"context_line":"                \"type\": HEAT_RESOURCE_MAP[res],"},{"line_number":119,"context_line":"                \"properties\": {}"}],"source_content_type":"text/x-python","patch_set":20,"id":"da0c15f0_380df290","line":116,"range":{"start_line":116,"start_character":12,"end_line":116,"end_character":38},"in_reply_to":"da0c15f0_e9ebaf76","updated":"2016-03-28 01:46:29.000000000","message":"No, we are just mentioning the resource name as \"VDU1_flavor\". But heat will take care of uniqueness of the flavor name.","commit_id":"4cb64532db60390f4582a264962348176fec5c26"}]}
