Fixes errors when nova is disabled

This patch checks if nova is disabled in some
plugins so we can run packstack with
CONFIG_NOVA_INSTALL=n

Added also an ALL option to the firewall
template.

Change-Id: I05a9bd55c89d4009e28307248d74624533d47240
Fixes: rhbz#987888 rhbz#1024564 rhbz#1026795
This commit is contained in:
Ivan Chavero
2013-11-06 09:59:59 -07:00
parent bb48532631
commit 768ee0d856
11 changed files with 67 additions and 38 deletions

View File

@@ -4,7 +4,8 @@ from .datastructures import SortedDict
from .decorators import retry from .decorators import retry
from .network import get_localhost_ip, host2ip, force_ip, device_from_ip from .network import get_localhost_ip, host2ip, force_ip, device_from_ip
from .shell import ScriptRunner, execute from .shell import ScriptRunner, execute
from .shortcuts import host_iter, hosts, get_current_user, get_current_username from .shortcuts import host_iter, hosts, get_current_user,\
get_current_username, split_hosts
from .strings import COLORS, color_text, mask_string from .strings import COLORS, color_text, mask_string
@@ -13,4 +14,4 @@ __all__ = ('SortedDict',
'get_localhost_ip', 'host2ip', 'force_ip', 'device_from_ip', 'get_localhost_ip', 'host2ip', 'force_ip', 'device_from_ip',
'ScriptRunner', 'execute', 'ScriptRunner', 'execute',
'host_iter', 'hosts', 'get_current_user', 'get_current_username', 'host_iter', 'hosts', 'get_current_user', 'get_current_username',
'COLORS', 'color_text', 'mask_string') 'split_hosts', 'COLORS', 'color_text', 'mask_string')

View File

@@ -38,3 +38,12 @@ def get_current_username():
user = pwd.getpwuid(uid).pw_name user = pwd.getpwuid(uid).pw_name
group = grp.getgrgid(gid).gr_name group = grp.getgrgid(gid).gr_name
return user, group return user, group
def split_hosts(hosts_string):
hosts = set()
for host in hosts_string.split(','):
shost = host.strip()
if shost:
hosts.add(shost)
return hosts

View File

@@ -99,6 +99,10 @@ def create_manifest(config):
config['FIREWALL_SERVICE_NAME'] = 'ceilometer-api' config['FIREWALL_SERVICE_NAME'] = 'ceilometer-api'
config['FIREWALL_PORTS'] = "'8777'" config['FIREWALL_PORTS'] = "'8777'"
manifestdata += getManifestTemplate("firewall.pp") manifestdata += getManifestTemplate("firewall.pp")
# Add a template that creates a group for nova because the ceilometer
# class needs it
if config['CONFIG_NOVA_INSTALL'] == 'n':
manifestdata += getManifestTemplate("ceilometer_nova_disabled.pp")
appendManifestFile(manifestfile, manifestdata) appendManifestFile(manifestfile, manifestdata)

View File

@@ -10,6 +10,7 @@ import logging
from packstack.installer import exceptions from packstack.installer import exceptions
from packstack.installer import processors from packstack.installer import processors
from packstack.installer import validators from packstack.installer import validators
from packstack.installer.utils import split_hosts
from packstack.installer import basedefs from packstack.installer import basedefs
from packstack.installer import utils from packstack.installer import utils
@@ -364,7 +365,12 @@ def create_manifest(config):
if config['CONFIG_CEILOMETER_INSTALL'] == 'y': if config['CONFIG_CEILOMETER_INSTALL'] == 'y':
manifestdata += getManifestTemplate('cinder_ceilometer.pp') manifestdata += getManifestTemplate('cinder_ceilometer.pp')
hosts = config['CONFIG_NOVA_COMPUTE_HOSTS'].split(",") hosts = set()
if config['CONFIG_NOVA_INSTALL'] == 'y':
hosts = split_hosts(config['CONFIG_NOVA_COMPUTE_HOSTS'])
else:
hosts.add('ALL',)
config['FIREWALL_ALLOWED'] = ",".join(["'%s'" % i.strip() for i in hosts if i.strip()]) config['FIREWALL_ALLOWED'] = ",".join(["'%s'" % i.strip() for i in hosts if i.strip()])
config['FIREWALL_SERVICE_NAME'] = "cinder" config['FIREWALL_SERVICE_NAME'] = "cinder"
config['FIREWALL_PORTS'] = "'3260', '8776'" config['FIREWALL_PORTS'] = "'3260', '8776'"

View File

@@ -8,6 +8,7 @@ import logging
from packstack.installer import validators from packstack.installer import validators
from packstack.installer import basedefs from packstack.installer import basedefs
from packstack.installer import utils from packstack.installer import utils
from packstack.installer.utils import split_hosts
from packstack.modules.ospluginutils import getManifestTemplate, appendManifestFile from packstack.modules.ospluginutils import getManifestTemplate, appendManifestFile
@@ -98,8 +99,10 @@ def createmanifest(config):
if config['CONFIG_CEILOMETER_INSTALL'] == 'y': if config['CONFIG_CEILOMETER_INSTALL'] == 'y':
manifestdata += getManifestTemplate('glance_ceilometer.pp') manifestdata += getManifestTemplate('glance_ceilometer.pp')
hosts = set() hosts = set()
for host in config['CONFIG_NOVA_COMPUTE_HOSTS'].split(','): if config['CONFIG_NOVA_INSTALL'] == 'y':
hosts.add(host.strip()) hosts = split_hosts(config['CONFIG_NOVA_COMPUTE_HOSTS'])
else:
hosts.add('ALL',)
config['FIREWALL_ALLOWED'] = ",".join(["'%s'" % i for i in hosts]) config['FIREWALL_ALLOWED'] = ",".join(["'%s'" % i for i in hosts])
config['FIREWALL_SERVICE_NAME'] = "glance" config['FIREWALL_SERVICE_NAME'] = "glance"
config['FIREWALL_PORTS'] = "'9292'" config['FIREWALL_PORTS'] = "'9292'"

View File

@@ -113,7 +113,7 @@ def createmanifest(config):
hosts.add(config.get('CONFIG_%s_HOST' % mod.upper()).strip()) hosts.add(config.get('CONFIG_%s_HOST' % mod.upper()).strip())
elif mod == 'neutron': elif mod == 'neutron':
hosts.add(config.get('CONFIG_NEUTRON_SERVER_HOST').strip()) hosts.add(config.get('CONFIG_NEUTRON_SERVER_HOST').strip())
else: elif config['CONFIG_NOVA_INSTALL'] != 'n':
#In that remote case that we have lot's of nova hosts #In that remote case that we have lot's of nova hosts
hosts.add(config.get('CONFIG_NOVA_API_HOST').strip()) hosts.add(config.get('CONFIG_NOVA_API_HOST').strip())
hosts.add(config.get('CONFIG_NOVA_CERT_HOST').strip()) hosts.add(config.get('CONFIG_NOVA_CERT_HOST').strip())
@@ -121,8 +121,7 @@ def createmanifest(config):
hosts.add(config.get('CONFIG_NOVA_CONDUCTOR_HOST').strip()) hosts.add(config.get('CONFIG_NOVA_CONDUCTOR_HOST').strip())
hosts.add(config.get('CONFIG_NOVA_SCHED_HOST').strip()) hosts.add(config.get('CONFIG_NOVA_SCHED_HOST').strip())
if config['CONFIG_NEUTRON_INSTALL'] != 'y': if config['CONFIG_NEUTRON_INSTALL'] != 'y':
dbhosts = config['CONFIG_NOVA_NETWORK_HOSTS'].split(',') dbhosts = split_hosts(config['CONFIG_NOVA_NETWORK_HOSTS'])
dbhosts = set([i.strip() for i in dbhosts if i.strip()])
hosts |= dbhosts hosts |= dbhosts
for host in config.get('CONFIG_NOVA_COMPUTE_HOSTS').split(','): for host in config.get('CONFIG_NOVA_COMPUTE_HOSTS').split(','):
hosts.add(host.strip()) hosts.add(host.strip())

View File

@@ -9,6 +9,7 @@ import uuid
from packstack.installer import utils from packstack.installer import utils
from packstack.installer import validators from packstack.installer import validators
from packstack.installer.utils import split_hosts
from packstack.modules.ospluginutils import getManifestTemplate, appendManifestFile from packstack.modules.ospluginutils import getManifestTemplate, appendManifestFile
@@ -316,20 +317,13 @@ def initSequences(controller):
controller.CONF['CONFIG_NEUTRON_CORE_PLUGIN'] = 'neutron.plugins.linuxbridge.lb_neutron_plugin.LinuxBridgePluginV2' controller.CONF['CONFIG_NEUTRON_CORE_PLUGIN'] = 'neutron.plugins.linuxbridge.lb_neutron_plugin.LinuxBridgePluginV2'
global api_hosts, l3_hosts, dhcp_hosts, compute_hosts, meta_hosts, q_hosts global api_hosts, l3_hosts, dhcp_hosts, compute_hosts, meta_hosts, q_hosts
dirty = controller.CONF['CONFIG_NEUTRON_SERVER_HOST'].split(',') api_hosts = split_hosts(controller.CONF['CONFIG_NEUTRON_SERVER_HOST'])
api_hosts = set([i.strip() for i in dirty if i.strip()]) l3_hosts = split_hosts(controller.CONF['CONFIG_NEUTRON_L3_HOSTS'])
dhcp_hosts = split_hosts(controller.CONF['CONFIG_NEUTRON_DHCP_HOSTS'])
dirty = controller.CONF['CONFIG_NEUTRON_L3_HOSTS'].split(',') meta_hosts = split_hosts(controller.CONF['CONFIG_NEUTRON_METADATA_HOSTS'])
l3_hosts = set([i.strip() for i in dirty if i.strip()]) compute_hosts = set()
if controller.CONF['CONFIG_NOVA_INSTALL'] == 'y':
dirty = controller.CONF['CONFIG_NEUTRON_DHCP_HOSTS'].split(',') compute_hosts = split_hosts(controller.CONF['CONFIG_NOVA_COMPUTE_HOSTS'])
dhcp_hosts = set([i.strip() for i in dirty if i.strip()])
dirty = controller.CONF['CONFIG_NEUTRON_METADATA_HOSTS'].split(',')
meta_hosts = set([i.strip() for i in dirty if i.strip()])
dirty = controller.CONF['CONFIG_NOVA_COMPUTE_HOSTS'].split(',')
compute_hosts = set([i.strip() for i in dirty if i.strip()])
q_hosts = api_hosts | l3_hosts | dhcp_hosts | compute_hosts | meta_hosts q_hosts = api_hosts | l3_hosts | dhcp_hosts | compute_hosts | meta_hosts
neutron_steps = [ neutron_steps = [
@@ -450,7 +444,8 @@ def createL2AgentManifests(config):
def createMetadataManifests(config): def createMetadataManifests(config):
global meta_hosts global meta_hosts
if config.get('CONFIG_NOVA_INSTALL') == 'n':
return
for host in meta_hosts: for host in meta_hosts:
controller.CONF['CONFIG_NEUTRON_METADATA_HOST'] = host controller.CONF['CONFIG_NEUTRON_METADATA_HOST'] = host
manifestdata = getManifestTemplate('neutron_metadata.pp') manifestdata = getManifestTemplate('neutron_metadata.pp')

View File

@@ -72,8 +72,8 @@ def initConfig(controllerObject):
groupDict = { "GROUP_NAME" : "QPIDLANCE", groupDict = { "GROUP_NAME" : "QPIDLANCE",
"DESCRIPTION" : "QPID Config parameters", "DESCRIPTION" : "QPID Config parameters",
"PRE_CONDITION" : "CONFIG_NOVA_INSTALL", "PRE_CONDITION" : check_enabled,
"PRE_CONDITION_MATCH" : "y", "PRE_CONDITION_MATCH" : True,
"POST_CONDITION" : False, "POST_CONDITION" : False,
"POST_CONDITION_MATCH" : True} "POST_CONDITION_MATCH" : True}
@@ -144,8 +144,8 @@ def initConfig(controllerObject):
groupDict = { "GROUP_NAME" : "QPIDSSL", groupDict = { "GROUP_NAME" : "QPIDSSL",
"DESCRIPTION" : "QPID Config SSL parameters", "DESCRIPTION" : "QPID Config SSL parameters",
"PRE_CONDITION" : "CONFIG_QPID_ENABLE_SSL", "PRE_CONDITION" : check_ssl_enabled,
"PRE_CONDITION_MATCH" : "y", "PRE_CONDITION_MATCH" : True,
"POST_CONDITION" : False, "POST_CONDITION" : False,
"POST_CONDITION_MATCH" : True} "POST_CONDITION_MATCH" : True}
@@ -188,11 +188,15 @@ def initConfig(controllerObject):
controller.addGroup(groupDict, paramsList) controller.addGroup(groupDict, paramsList)
def check_ssl_enabled(config):
return check_enabled(config) and config.get('CONFIG_QPID_ENABLE_SSL') == 'y'
def check_enabled(config):
return (config.get('CONFIG_NOVA_INSTALL') == 'y' or
config.get('CONFIG_QPID_HOST') != '')
def initSequences(controller): def initSequences(controller):
# If we don't want Nova we don't need qpid
if controller.CONF['CONFIG_NOVA_INSTALL'] != 'y':
return
qpidsteps = [ qpidsteps = [
{'title': 'Adding QPID manifest entries', 'functions':[createmanifest]} {'title': 'Adding QPID manifest entries', 'functions':[createmanifest]}
] ]

View File

@@ -11,6 +11,7 @@ from packstack.installer import validators
from packstack.installer.exceptions import ParamValidationError from packstack.installer.exceptions import ParamValidationError
from packstack.installer import basedefs from packstack.installer import basedefs
from packstack.installer import utils from packstack.installer import utils
from packstack.installer.utils import split_hosts
from packstack.modules.ospluginutils import getManifestTemplate, appendManifestFile, manifestfiles from packstack.modules.ospluginutils import getManifestTemplate, appendManifestFile, manifestfiles
@@ -278,13 +279,10 @@ def createstoragemanifest(config):
controller.CONF["SWIFT_STORAGE_DEVICES"] = "'%s'"%devicename controller.CONF["SWIFT_STORAGE_DEVICES"] = "'%s'"%devicename
manifestdata = "\n" + getManifestTemplate("swift_loopback.pp") manifestdata = "\n" + getManifestTemplate("swift_loopback.pp")
# Allowed host list for firewall # Allowed host list for firewall
hosts = set() hosts = split_hosts(config['CONFIG_SWIFT_STORAGE_HOSTS'])
for host in config['CONFIG_SWIFT_STORAGE_HOSTS'].split(','): hosts |= split_hosts(config['CONFIG_SWIFT_PROXY_HOSTS'])
hosts.add(host.strip()) if config['CONFIG_NOVA_INSTALL'] == 'y':
for host in config['CONFIG_SWIFT_PROXY_HOSTS'].split(','): hosts |= split_hosts(config['CONFIG_NOVA_COMPUTE_HOSTS'])
hosts.add(host.strip())
for host in config['CONFIG_NOVA_COMPUTE_HOSTS'].split(','):
hosts.add(host.strip())
config['FIREWALL_ALLOWED'] = ",".join(["'%s'" % i for i in hosts]) config['FIREWALL_ALLOWED'] = ",".join(["'%s'" % i for i in hosts])
# Firewall rules for storage and rsync # Firewall rules for storage and rsync
config['FIREWALL_SERVICE_NAME'] = "swift storage and rsync" config['FIREWALL_SERVICE_NAME'] = "swift storage and rsync"

View File

@@ -0,0 +1,6 @@
group { "nova":
ensure => present,
}
Group['nova'] -> Class['ceilometer']

View File

@@ -4,11 +4,15 @@
$hosts = [ %(FIREWALL_ALLOWED)s ] $hosts = [ %(FIREWALL_ALLOWED)s ]
define add_allow_host { define add_allow_host {
$source = $title ? {
'ALL' => '0.0.0.0/0',
default => $title,
}
firewall { "001 %(FIREWALL_SERVICE_NAME)s incoming ${title}": firewall { "001 %(FIREWALL_SERVICE_NAME)s incoming ${title}":
proto => 'tcp', proto => 'tcp',
dport => [%(FIREWALL_PORTS)s], dport => [%(FIREWALL_PORTS)s],
action => 'accept', action => 'accept',
source => $title, source => $source,
} }
} }