Bug 1360839

Summary: [RFE] Engine should support networks that have ipv6autoconf and DHCPv6 in parallel.
Product: [oVirt] ovirt-engine Reporter: Edward Haas <edwardh>
Component: BLL.NetworkAssignee: eraviv
Status: CLOSED CURRENTRELEASE QA Contact: Michael Burman <mburman>
Severity: low Docs Contact:
Priority: low    
Version: 4.0.0CC: apinnick, bugs, danken, eraviv, mburman, myakove, ylavi
Target Milestone: ovirt-4.2.6Keywords: FutureFeature, Improvement
Target Release: ---Flags: rule-engine: ovirt-4.2?
ylavi: ovirt-4.3?
mburman: testing_plan_complete-
rule-engine: planning_ack?
rule-engine: devel_ack+
rule-engine: testing_ack+
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Enhancement
Doc Text:
In the past, it was only possible to attach a network to a host with an ipv6 address using either autoconf or dhcpv6. The two were mutually exclusive. In the current release, it is possible to enable both modes simultaneously using the Administration Portal or the REST API.
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-09-03 15:10:19 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: Network RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1080725, 1403675    

Description Edward Haas 2016-07-27 15:28:02 UTC
Description of problem:

Actual results:
DHCPv6 and ipv6autoconf are currently under a radio button and both cannot be chosen.
A network may require both to be enabled, for example in cases where autoconf(RA) handles IP configuration and DHCP serves DNS entries.

Expected results:
User should be able to choose both options and have control of both independently.

Additional info:

Comment 1 Red Hat Bugzilla Rules Engine 2017-01-09 11:14:45 UTC
This request has been proposed for two releases. This is invalid flag usage. The ovirt-future release flag has been cleared. If you wish to change the release flag, you must clear one release flag and then set the other release flag to ?.

Comment 2 Edward Haas 2018-07-25 03:54:01 UTC
@eraviv, could you please clarify why BZ/s 1597113 and 1595130 are blocking this issue?
They are perhaps limiting the usage of this option in two cases, but declaring them as blocking this feature is not clear to me.
Based on this relation, this BZ cannot be verified (as per my understanding).

Comment 3 eraviv 2018-07-25 04:42:58 UTC
The bug topic is 'engine should support'. So its down to the definition of 'support'.

1597113 prevents the creation of a storage domain on the host.
1595130 causes loss of connectivity of engine to host.

To my understanding these are basic functionalities without which, declaring engine as supporting this feature would be misleading from the perspective of a user. 
Likewise I think QE would not be able to verify the fix per the current definition of the bug.

Meni - whatever would make you happy to declare this as verified

Comment 4 Michael Burman 2018-07-25 13:51:06 UTC
(In reply to eraviv from comment #3)
> The bug topic is 'engine should support'. So its down to the definition of
> 'support'.
> 
> 1597113 prevents the creation of a storage domain on the host.
> 1595130 causes loss of connectivity of engine to host.
> 
> To my understanding these are basic functionalities without which, declaring
> engine as supporting this feature would be misleading from the perspective
> of a user. 
> Likewise I think QE would not be able to verify the fix per the current
> definition of the bug.
> 
> Meni - whatever would make you happy to declare this as verified

Eitan,
This RFE doesn't related to add host on top of IPv6 dhcp.
We also don't have any support for DHCP + autoconf in the lab.
We also don't have a support for dhcpv6 in the lab for our hosts. 
What was agreed with Dan, it to verify that i can attach networks to host with the new property DHCP + autoconf and make sure it is passed to vdsm correctly.
Please remove the blockers.

Comment 5 Michael Burman 2018-07-25 13:58:25 UTC
I see only "ipv6autoconf": true,
but             "dhcpv6": false, 
In UI i see both set, but on vdsm side only ipv6autoconf is true, dhcpv6 remain as false. 

- This is what engine is passed - 
ipv6BootProtocol='POLY_DHCP_AUTOCONF', ipv6Address='null', ipv6Prefix='null', ipv6Gateway='null'

Moving back to assigned, tested on - 4.2.6_SNAPSHOT-84.gad3de30.0.scratch.master.el7ev with vdsm-4.20.35-1.el7ev.x86_64

Comment 6 Michael Burman 2018-07-25 14:04:32 UTC
The ifcfg-file looks ok

[root@zeus-vds1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-net-2
# Generated by VDSM version 4.20.35-1.el7ev
DEVICE=net-2
TYPE=Bridge
DELAY=0
STP=off
ONBOOT=yes
MTU=1500
DEFROUTE=no
NM_CONTROLLED=no
IPV6INIT=yes
DHCPV6C=yes
IPV6_AUTOCONF=yes

Comment 7 eraviv 2018-07-26 06:56:19 UTC
Burman,

in comment#5 you wrote: 

1. "I see only "ipv6autoconf": true,
but             "dhcpv6": false, 
In UI i see both set, but on vdsm side only ipv6autoconf is true, dhcpv6 remain as false."

- where do you see this? in getCaps vdsm reports both dhcpv6 and autoconf as true and in supervdsm.log the same.



2. "- This is what engine is passed - 
ipv6BootProtocol='POLY_DHCP_AUTOCONF', ipv6Address='null', ipv6Prefix='null', ipv6Gateway='null'"

- this is what engine passes in setup networks to vdsm based on user selection. User is asking for a 'poly' ipv6bootproto, so of course there are no addr\prefix\gateway values because they are not set by the user under this option.

Comment 8 Michael Burman 2018-07-26 07:58:31 UTC
(In reply to eraviv from comment #7)
> Burman,
> 
> in comment#5 you wrote: 
> 
> 1. "I see only "ipv6autoconf": true,
> but             "dhcpv6": false, 
> In UI i see both set, but on vdsm side only ipv6autoconf is true, dhcpv6
> remain as false."
> 
> - where do you see this? in getCaps vdsm reports both dhcpv6 and autoconf as
> true and in supervdsm.log the same.
> 
> 
> 
> 2. "- This is what engine is passed - 
> ipv6BootProtocol='POLY_DHCP_AUTOCONF', ipv6Address='null',
> ipv6Prefix='null', ipv6Gateway='null'"
> 
> - this is what engine passes in setup networks to vdsm based on user
> selection. User is asking for a 'poly' ipv6bootproto, so of course there are
> no addr\prefix\gateway values because they are not set by the user under
> this option.

Eitan, 
I see this in vdsm-client Host getCapabilities - 
"ipv6autoconf": true
"dhcpv6": false,
Bot should be true and they not.

Comment 9 Michael Burman 2018-07-26 14:09:25 UTC
Talked with Dan and we need to fail this bug.

Engine do send it correctly to vdsm, in my case i don't have support for dhcpv6, so when vdsm does ifup on the network, it failing to get dhcpv6 and remain as dhcpv6=false.
So this flow is fine and will be finally done when the out-of-sync BZ 1607118 will be fixed(my network should have been out-of-sync in this case).
Engine say one thing and vdsm say something else.

But, the bug should be reassigned, because when engine collecting the data from vdsm it report it wrong.
We have modified vdsm to lie and say he has dhcpv6 and autoconf both true, but when doing refresh caps in the engine, it say only autoconf is enabled, but dhcpv6 isn't and that is problem when user will try to add host over IPv6 with both dhcpv6 and autoconf enabled.

do on the host - 
 }, 
        "net-2": {
            "ipv6autoconf": true, 
"dhcpv6": true,

after refresh caps in the engine 

 networkName='net-2', vdsmName='net-2', nicName='enp4s0', vlan='168', vmNetwork='true', stp='false', properties='[]', ipv4BootProtocol='NONE', ipv4Address='nul
l', ipv4Netmask='null', ipv4Gateway='null', ipv6BootProtocol='AUTOCONF', ipv6Address='null', ipv6Prefix='null', ipv6Gateway='null', nameServers='null'}]', removedNetworks=
'[]', bonds='[]', removedBonds='[]', clusterSwitchType='LEGACY'})

Comment 10 eraviv 2018-08-02 03:50:39 UTC
Following investigation, I found that if a change is made on the host such that both autoconf and dhcpv6 are enabled on a network (bridge) and vdsm reports this state to engine, engine supports this 'poly' state and reflects it as the actual state on the host as expected.

This reflection may appear for example as an out-of-sync indication if the user has configured ipv6 differently for the logical network. 
This reflection does not appear in the engine.log following a refresh-capabilities operation, because refresh-capabilities does not log the details reported by vdsm to engine.log

Comment 11 Michael Burman 2018-08-02 06:31:21 UTC
Ok, so BZ 1607118 will handle the out-pf-sync scenario.

Comment 12 Michael Burman 2018-08-02 06:37:40 UTC
Verified on - 4.2.6_SNAPSHOT-84.gad3de30.0.scratch.master.el7ev

u'net-2': {u'iface': u'net-2', u'ipv6autoconf': True, u'addr': u'', u'dhcpv6': True,

networks='[HostNetwork:{defaultRoute='false', bonding='false', networkName='net-2', vdsmName='net-2', nicName='enp4s0', vlan='168', vmNetwork='true', stp='false', properties='[]', ipv4BootProtocol='NONE', ipv4Address='null', ipv4Netmask='null', ipv4Gateway='null', ipv6BootProtocol='POLY_DHCP_AUTOCONF'

cat /etc/sysconfig/network-scripts/ifcfg-net-2
# Generated by VDSM version 4.20.35-1.el7ev
DEVICE=net-2
TYPE=Bridge
DELAY=0
STP=off
ONBOOT=yes
MTU=9000
DEFROUTE=no
NM_CONTROLLED=no
IPV6INIT=yes
DHCPV6C=yes
IPV6_AUTOCONF=yes