Allocation pools for demo subnet
This is useful in some cases: when provider network is accessed via single network adapter, and CIDR range is much broader then required. Change-Id: Iddba498804d7a9639a08fef3e23f5af1d5c31d9f
This commit is contained in:
		@@ -955,6 +955,9 @@ Provisioning demo config
 | 
			
		||||
**CONFIG_PROVISION_DEMO_FLOATRANGE**
 | 
			
		||||
    CIDR network address for the floating IP subnet.
 | 
			
		||||
 | 
			
		||||
**CONFIG_PROVISION_DEMO_ALLOCATION_POOLS**
 | 
			
		||||
    Allocation pools in the floating IP subnet.
 | 
			
		||||
 | 
			
		||||
**CONFIG_PROVISION_IMAGE_URL**
 | 
			
		||||
    A URL or local file location for an image to download and provision in Glance (defaults to a URL for a recent "cirros" image).
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,7 @@
 | 
			
		||||
"""
 | 
			
		||||
Installs and configures Provisioning for demo usage and testing
 | 
			
		||||
"""
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
from packstack.installer import basedefs
 | 
			
		||||
from packstack.installer import utils
 | 
			
		||||
@@ -98,6 +99,19 @@ def initConfig(controller):
 | 
			
		||||
             "NEED_CONFIRM": False,
 | 
			
		||||
             "CONDITION": False},
 | 
			
		||||
 | 
			
		||||
            {"CMD_OPTION": "provision-demo-allocation-pools",
 | 
			
		||||
             "PROMPT": ("Enter the allocation pools from the floating IP "
 | 
			
		||||
                        "subnet, as JSON list [\"start=ip1,end=ip2\", ...]"),
 | 
			
		||||
             "OPTION_LIST": [],
 | 
			
		||||
             "VALIDATORS": [],
 | 
			
		||||
             "DEFAULT_VALUE": "[]",
 | 
			
		||||
             "MASK_INPUT": False,
 | 
			
		||||
             "LOOSE_VALIDATION": False,
 | 
			
		||||
             "CONF_NAME": "CONFIG_PROVISION_DEMO_ALLOCATION_POOLS",
 | 
			
		||||
             "USE_DEFAULT": False,
 | 
			
		||||
             "NEED_CONFIRM": False,
 | 
			
		||||
             "CONDITION": False},
 | 
			
		||||
 | 
			
		||||
            {"CMD_OPTION": "provision-image-name",
 | 
			
		||||
             "PROMPT": "Enter the name to be assigned to the demo image",
 | 
			
		||||
             "OPTION_LIST": False,
 | 
			
		||||
@@ -351,3 +365,9 @@ def initConfig(controller):
 | 
			
		||||
 | 
			
		||||
def initSequences(controller):
 | 
			
		||||
    config = controller.CONF
 | 
			
		||||
    # params modification
 | 
			
		||||
    key = 'CONFIG_PROVISION_DEMO_ALLOCATION_POOLS'
 | 
			
		||||
    value = config.get(key, "[]")
 | 
			
		||||
    config[key] = json.loads(value)
 | 
			
		||||
    if type(config[key]) is not list:
 | 
			
		||||
        raise KeyError("Key %s is not a list: %s" % (key, config[key]))
 | 
			
		||||
 
 | 
			
		||||
@@ -10,11 +10,14 @@ class packstack::provision ()
 | 
			
		||||
      $password             = hiera('CONFIG_KEYSTONE_DEMO_PW')
 | 
			
		||||
      $tenant_name          = 'demo'
 | 
			
		||||
      $floating_range       = hiera('CONFIG_PROVISION_DEMO_FLOATRANGE')
 | 
			
		||||
      $allocation_pools     = hiera(
 | 
			
		||||
                              'CONFIG_PROVISION_DEMO_ALLOCATION_POOLS')
 | 
			
		||||
    } elsif $provision_tempest {
 | 
			
		||||
      $username             = hiera('CONFIG_PROVISION_TEMPEST_USER')
 | 
			
		||||
      $password             = hiera('CONFIG_PROVISION_TEMPEST_USER_PW')
 | 
			
		||||
      $tenant_name          = 'tempest'
 | 
			
		||||
      $floating_range       = hiera('CONFIG_PROVISION_TEMPEST_FLOATRANGE')
 | 
			
		||||
      $allocation_pools     = []
 | 
			
		||||
      if (empty($tempest_user) or empty($tempest_password)) {
 | 
			
		||||
        fail("Both CONFIG_PROVISION_TEMPEST_USER and
 | 
			
		||||
        CONFIG_PROVISION_TEMPEST_USER_PW need to be configured.")
 | 
			
		||||
@@ -69,11 +72,12 @@ class packstack::provision ()
 | 
			
		||||
          provider_physical_network => $public_physnet,
 | 
			
		||||
        }
 | 
			
		||||
        neutron_subnet { $public_subnet_name:
 | 
			
		||||
          ensure       => 'present',
 | 
			
		||||
          cidr         => $floating_range,
 | 
			
		||||
          enable_dhcp  => false,
 | 
			
		||||
          network_name => $public_network_name,
 | 
			
		||||
          tenant_name  => $admin_tenant_name,
 | 
			
		||||
          ensure           => 'present',
 | 
			
		||||
          cidr             => $floating_range,
 | 
			
		||||
          allocation_pools => $allocation_pools,
 | 
			
		||||
          enable_dhcp      => false,
 | 
			
		||||
          network_name     => $public_network_name,
 | 
			
		||||
          tenant_name      => $admin_tenant_name,
 | 
			
		||||
        }
 | 
			
		||||
        neutron_network { $private_network_name:
 | 
			
		||||
          ensure      => present,
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,4 @@
 | 
			
		||||
---
 | 
			
		||||
features:
 | 
			
		||||
  - Introduced CONFIG_PROVISION_DEMO_ALLOCATION_POOLS
 | 
			
		||||
    to restrict public subnet IP address allocations.
 | 
			
		||||
		Reference in New Issue
	
	Block a user