
Neutron support for ipv6 is not complete yet (ex. LBaaS only supports ipv4). We'had some gate issues after dual stack was enabled in devstack. We had put some tactical fixes to resolve those[1][2]. This fix adds usage of heat-net/heat-subnet(only ipv4) for integration tests. This also rolls back the earlier tactical changes. https://review.openstack.org/#/c/178576 https://review.openstack.org/#/c/178933/ Change-Id: Ia863edb8932b8dea5c4fa110c97dcfdadca85bb9
134 lines
3.3 KiB
YAML
134 lines
3.3 KiB
YAML
heat_template_version: 2014-10-16
|
|
|
|
description: |
|
|
Template which tests neutron load balancing resources
|
|
|
|
parameters:
|
|
key_name:
|
|
type: string
|
|
flavor:
|
|
type: string
|
|
image:
|
|
type: string
|
|
network:
|
|
type: string
|
|
private_subnet_id:
|
|
type: string
|
|
external_network_id:
|
|
type: string
|
|
port:
|
|
type: string
|
|
default: '80'
|
|
timeout:
|
|
type: number
|
|
|
|
resources:
|
|
sec_group:
|
|
type: OS::Neutron::SecurityGroup
|
|
properties:
|
|
description: Add security group rules for servers
|
|
name: security-group
|
|
rules:
|
|
- remote_ip_prefix: 0.0.0.0/0
|
|
protocol: tcp
|
|
port_range_min: { get_param: port }
|
|
port_range_max: { get_param: port }
|
|
- remote_ip_prefix: 0.0.0.0/0
|
|
protocol: icmp
|
|
|
|
wait_condition:
|
|
type: OS::Heat::WaitCondition
|
|
properties:
|
|
handle: { get_resource: wait_condition_handle }
|
|
count: 2
|
|
timeout: { get_param: timeout }
|
|
|
|
wait_condition_handle:
|
|
type: OS::Heat::WaitConditionHandle
|
|
|
|
config:
|
|
type: OS::Heat::SoftwareConfig
|
|
properties:
|
|
group: ungrouped
|
|
config:
|
|
str_replace:
|
|
template: |
|
|
#!/bin/bash -v
|
|
echo $(hostname) > index.html
|
|
python -m SimpleHTTPServer port &
|
|
wc_notify --data-binary '{"status": "SUCCESS"}'
|
|
params:
|
|
wc_notify: { get_attr: ['wait_condition_handle', 'curl_cli'] }
|
|
port: { get_param: port }
|
|
|
|
server1:
|
|
type: OS::Nova::Server
|
|
properties:
|
|
name: Server1
|
|
image: { get_param: image }
|
|
flavor: { get_param: flavor }
|
|
key_name: { get_param: key_name }
|
|
networks: [{network: {get_param: network} }]
|
|
security_groups: [{ get_resource: sec_group }]
|
|
user_data_format: SOFTWARE_CONFIG
|
|
user_data: { get_resource: config }
|
|
|
|
server2:
|
|
type: OS::Nova::Server
|
|
properties:
|
|
name: Server2
|
|
image: { get_param: image }
|
|
flavor: { get_param: flavor }
|
|
key_name: { get_param: key_name }
|
|
networks: [{network: {get_param: network} }]
|
|
security_groups: [{ get_resource: sec_group }]
|
|
user_data_format: SOFTWARE_CONFIG
|
|
user_data: { get_resource: config }
|
|
|
|
health_monitor:
|
|
type: OS::Neutron::HealthMonitor
|
|
properties:
|
|
delay: 3
|
|
type: HTTP
|
|
timeout: 3
|
|
max_retries: 3
|
|
|
|
test_pool:
|
|
type: OS::Neutron::Pool
|
|
properties:
|
|
lb_method: ROUND_ROBIN
|
|
protocol: HTTP
|
|
subnet: { get_param: private_subnet_id }
|
|
monitors:
|
|
- { get_resource: health_monitor }
|
|
vip:
|
|
protocol_port: { get_param: port }
|
|
|
|
floating_ip:
|
|
type: OS::Neutron::FloatingIP
|
|
properties:
|
|
floating_network: { get_param: external_network_id }
|
|
port_id:
|
|
{ get_attr: [test_pool, vip, 'port_id'] }
|
|
fixed_ip_address:
|
|
{ get_attr: [test_pool, vip, 'address'] }
|
|
|
|
LBaaS:
|
|
type: OS::Neutron::LoadBalancer
|
|
depends_on: wait_condition
|
|
properties:
|
|
pool_id: { get_resource: test_pool }
|
|
protocol_port: { get_param: port }
|
|
members:
|
|
- { get_resource: server1 }
|
|
|
|
outputs:
|
|
serv1_ip:
|
|
value: {get_attr: [server1, networks, { get_param: network }, 0]}
|
|
serv2_ip:
|
|
value: {get_attr: [server2, networks, { get_param: network }, 0]}
|
|
vip:
|
|
value: {get_attr: [test_pool, vip, address]}
|
|
fip:
|
|
value: {get_attr: [floating_ip, floating_ip_address]}
|