Allowing port and floating IP association properties to be specified within a OS::Nova::Server works around issues with nova port management, provides users with a simpler way of implementing a common pattern, and allows more templates to be neutron/nova-networking agnostic.
There are a number of issues with OS::Neutron::Port which are currently difficult to work around, including:
OS::Nova::Server has a networks property which allows a list of maps, where the map key is one of fixed_ip, network, port or uuid which map directly to nova boot nic options.
The proposed change is that new keys will be added to this map to support fully describing ports within the networks items. The server resource will take responsibility for creating and managing the port rather than allowing nova to create the port implicitly.
The implementation will be in the Server resource and will have different paths based on self.is_using_neutron.
Validation will be performed so that an error is raised if a value is set that is not supported by nova-networking.
Server create in the neutron path will do the following:
Resource update in the neutron path will do the following:
Resource delete in the neutron path will delete any ports stored in the resource data.
Special handling will be required for the following case:
In this case the handle_delete of the old server and the handle_create of the new server will need to interact to allow the new port to be assigned the fixed_ip which is assigned to the old port. Assigning back to the old port may be required on rollback too.
This blueprint needs a primary author to adopt it. Steve Baker will provide implementation and review assistance if required.
Steps mentioned in section Proposed change describes the list of work items.
There are no blueprint or library dependencies for this blueprint.