From f91f058d047f10a85497efd093d76033756b7578 Mon Sep 17 00:00:00 2001 From: Ivan Chavero Date: Tue, 2 Dec 2014 12:48:46 -0700 Subject: [PATCH] Allow network range for nova networks This patch adds the option to set an ip range for instances. For this patch to work this other patch is needed for puppet nova https://review.openstack.org/#/c/135123/ Change-Id: I6eabe1268003117c69d77fd8501df2c6d2f8329a Fixes: rhbz#1127404 --- packstack/plugins/nova_300.py | 56 ++++++++++++++++++++++ packstack/puppet/templates/nova_network.pp | 2 + 2 files changed, 58 insertions(+) diff --git a/packstack/plugins/nova_300.py b/packstack/plugins/nova_300.py index 1c13cf129..37329d152 100644 --- a/packstack/plugins/nova_300.py +++ b/packstack/plugins/nova_300.py @@ -240,6 +240,20 @@ def initConfig(controller): "USE_DEFAULT": False, "NEED_CONFIRM": False, "CONDITION": False}, + + {"CMD_OPTION": "novanetwork-allowed-range", + "USAGE": "Reserve an IP Address Range for Instances", + "PROMPT": ("Reserve IP Adress Range for Instances"), + "OPTION_LIST": ["y", "n"], + "VALIDATORS": [validators.validate_options], + "DEFAULT_VALUE": "n", + "MASK_INPUT": False, + "LOOSE_VALIDATION": False, + "CONF_NAME": "CONFIG_NOVA_NETWORK_ALLOWED_RANGE", + "USE_DEFAULT": False, + "NEED_CONFIRM": False, + "CONDITION": False}, + ], "NOVA_NETWORK_VLAN": [ @@ -282,6 +296,35 @@ def initConfig(controller): "NEED_CONFIRM": False, "CONDITION": False}, ], + + "NOVA_NETWORK_ALLOWED_IP_RANGE": [ + {"CMD_OPTION": "nova-network-allowed-start-ip", + "USAGE": "First IP of the range of allowed addresses", + "PROMPT": ("Start IP"), + "OPTION_LIST": [], + "VALIDATORS": [validators.validate_ip], + "DEFAULT_VALUE": "", + "MASK_INPUT": False, + "LOOSE_VALIDATION": True, + "CONF_NAME": "CONFIG_NOVA_NETWORK_ALLOWED_START_IP", + "USE_DEFAULT": False, + "NEED_CONFIRM": False, + "CONDITION": False}, + + {"CMD_OPTION": "nova-network-allowed-end-ip", + "USAGE": "Last IP of the range of allowed addresses", + "PROMPT": ("End IP"), + "OPTION_LIST": [], + "VALIDATORS": [validators.validate_ip], + "DEFAULT_VALUE": "", + "MASK_INPUT": False, + "LOOSE_VALIDATION": True, + "CONF_NAME": "CONFIG_NOVA_NETWORK_ALLOWED_END_IP", + "USE_DEFAULT": False, + "NEED_CONFIRM": False, + "CONDITION": False}, + ], + } def use_nova_network(config): @@ -294,6 +337,11 @@ def initConfig(controller): config['CONFIG_NEUTRON_INSTALL'] != 'y' and config['CONFIG_NOVA_NETWORK_MANAGER'] == manager) + def use_nova_network_ip_range(config): + return (config['CONFIG_NOVA_INSTALL'] == 'y' and + config['CONFIG_NEUTRON_INSTALL'] != 'y' and + config['CONFIG_NOVA_NETWORK_ALLOWED_RANGE'] == 'y') + nova_groups = [ {"GROUP_NAME": "NOVA", "DESCRIPTION": "Nova Options", @@ -315,6 +363,14 @@ def initConfig(controller): "PRE_CONDITION_MATCH": True, "POST_CONDITION": False, "POST_CONDITION_MATCH": True}, + + {"GROUP_NAME": "NOVA_NETWORK_ALLOWED_IP_RANGE", + "DESCRIPTION": "Nova Network Allowed IP Range ", + "PRE_CONDITION": use_nova_network_ip_range, + "PRE_CONDITION_MATCH": True, + "POST_CONDITION": False, + "POST_CONDITION_MATCH": True}, + ] for group in nova_groups: params = nova_params[group["GROUP_NAME"]] diff --git a/packstack/puppet/templates/nova_network.pp b/packstack/puppet/templates/nova_network.pp index 56a65433c..abfc96889 100644 --- a/packstack/puppet/templates/nova_network.pp +++ b/packstack/puppet/templates/nova_network.pp @@ -45,6 +45,8 @@ class { 'nova::network': fixed_range => hiera('CONFIG_NOVA_NETWORK_FIXEDRANGE'), floating_range => hiera('CONFIG_NOVA_NETWORK_FLOATRANGE'), config_overrides => $overrides, + allowed_start => hiera('CONFIG_NOVA_NETWORK_ALLOWED_START_IP'), + allowed_end => hiera('CONFIG_NOVA_NETWORK_ALLOWED_END_IP'), } package { 'dnsmasq':