[RFE] Extend attributes of Server and Port resource to client interface configuration data
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Heat |
New
|
Undecided
|
Unassigned |
Bug Description
We had a discussion[1] on the list.
In the scenario where the network, subnet and/or port is not a heat resource. Nova and Neutron are making implicit resources with attributes that are not available to the user. For example, when creating a server specifying a network. Nova creates an implicit port. We can get the ip address from each network via attributes on the server resource in heat. But to configure a client interface we need more data, such as:
* subnet mask
* gateway
* host_routes
* dns_servers
* mtu
These attributes are are available in neutron's subnet and network objects. Adding this data as attributes to OS::Nova::Server and OS::Neutron::Port resources would enable interface configuration using os-net-config, or some other mechanism. Replacing dynamic configuration from the DHCP service. (For example, the attributes could be written to config drive for some interface configuration tool in the image.)
As a user I would like to do somethin akin to:
{get_attr: [<server>, addresses, <network name_or_id>, 0, client_config]}
And get get a map with something akin to:
client_config:
ip_address: <ip-address>
subnet_cidr: <subnet_cidr>
host_routes: <host_routes>
dns_servers: <dns_servers>
mtu: <mtu>
< others >
We resolve these by querying neutrons api. The list below is what I think may be useful:
/v2.0/
/v2.0/
/v2.0/
/v2.0/
/v2.0/
/v2.0/
/v2.0/
/v2.0/
/v2.0/
/v2.0/
/v2.0/
/v2.0/
/v2.0/
/v2.0/
/v2.0/
[1] http://
summary: |
- [RFE] Extend attributes of Server and Port resorce to client interface + [RFE] Extend attributes of Server and Port resource to client interface configuration data |
Changed in heat: | |
milestone: | none → no-priority-tag-bugs |
So, I think Zane agreed to the idea of adding attributes, but not in this form. I don't think exposing a blob is a good thing. What we want (if we do?) is a structured element with namespace.
{get_attr: [<server>, addresses, <network name_or_id>, 0, port}
gives you the port.
So, I *think* we could do:
{get_attr: [<server>, addresses, <network name_or_id>, 0, port, fixed_ips}
I'm not a super fan of the idea. Maybe Zane can clarify.