)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11878,"name":"Rushil Chugh","email":"rushil.chugh@gmail.com","username":"rushil"},"change_message_id":"ae451b2e0b21877c5d8bad425be87a7fec99a65a","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Validation to check the OneView connections properties"},{"line_number":10,"context_line":"set in the Ironic Port local_link_connection field and in"},{"line_number":11,"context_line":"pxe_enabled if the user its using OneView ML2 Driver."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ibbb099431a9f830279a77dacfc882d866305dff1"},{"line_number":14,"context_line":"Depends-On: I6c47f6b09d22b530da8eeac189ff54f603850723"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"fa31d9ce_8dd1a125","line":11,"range":{"start_line":11,"start_character":24,"end_line":11,"end_character":27},"updated":"2017-02-15 17:41:33.000000000","message":"is","commit_id":"1c75fc54aeb48eabb66092b3c987b41f1a8c97df"}],"ironic/drivers/modules/oneview/common.py":[{"author":{"_account_id":23375,"name":"Stenio Araujo","email":"stenioaraujo@lsd.ufcg.edu.br","username":"stenioaraujo"},"change_message_id":"b6dc6fc09d1b147cea516842c5091ac7b51f5332","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    return oneview_info"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"def validate_oneview_resources_compatibility(task):"},{"line_number":151,"context_line":"    \"\"\"Validates if the node configuration is consistent with OneView."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    This method calls python-oneviewclient functions to validate if the node"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a98d1f4_ec72b7ac","line":150,"range":{"start_line":150,"start_character":4,"end_line":150,"end_character":44},"updated":"2016-09-29 21:26:19.000000000","message":"Since you changed this function, the tests to those functions need to be updated.\nThe tests within oneview/test_common:\n- test_validate_oneview_resources_compatibility_dynamic_allocation\n- test_validate_oneview_resources_compatibility\n\noneview_client.validate_connections is not being tested in there.","commit_id":"fd6b86e73b11885be22541d66e76cb479369d029"},{"author":{"_account_id":23375,"name":"Stenio Araujo","email":"stenioaraujo@lsd.ufcg.edu.br","username":"stenioaraujo"},"change_message_id":"b6dc6fc09d1b147cea516842c5091ac7b51f5332","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            if node.network_interface.lower() \u003d\u003d \u0027neutron\u0027:"},{"line_number":184,"context_line":"                oneview_client.validate_connections(oneview_info, node_ports)"},{"line_number":185,"context_line":"            else:"},{"line_number":186,"context_line":"                oneview_client.is_node_port_mac_compatible_with_server_hardware("},{"line_number":187,"context_line":"                    oneview_info, node_ports"},{"line_number":188,"context_line":"                )"},{"line_number":189,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a98d1f4_ac8c2f36","line":186,"range":{"start_line":186,"start_character":16,"end_line":186,"end_character":80},"updated":"2016-09-29 21:26:19.000000000","message":"nit: It has 80 characters.","commit_id":"fd6b86e73b11885be22541d66e76cb479369d029"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"8da39e4120e75733ed6c680c26b92119a0d02f90","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        # in the Pike Release."},{"line_number":189,"context_line":"        if is_dynamic_allocation_enabled(task.node):"},{"line_number":190,"context_line":"            ov_client.validate_server_profile_template_mac_type(spt_uuid)"},{"line_number":191,"context_line":"            if node.network_interface.lower() \u003d\u003d \u0027neutron\u0027:"},{"line_number":192,"context_line":"                ov_client.validate_connections(oneview_info, node_ports)"},{"line_number":193,"context_line":"            else:"},{"line_number":194,"context_line":"                ov_client.is_node_port_mac_compatible_with_server_hardware("}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5201f7_784b1c2c","line":191,"updated":"2016-12-30 12:49:06.000000000","message":"local_link_connection was originally added to keep connection information needed for Neutron ML2. Is it going to be used somehow by oneview directly?","commit_id":"39c34ff104bb9771cd92a4fc7067ad581a409140"},{"author":{"_account_id":14675,"name":"Hugo Nicodemos","email":"hugo.brito@windriver.com","username":"nicodemos"},"change_message_id":"05ed129289fd803152a501a2d919d6b52fcd47a0","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        # in the Pike Release."},{"line_number":189,"context_line":"        if is_dynamic_allocation_enabled(task.node):"},{"line_number":190,"context_line":"            ov_client.validate_server_profile_template_mac_type(spt_uuid)"},{"line_number":191,"context_line":"            if node.network_interface.lower() \u003d\u003d \u0027neutron\u0027:"},{"line_number":192,"context_line":"                ov_client.validate_connections(oneview_info, node_ports)"},{"line_number":193,"context_line":"            else:"},{"line_number":194,"context_line":"                ov_client.is_node_port_mac_compatible_with_server_hardware("}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_047caeea","line":191,"in_reply_to":"ba5201f7_784b1c2c","updated":"2017-02-15 16:39:32.000000000","message":"Yes, if the user its using the OneView ML2 Driver it will add some information in the local_link_connection that needs to be validate now.","commit_id":"39c34ff104bb9771cd92a4fc7067ad581a409140"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"362f6291eb590a9ea5f9becf7ebc6d9ca476fd89","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        # in the Pike Release."},{"line_number":189,"context_line":"        if is_dynamic_allocation_enabled(task.node):"},{"line_number":190,"context_line":"            ov_client.validate_server_profile_template_mac_type(spt_uuid)"},{"line_number":191,"context_line":"            if node.network_interface.lower() \u003d\u003d \u0027neutron\u0027:"},{"line_number":192,"context_line":"                ov_client.validate_connections(oneview_info, node_ports)"},{"line_number":193,"context_line":"            else:"},{"line_number":194,"context_line":"                ov_client.is_node_port_mac_compatible_with_server_hardware("}],"source_content_type":"text/x-python","patch_set":5,"id":"1a430d35_d9083d30","line":191,"in_reply_to":"ba5201f7_784b1c2c","updated":"2017-02-06 19:34:55.000000000","message":"ports with missed local_link_connection will not be taken for deploy https://review.openstack.org/#/c/415881","commit_id":"39c34ff104bb9771cd92a4fc7067ad581a409140"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"7acd277f2c4ced185c8367e45d95d84d10f7adb9","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        # MAC when using dynamic_allocation. This will be the default behavior"},{"line_number":185,"context_line":"        # in the Pike Release."},{"line_number":186,"context_line":"        if is_dynamic_allocation_enabled(task.node):"},{"line_number":187,"context_line":"            oneview_client.validate_connections("},{"line_number":188,"context_line":"                oneview_info, node_ports, network_interface)"},{"line_number":189,"context_line":"        else:"},{"line_number":190,"context_line":"            oneview_client.check_server_profile_is_applied(oneview_info)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da36d5c6_76892226","line":187,"updated":"2017-02-22 03:07:27.000000000","message":"I\u0027m not sure why do you need this - the ports without llc will not be used in deploy as Vasyl already pointed out. With this, you\u0027ll be failing any action that calls this method if any of the ports is missing the llc. Why do you care if at least one of them actually has the llc and action can proceed?\n\nApart from that, this method is called eg in power interface validate method, so you won\u0027t be even able to do power action if any of the ports is missing the llc??","commit_id":"4d0a2054d3ec16abfaf0e6e5eba00fb55ae5d0f1"},{"author":{"_account_id":14675,"name":"Hugo Nicodemos","email":"hugo.brito@windriver.com","username":"nicodemos"},"change_message_id":"948d9f565dd2f9fd3b19ff1b644eb888a313ff20","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        # MAC when using dynamic_allocation. This will be the default behavior"},{"line_number":185,"context_line":"        # in the Pike Release."},{"line_number":186,"context_line":"        if is_dynamic_allocation_enabled(task.node):"},{"line_number":187,"context_line":"            oneview_client.validate_connections("},{"line_number":188,"context_line":"                oneview_info, node_ports, network_interface)"},{"line_number":189,"context_line":"        else:"},{"line_number":190,"context_line":"            oneview_client.check_server_profile_is_applied(oneview_info)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a30ddce_74383aa1","line":187,"in_reply_to":"ba2be162_a8347bfb","updated":"2017-03-08 18:10:10.000000000","message":"So, I changed the validate_connections to validate only the nodes with \u0027use_oneview_ml2_driver\u0027 and fails if there\u0027s no port with local_link_connection.","commit_id":"4d0a2054d3ec16abfaf0e6e5eba00fb55ae5d0f1"},{"author":{"_account_id":21775,"name":"Ricardo Araújo Santos","email":"ricardo@lsd.ufcg.edu.br","username":"ricardoas"},"change_message_id":"c6945aad382bba9161482b0029f91385d744633f","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        # MAC when using dynamic_allocation. This will be the default behavior"},{"line_number":185,"context_line":"        # in the Pike Release."},{"line_number":186,"context_line":"        if is_dynamic_allocation_enabled(task.node):"},{"line_number":187,"context_line":"            oneview_client.validate_connections("},{"line_number":188,"context_line":"                oneview_info, node_ports, network_interface)"},{"line_number":189,"context_line":"        else:"},{"line_number":190,"context_line":"            oneview_client.check_server_profile_is_applied(oneview_info)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba2be162_a8347bfb","line":187,"in_reply_to":"da36d5c6_76892226","updated":"2017-03-06 16:27:25.000000000","message":"+1!\nIn my point of view, OneView ML2 driver should fail if it is enabled on this node and all ports are missing info stored at llc... if at least one of them is ok, the validation should succeed, right, Vdrok?\nThe case where all ports are missing llc and OneView ML2 is not enabled is being solved by Vasyl patch afaik.","commit_id":"4d0a2054d3ec16abfaf0e6e5eba00fb55ae5d0f1"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"7d937d3d0f265e5f75ea8c7f449b8513f4449702","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        # MAC when using dynamic_allocation. This will be the default behavior"},{"line_number":185,"context_line":"        # in the Pike Release."},{"line_number":186,"context_line":"        if is_dynamic_allocation_enabled(task.node):"},{"line_number":187,"context_line":"            oneview_client.validate_connections("},{"line_number":188,"context_line":"                oneview_info, node_ports, network_interface)"},{"line_number":189,"context_line":"        else:"},{"line_number":190,"context_line":"            oneview_client.check_server_profile_is_applied(oneview_info)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfeb2761_c9d54ee7","line":187,"updated":"2017-04-03 14:17:05.000000000","message":"I\u0027m still trying to make up my mind on this patch. As I wrote before, this method is used in all interfaces validation methods, even in power/management. So with this change, you won\u0027t be able to even power the node on. Could you do the validation of network info only in deploy interface?\n\nApart from that, I\u0027ve already told this, there was a patch that was skipping the ports not having the llc from attaching -- https://review.openstack.org/#/c/415881/8/ironic/common/neutron.py. It means that when you\u0027ll be creating provisioning/cleaning ports, those will be skipped, neutron won\u0027t be creating ports for them, which means that llc won\u0027t be used, as no binding will happen. Could you please describe the problem you\u0027re hitting? Of course, that\u0027s the case if you\u0027re using flat/neutron network interfaces, if you\u0027re using some custom network interface, this might be needed, but from what I see from oneview repo, it\u0027s not the case.","commit_id":"2f9f5355e5025caa8d5fc9e6663d2a052f42fb8a"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"d022486ec84c1f862b12a3b3611bdbe1ee12fe30","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        # MAC when using dynamic_allocation. This will be the default behavior"},{"line_number":185,"context_line":"        # in the Pike Release."},{"line_number":186,"context_line":"        if is_dynamic_allocation_enabled(task.node):"},{"line_number":187,"context_line":"            oneview_client.validate_connections("},{"line_number":188,"context_line":"                oneview_info, node_ports, network_interface)"},{"line_number":189,"context_line":"        else:"},{"line_number":190,"context_line":"            oneview_client.check_server_profile_is_applied(oneview_info)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfeb2761_de6a9db1","line":187,"in_reply_to":"dfeb2761_185b7df7","updated":"2017-04-03 16:58:31.000000000","message":"OK, so therer are some of problems with that, apart from the fact that it needs to be done only in deploy interface.\n\n1. switch_info is a string, as described in the original spec for ironic-neutron integration -- https://github.com/openstack/ironic-specs/blob/master/specs/approved/ironic-ml2-integration.rst#proposed-change, see switch_id, port_id and switch_info descriptions.\n2. it is optional.\n\nThis change basically violates both of them, and I\u0027m not sure how to proceed with this, maybe this need to be brought up in the meeting. Introducing an option to say \"I want this particular ml2 driver and I know its requirements\" mitigates it to some extent.","commit_id":"2f9f5355e5025caa8d5fc9e6663d2a052f42fb8a"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"edf4a1779806fc16deaf2d0b318775fd063d8599","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        # MAC when using dynamic_allocation. This will be the default behavior"},{"line_number":185,"context_line":"        # in the Pike Release."},{"line_number":186,"context_line":"        if is_dynamic_allocation_enabled(task.node):"},{"line_number":187,"context_line":"            oneview_client.validate_connections("},{"line_number":188,"context_line":"                oneview_info, node_ports, network_interface)"},{"line_number":189,"context_line":"        else:"},{"line_number":190,"context_line":"            oneview_client.check_server_profile_is_applied(oneview_info)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfeb2761_ce1079ab","line":187,"in_reply_to":"dfeb2761_4a3243a9","updated":"2017-04-04 21:07:24.000000000","message":"Maybe to avoid the need to add this thing into driver_info, the thin wrapper network interface can be added, that will be only overriding the neutron\u0027s validate method and doing the additional checks of the switch_info? Apart from that, your proposal seems feasible to me.","commit_id":"2f9f5355e5025caa8d5fc9e6663d2a052f42fb8a"},{"author":{"_account_id":21775,"name":"Ricardo Araújo Santos","email":"ricardo@lsd.ufcg.edu.br","username":"ricardoas"},"change_message_id":"c178ef83873b59933742b5253e7fc24425756af0","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        # MAC when using dynamic_allocation. This will be the default behavior"},{"line_number":185,"context_line":"        # in the Pike Release."},{"line_number":186,"context_line":"        if is_dynamic_allocation_enabled(task.node):"},{"line_number":187,"context_line":"            oneview_client.validate_connections("},{"line_number":188,"context_line":"                oneview_info, node_ports, network_interface)"},{"line_number":189,"context_line":"        else:"},{"line_number":190,"context_line":"            oneview_client.check_server_profile_is_applied(oneview_info)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfeb2761_185b7df7","line":187,"in_reply_to":"dfeb2761_c9d54ee7","updated":"2017-04-03 16:22:06.000000000","message":"Hi Vdrok! \n\nWe currently store special OneView info at llc\u0027s switch_info field, that\u0027ll be used when binding ports. So, our main concern here is to garantee that a deployment will be successful when a node is: i) using neutro network interface; ii) networking-oneview ml2 plugin is enabled - https://github.com/HewlettPackard/ironic-driver-oneview/tree/master/networking-oneview ; and iii) there is a port with llc\u0027s info matching an existing resource at OneView. \n\nThis way, the deploy iface validation implemented right now will fail if the first and second conditions are met but the third is not, meaning that even if you insist on deploying, port binding will fail because OneView ml2 driver need more info.\n\nI quite agree that such validation can be performed only in the deployment interface and leave the other interfaces validating the way they are...\n\nDid I capture your concerns?\n\nPS: Am I missing something, Hugo?","commit_id":"2f9f5355e5025caa8d5fc9e6663d2a052f42fb8a"},{"author":{"_account_id":21775,"name":"Ricardo Araújo Santos","email":"ricardo@lsd.ufcg.edu.br","username":"ricardoas"},"change_message_id":"c36c626ed40dd4e25ae475ccc04dfa9f33a4fc79","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        # MAC when using dynamic_allocation. This will be the default behavior"},{"line_number":185,"context_line":"        # in the Pike Release."},{"line_number":186,"context_line":"        if is_dynamic_allocation_enabled(task.node):"},{"line_number":187,"context_line":"            oneview_client.validate_connections("},{"line_number":188,"context_line":"                oneview_info, node_ports, network_interface)"},{"line_number":189,"context_line":"        else:"},{"line_number":190,"context_line":"            oneview_client.check_server_profile_is_applied(oneview_info)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bff0334d_1dd24bd3","line":187,"in_reply_to":"dfeb2761_ce1079ab","updated":"2017-04-07 12:33:46.000000000","message":"I think this would not be enough to remove the driver_info thing, it seems like it will enforce that *_pxe_oneview drivers only work with the networking-oneview ml2, which is not true. There is a scenario where the operator uses switches from another vendor (not managed by OneView) with another ml2 driver. For this case, we still need the check in the thin wrapper if networking-oneview is the ml2 driver being used for such node and trigger the right validation. wdyt?","commit_id":"2f9f5355e5025caa8d5fc9e6663d2a052f42fb8a"},{"author":{"_account_id":21775,"name":"Ricardo Araújo Santos","email":"ricardo@lsd.ufcg.edu.br","username":"ricardoas"},"change_message_id":"48b202a25be61b19e35395a55680fd91c30707e5","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        # MAC when using dynamic_allocation. This will be the default behavior"},{"line_number":185,"context_line":"        # in the Pike Release."},{"line_number":186,"context_line":"        if is_dynamic_allocation_enabled(task.node):"},{"line_number":187,"context_line":"            oneview_client.validate_connections("},{"line_number":188,"context_line":"                oneview_info, node_ports, network_interface)"},{"line_number":189,"context_line":"        else:"},{"line_number":190,"context_line":"            oneview_client.check_server_profile_is_applied(oneview_info)"}],"source_content_type":"text/x-python","patch_set":9,"id":"dfeb2761_4a3243a9","line":187,"in_reply_to":"dfeb2761_de6a9db1","updated":"2017-04-03 18:37:09.000000000","message":"Great...\n\nin this spec json example, there is a \"\u003coptional more information\u003e\" inside llc which would be great if it meant to insert a \u0027networking_oneview_info\u0027 with the information we need and leave switch_info alone. I\u0027m not aware of how this decision was made last year but I can try reaching some people to get a better idea :)\n\nwrt 2, i agree it is optional, but we are not making it mandatory to every node, just the ones using networking_oneview as ml2 plugin. I completely understand your concerns, I quite agree that this design is not the best option. What we\u0027re doing regarding oneview is that if the user, during node creation, added \"use_oneview_ml2_driver\u003dTrue\" to \"driver_info\", she is giving  a sign to networking-oneview that it should handle neutron operations. Then, in the validation proposed in this patch, if this flag in True we check switch_info content.\n\nPlease let me know if we crossed a line and this info should not be stored at driver_info... :/","commit_id":"2f9f5355e5025caa8d5fc9e6663d2a052f42fb8a"}]}
