Add "deployed server" fake neutron ports

This patch swaps out the noop ctlplane port for a more
proper fake neutron port stack. This stack is a swap
in for the OS::Neutron::Port heat resource and can be
controlled via the DeployedServerPortMap parameter.

By relying on <hostname>-<network> naming conventions in the
map we can map IPs to specific servers without using the
Neutron API. This will allow us to inject IP information
into the Heat stack within the new t-h-t undercloud installer
which currently does not run a Neutron service.

Change-Id: I29fbc720c3d582cbb94385e65e4b64b101f7eac9
This commit is contained in:
Dan Prince 2016-12-11 08:16:36 -05:00
parent 0097da7710
commit 9313e18f30
5 changed files with 78 additions and 29 deletions

View File

@ -1,23 +0,0 @@
heat_template_version: 2014-10-16
parameters:
Hostname:
type: string
resources:
ControlPlanePort:
type: OS::Neutron::Port
properties:
network: ctlplane
name:
list_join:
- '-'
- - {get_param: Hostname}
- ctlplane
- port
replacement_policy: AUTO
outputs:
ip_address:
value: {get_attr: [ControlPlanePort, fixed_ips, 0, ip_address]}

View File

@ -0,0 +1,67 @@
heat_template_version: 2016-10-14
description: "
A fake OS::Neutron::Port stack which outputs fixed_ips and subnets based on
the input from the DeployedServerPortMap (set via parameter_defaults). This
lookup requires the use of port naming conventions. In order for this to work
with deployed-server the keys should be <hostname>-<network>.
Example:
parameter_defaults:
DeployedServerPortMap:
gatsby_ctlplane:
fixed_ips:
- ip_address: 127.0.0.1
subnets:
- cidr: 24"
parameters:
name:
default: ''
type: string
network:
default: ''
type: string
fixed_ips:
default: ''
type: comma_delimited_list
replacement_policy:
default: ''
type: string
DeployedServerPortMap:
default: {}
type: json
outputs:
fixed_ips:
value:
{get_param: [DeployedServerPortMap, {get_param: name}, fixed_ips]}
subnets:
value:
{get_param: [DeployedServerPortMap, {get_param: name}, subnets]}
name:
value: {get_param: name}
status:
value: DOWN
allowed_address_pairs:
value: {}
device_id:
value: ''
device_owner:
value: {get_param: network}
dns_assignment:
value: ''
port_security_enabled:
value: False
admin_state_up:
value: False
security_groups:
value: {}
network_id:
value: ''
tenant_id:
value: ''
qos_policy_id:
value: ''
mac_address:
value: ''

View File

@ -80,10 +80,16 @@ resources:
config: {get_resource: HostsEntryConfig}
server: {get_resource: deployed-server}
ControlPlanePort:
ControlPlanePortImpl:
type: OS::TripleO::DeployedServer::ControlPlanePort
properties:
Hostname: {get_attr: [HostsEntryDeployment, hostname]}
network: ctlplane
name:
list_join:
- '-'
- - {get_attr: [HostsEntryDeployment, hostname]}
- ctlplane
replacement_policy: AUTO
outputs:
OS::stack_id:
@ -91,6 +97,6 @@ outputs:
networks:
value:
ctlplane:
- {get_attr: [ControlPlanePort, ip_address]}
- {get_attr: [ControlPlanePortImpl, fixed_ips, 0, ip_address]}
name:
value: {get_attr: [HostsEntryDeployment, hostname]}

View File

@ -1,3 +1,3 @@
resource_registry:
OS::TripleO::Server: ../deployed-server/deployed-server.yaml
OS::TripleO::DeployedServer::ControlPlanePort: ../deployed-server/ctlplane-port.yaml
OS::TripleO::DeployedServer::ControlPlanePort: OS::Neutron::Port

View File

@ -1,4 +1,3 @@
resource_registry:
OS::TripleO::Server: ../deployed-server/deployed-server.yaml
OS::TripleO::DeployedServerConfig: ../deployed-server/deployed-server-config.yaml
OS::TripleO::DeployedServer::ControlPlanePort: OS::Heat::None
OS::TripleO::DeployedServer::ControlPlanePort: ../deployed-server/deployed-neutron-port.yaml