diff --git a/packstack/installer/processors.py b/packstack/installer/processors.py index 1355452a4..9f7e0d190 100644 --- a/packstack/installer/processors.py +++ b/packstack/installer/processors.py @@ -1,12 +1,24 @@ # -*- coding: utf-8 -*- +import netaddr import os from .utils import ScriptRunner, force_ip from .exceptions import ParamProcessingError, NetworkError -__all__ = ('ParamProcessingError', 'process_host', 'process_ssh_key') +__all__ = ('ParamProcessingError', 'process_cidr', 'process_host', + 'process_ssh_key') + + +def process_cidr(param, process_args=None): + """ + Corrects given CIDR if necessary. + """ + try: + return str(netaddr.IPNetwork(param).cidr) + except Exception, ex: + raise ParamProcessingError(str(ex)) def process_host(param, process_args=None): diff --git a/packstack/plugins/nova_300.py b/packstack/plugins/nova_300.py index 1580f7683..a3bcc3358 100644 --- a/packstack/plugins/nova_300.py +++ b/packstack/plugins/nova_300.py @@ -6,8 +6,7 @@ import os import uuid import logging -from packstack.installer import validators -from packstack.installer import utils +from packstack.installer import processors, utils, validators from packstack.installer.exceptions import ScriptRuntimeError from packstack.modules.ospluginutils import NovaConfig, getManifestTemplate, appendManifestFile, manifestfiles @@ -203,6 +202,7 @@ def initConfig(controllerObject): "USAGE" : "IP Range for Flat DHCP", "PROMPT" : "Enter the IP Range for Flat DHCP", "OPTION_LIST" : ["^([\d]{1,3}\.){3}[\d]{1,3}/\d\d?$"], + "PROCESSORS" : [processors.process_cidr], "VALIDATORS" : [validators.validate_regexp], "DEFAULT_VALUE" : "192.168.32.0/22", "MASK_INPUT" : False, @@ -215,6 +215,7 @@ def initConfig(controllerObject): "USAGE" : "IP Range for Floating IP's", "PROMPT" : "Enter the IP Range for Floating IP's", "OPTION_LIST" : ["^([\d]{1,3}\.){3}[\d]{1,3}/\d\d?$"], + "PROCESSORS" : [processors.process_cidr], "VALIDATORS" : [validators.validate_regexp], "DEFAULT_VALUE" : "10.3.4.0/22", "MASK_INPUT" : False, diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..3721f7851 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +netaddr>=0.7.6 diff --git a/setup.py b/setup.py index 66f8b39ca..44d290cff 100644 --- a/setup.py +++ b/setup.py @@ -24,6 +24,7 @@ setup( include_package_data=True, long_description=read('README'), zip_safe=False, + install_requires=['netaddr'], classifiers=[ "Development Status :: 3 - Alpha", "Topic :: Utilities",