Toggle Interface Status Upon Server Create

Registered by Shannon Ward

In the Nova API server create request, implement a method of disabling ethernet interfaces on new guests/instances. This will allow a new guest/instance to be created with the public or private interfaces (ex: eth0 or eth1) disabled and only allow communication on one or the other interface. This may be able to be accomplished in the <metadata> section of the server create request and would return a response noting the status of the interfaces.

Example Server Create Request:
...
<metadata>
   <meta key="My Server Name">Apache1</meta>
   <meta interface="public" status="disabled">
</metadata>
...

Example Server Create Response:
...
<addresses>
   <public status="disabled">
      <ip version="4" addr="67.23.10.132"/>
      <ip version="6" addr="::babe:67.23.10.132"/>
      <ip version="4" addr="67.23.10.131"/>
      <ip version="6" addr="::babe:4317:0A83"/>
    </public>
    <private status="enabled">
      <ip version="4" addr="10.176.42.16"/>
      <ip version="6" addr="::babe:10.176.42.16"/>
   </private>
</addresses>
...

Blueprint information

Status:
Complete
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
None
Definition:
Obsolete
Series goal:
None
Implementation:
Deferred
Milestone target:
None
Completed by
Vish Ishaya

Related branches

Sprints

Whiteboard

There has been a lot of discussion about whether or not 'metadata' should directly influence how a VM/instance/server is built. I'm of the opinion that configuration should be included directly and explicitly such as this example server create request:

...
<addresses>
   <public status="disabled" />
   <private status="enabled" />
</addresses>
...

This would allow for the future potential to indicate specific IPs for the server? Just a thought!

This could be added to the multinic extension, but without someone driving this code I don't know if it is going anywhere. Marking it deferred for now. If no one grab this one I will eventually obsolete it --Vish.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.