On 13/09/15 23:56, Sergey Kraynev wrote:
Hi folks,

Currently during implementation rich-network bp [1] (spec - [2]) we met with issue on Tripleo
 [3]. As temporary solution patch [4] was reverted.

According traceback mentioned in bug description current issue related with mac
 addresses which should be used for specific hypervisor [5] [6].
Previously in Tripleo, when we created vm without 'port-id' in networks parameters, it was handled by Nova [7], so new port got mac address from list of allowed addresses.

According rich-network BP, we want to use pre-created port (which we create in Heat code directly) during booting VM. Unfortunately in this case validation mentioned above fails due
 to different mac_addresses (for port and for hypervisor).

We discussed it with Derek, and it looks like for Tripleo it's overhead work to get such mac addresses and pass it in Heat template. Also I personally think, that it's not user side issue, i.e. we should solve it inside Heat code ourselves. So we probably need to ask Nova Ironic driver (because we can not ask ironic directly from Heat) for this information - about list
of allowed mac-addresses and then use it during creating port.

I have investigated Novaclient code, but did not met any ability to do it, except make to_dict() for Hypervisor object, but I am not sure, that it will be presented in this output.

So I'd ask Nova guys about some suggestions.
Also any thoughts are welcome.


[1] https://blueprints.launchpad.net/heat/+spec/rich-network-prop
[2] https://review.openstack.org/#/c/130093
[3] https://bugs.launchpad.net/tripleo/+bug/1494747
[4] https://review.openstack.org/#/c/217753/
[5] https://github.com/openstack/nova/blob/309301381039b162588e5f2d348b5b666c96bd3a/nova/network/neutronv2/api.py#L477-L488 [6] https://github.com/openstack/nova/blob/master/nova/virt/ironic/driver.py#L662-L678 [7] https://github.com/openstack/nova/blob/309301381039b162588e5f2d348b5b666c96bd3a/nova/network/neutronv2/api.py#L278

We may need to reconsider always pre-creating the port, given the above scenario plus comments like this[8].

One option would be to only pre-create if the template specifies explicit subnet or port_extra_properties, and otherwise let nova create the port on the specified network,

This would have implications for handling replace and rollback[9]. Either the server resource also needs to build resource data corresponding to the external_ports as well as the internal_ports, or the prepare_ports_for_replace needs to discover external ports too with a nova server get.

[8] http://lists.openstack.org/pipermail/openstack-dev/2015-July/070648.html
[9] https://review.openstack.org/#/c/221032

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: [email protected]?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to