Hi - I'm trying to create a OS::Neutron::LoadBalancer on the first subnet of a network being supplied as a parameter. So I don't want to create the network - it's an input parameter - and I don't want/need the subnet as a parameter - any subnet defined on the network will do.

I cannot figure out how to get the subnet id of the network. In the code below I tried to create a port on the network and then extract the value of the subnet to use in creating the OS::Neutron::Pool but I end up with an extra port. I tried to use the port ip address for the VIP but OS::Neutron::Pool wants to create the vip port, and complains that the IP address is already in use.

My question is how do we create a resource from a parameter when we already have the resource id or name, so the attributes can be queried in subsequent resource definitions? Is there a way to do that in heat?

heat_template_version: 2015-10-15
description: Make a load balancer with a floating ip without a subnet

parameters:
  network:
    type: string
    description: Network used by the server

  external_network_id:
    type: string
    description: UUID of a Neutron external network

resources:
  make_port_on_the_net:
    type: OS::Neutron::Port
    properties:
      name : {list_join : [":", ["vip"  , {get_param: network}]] }
      network: {get_param: network }

  monitor:
    type: OS::Neutron::HealthMonitor
    properties:
      type: TCP
      delay: 5
      max_retries: 5
      timeout: 5

  pool:
    type: OS::Neutron::Pool
    properties:
      protocol: HTTP
      monitors: [{get_resource: monitor}]
      subnet: {get_attr: [make_port_on_the_net, fixed_ips, 0, subnet_id]}
      lb_method: ROUND_ROBIN
      vip:
        protocol_port: 80
address: {get_attr: [make_port_on_the_net, fixed_ips, 0, ip_address]}
  lb:
    type: OS::Neutron::LoadBalancer
    properties:
      protocol_port: 80
      pool_id: {get_resource: pool}

  # assign a floating ip address to the load balancer
  # pool.
  lb_floating:
    type: OS::Neutron::FloatingIP
    properties:
      floating_network_id: {get_param: external_network_id}
      port_id: {get_attr: [pool, vip, port_id]}

outputs:
  port_show:
    value: {get_attr: [make_port_on_the_net]}
    description: Dump all the port attributes

_______________________________________________
OpenStack-operators mailing list
[email protected]
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators

Reply via email to