Description of problem: Assigning IPv6 address by using PublicVirtualFixedIPs fails with: Stack failed with status: resources.PublicVirtualIP: BadRequest: resources.ExternalPort: Invalid input for operation: IPv6 address 2001:db8:fd00:1000:f816:3eff:fe80:75ea can not be directly assigned to a port on subnet fa3af936-b005-44c1-a9e7-9669d2d87a34 since the subnet is configured for automatic addresses. Version-Release number of selected component (if applicable): openstack-tripleo-heat-templates-0.8.6-110.el7ost.noarch os-net-config-0.1.4-7.el7ost.noarch os-cloud-config-0.2.8-13.el7ost.noarch How reproducible: 100% Steps to Reproduce: 1. Deploy IPv6 overcloud by providing PublicVirtualFixedIPs in network-environment: PublicVirtualFixedIPs: [{'ip_address':'2001:db8:fd00:1000:f816:3eff:fe80:75ea'}] Actual results: Deploying templates in the directory /home/stack/templates/my-overcloud Stack failed with status: resources.PublicVirtualIP: BadRequest: resources.ExternalPort: Invalid input for operation: IPv6 address 2001:db8:fd00:1000:f816:3eff:fe80:75ea can not be directly assigned to a port on subnet fa3af936-b005-44c1-a9e7-9669d2d87a34 since the subnet is configured for automatic addresses. Expected results: Deployment continues Additional info: stack@instack:~>>> neutron subnet-show fa3af936-b005-44c1-a9e7-9669d2d87a34 +-------------------+--------------------------------------------------------------------------------------+ | Field | Value | +-------------------+--------------------------------------------------------------------------------------+ | allocation_pools | {"start": "2001:db8:fd00:1000::10", "end": "2001:db8:fd00:1000:ffff:ffff:ffff:fffe"} | | cidr | 2001:db8:fd00:1000::/64 | | dns_nameservers | | | enable_dhcp | True | | gateway_ip | 2001:db8:fd00:1000::1 | | host_routes | | | id | fa3af936-b005-44c1-a9e7-9669d2d87a34 | | ip_version | 6 | | ipv6_address_mode | slaac | | ipv6_ra_mode | slaac | | name | external_subnet | | network_id | bf959c79-8a47-476c-9393-b803dd62592f | | subnetpool_id | | | tenant_id | 7e5eb436765b43aa8bb74607fade7e62 | +-------------------+--------------------------------------------------------------------------------------+
We may need to set the network type to dchpv6-stateful or dhcpv6-stateless in order to be able to assign a fixed_ip. This is currently being tested.
After adjusting in network/external_v6.yaml: ipv6_address_mode: dhcpv6-stateful ipv6_ra_mode: dhcpv6-stateful I was able to set the public vip in the network environment file like this: PublicVirtualFixedIPs: [{'ip_address':'2001:db8:fd00:1000:f816:3eff:fe80:75ea'}] I tested dhcpv6-stateful option for ipv6_address_mode and ipv6_ra_mode without specifying PublicVirtualFixedIP (automatic assignment) and it worked. In fact the first address from the ExternalAllocationPools was assigned for the public_virtual_ip.
openstack-tripleo-heat-templates-0.8.6-112.el7ost.noarch stack@instack:~>>> heat stack-show overcloud | grep PublicVirtualFixedIP | | "PublicVirtualFixedIPs": "[{\"ip_address\": \"2001:db8:fd00:1000::10\"}]", stack@instack:~>>> neutron port-list | grep public | e54f64a9-a960-4149-87f2-53fcb7b15d1f | public_virtual_ip | fa:16:3e:2e:54:12 | {"subnet_id": "ea09aba4-6c05-4e44-9fe7-44082b4210cd", "ip_address": "2001:db8:fd00:1000::10"} |
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2016-0264.html