Fix libvirt policy kit file that was commented out

This commit is contained in:
Joshua Harlow 2012-03-20 16:20:04 -07:00
parent f896d97509
commit 54da76edb0
4 changed files with 46 additions and 37 deletions

View File

@ -442,7 +442,7 @@ components:
stop: devstack.components.novnc:NoVNCRuntime
uninstall: devstack.components.novnc:NoVNCUninstaller
nova:
install: devstack.components.nova:NovaInstaller
install: devstack.distros.rhel6:NovaInstaller
packages:
- name: MySQL-python
removable: true

View File

@ -38,7 +38,7 @@ CONFIG_DIR = "etc"
# Simple confs
ROOT_CONF = "keystone.conf"
CATALOG_CONF = 'default_catalog.templates'
LOGGING_CONF = "logging.conf"
LOGGING_CONF = "logging.cnf" # WHHHHY U NO LEAVE NAMES SAME!
LOGGING_SOURCE_FN = 'logging.conf.sample'
CONFIGS = [ROOT_CONF, CATALOG_CONF, LOGGING_CONF]

View File

@ -167,19 +167,6 @@ QUANTUM_OPENSWITCH_OPS = {
CLEANER_DATA_CONF = 'nova-clean.sh'
CLEANER_CMD_ROOT = [sh.joinpths("/", "bin", 'bash')]
# FIXME:
#rhel6/fedora libvirt policy
#http://wiki.libvirt.org/page/SSHPolicyKitSetup
#LIBVIRT_POLICY_FN = "/etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla"
#LIBVIRT_POLICY_CONTENTS = """
#[libvirt Management Access]
#Identity=unix-group:libvirtd
#Action=org.libvirt.unix.manage
#ResultAny=yes
#ResultInactive=yes
#ResultActive=yes
#"""
# Xenserver specific defaults
XS_DEF_INTERFACE = 'eth1'
XA_CONNECTION_ADDR = '169.254.0.1'
@ -202,7 +189,7 @@ WARMUP_PWS = [('rabbit', rabbit.PW_USER_PROMPT)]
NV_CONF_DEF_SECTION = "[DEFAULT]"
def _canon_virt_driver(virt_driver):
def canon_virt_driver(virt_driver):
if not virt_driver:
return DEF_VIRT_DRIVER
virt_driver = virt_driver.strip().lower()
@ -211,7 +198,7 @@ def _canon_virt_driver(virt_driver):
return virt_driver
def _canon_libvirt_type(virt_type):
def canon_libvirt_type(virt_type):
if not virt_type:
return DEF_VIRT_TYPE
virt_type = virt_type.lower().strip()
@ -248,10 +235,10 @@ class NovaUninstaller(comp.PythonUninstallComponent):
sh.execute(*cmd, run_as_root=True, env_overrides=env)
def _clear_libvirt_domains(self):
virt_driver = _canon_virt_driver(self.cfg.get('nova', 'virt_driver'))
virt_driver = canon_virt_driver(self.cfg.get('nova', 'virt_driver'))
if virt_driver == 'libvirt':
inst_prefix = self.cfg.getdefaulted('nova', 'instance_name_prefix', DEF_INSTANCE_PREFIX)
libvirt_type = _canon_libvirt_type(self.cfg.get('nova', 'libvirt_type'))
libvirt_type = canon_libvirt_type(self.cfg.get('nova', 'libvirt_type'))
virsh.clear_libvirt_domains(self.distro, libvirt_type, inst_prefix)
@ -290,7 +277,7 @@ class NovaInstaller(comp.PythonInstallComponent):
def warm_configs(self):
warm_pws = list(WARMUP_PWS)
driver_canon = _canon_virt_driver(self.cfg.get('nova', 'virt_driver'))
driver_canon = canon_virt_driver(self.cfg.get('nova', 'virt_driver'))
if driver_canon == 'xenserver':
warm_pws.append(('xenapi_connection', 'the Xen API connection'))
for pw_key, pw_prompt in warm_pws:
@ -380,17 +367,6 @@ class NovaInstaller(comp.PythonInstallComponent):
configs_made = comp.PythonInstallComponent.configure(self)
self._generate_nova_conf()
configs_made += 1
driver_canon = _canon_virt_driver(self.cfg.get('nova', 'virt_driver'))
# TODO maybe move this??
if driver_canon == 'libvirt' and self.distro.get_command('virt-policy', quiet=True):
(fn, contents) = self.distro.get_command('virt-policy')
dirs_made = list()
with sh.Rooted(True):
dirs_made = sh.mkdirslist(sh.dirname(fn))
sh.write_file(fn, contents)
self.tracewriter.dirs_made(*dirs_made)
self.tracewriter.cfg_file_written(fn)
configs_made += 1
return configs_made
@ -440,11 +416,11 @@ class NovaRuntime(comp.PythonRuntime):
def pre_start(self):
# Let the parent class do its thing
comp.PythonRuntime.pre_start(self)
virt_driver = _canon_virt_driver(self.cfg.get('nova', 'virt_driver'))
virt_driver = canon_virt_driver(self.cfg.get('nova', 'virt_driver'))
if virt_driver == 'libvirt':
# FIXME: The configuration for the virtualization-type
# should come from the persona.
virt_type = _canon_libvirt_type(self.cfg.get('nova', 'libvirt_type'))
virt_type = canon_libvirt_type(self.cfg.get('nova', 'libvirt_type'))
LOG.info("Checking that your selected libvirt virtualization type [%s] is working and running." % (virt_type))
if not virsh.virt_ok(virt_type, self.distro):
msg = ("Libvirt type %s does not seem to be active or configured correctly, "
@ -606,9 +582,9 @@ class NovaConfConfigurator(object):
nova_conf.add('sql_connection', db_dsn)
# Configure anything libvirt related?
virt_driver = _canon_virt_driver(self._getstr('virt_driver'))
virt_driver = canon_virt_driver(self._getstr('virt_driver'))
if virt_driver == 'libvirt':
libvirt_type = _canon_libvirt_type(self._getstr('libvirt_type'))
libvirt_type = canon_libvirt_type(self._getstr('libvirt_type'))
self._configure_libvirt(libvirt_type, nova_conf)
# How instances will be presented
@ -723,7 +699,7 @@ class NovaConfConfigurator(object):
# driver we're using.
vncserver_proxyclient_address = self._getstr('vncserver_proxyclient_address')
if not vncserver_proxyclient_address:
drive_canon = _canon_virt_driver(self._getstr('virt_driver'))
drive_canon = canon_virt_driver(self._getstr('virt_driver'))
if drive_canon == 'xenserver':
vncserver_proxyclient_address = XS_VNC_ADDR
else:
@ -808,7 +784,7 @@ class NovaConfConfigurator(object):
# Configures any virt driver settings
def _configure_virt_driver(self, nova_conf):
drive_canon = _canon_virt_driver(self._getstr('virt_driver'))
drive_canon = canon_virt_driver(self._getstr('virt_driver'))
nova_conf.add('connection_type', VIRT_DRIVER_CON_MAP.get(drive_canon, drive_canon))
# Special driver settings
if drive_canon == 'xenserver':

View File

@ -24,6 +24,7 @@ from devstack import utils
from devstack.components import db
from devstack.components import horizon
from devstack.components import nova
from devstack.packaging import yum
@ -44,6 +45,19 @@ RHEL_RELINKS = {
)
}
# See: http://wiki.libvirt.org/page/SSHPolicyKitSetup
# FIXME: take from distro config??
LIBVIRT_POLICY_FN = "/etc/polkit-1/localauthority/50-local.d/50-libvirt-access.pkla"
LIBVIRT_POLICY_CONTENTS = """
[libvirt Management Access]
Identity={idents}
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes
"""
DEF_IDENT = 'unix-group:libvirtd'
class DBInstaller(db.DBInstaller):
@ -83,6 +97,25 @@ class HorizonInstaller(horizon.HorizonInstaller):
sh.write_file(HTTPD_CONF, utils.joinlinesep(*new_lines))
class NovaInstaller(nova.NovaInstaller):
def configure(self):
configs_made = nova.NovaInstaller.configure(self)
driver_canon = nova.canon_virt_driver(self.cfg.get('nova', 'virt_driver'))
if driver_canon == 'libvirt':
ident_users = set()
ident_users.add(DEF_IDENT)
ident_users.add('unix-user:%s' % (sh.getuser()))
fc_contents = LIBVIRT_POLICY_CONTENTS.format(idents=(";".join(ident_users)))
with sh.Rooted(True):
dirs_made = sh.mkdirslist(sh.dirname(LIBVIRT_POLICY_FN))
sh.write_file(LIBVIRT_POLICY_FN, fc_contents)
self.tracewriter.cfg_file_written(LIBVIRT_POLICY_FN)
self.tracewriter.dirs_made(*dirs_made)
configs_made += 1
return configs_made
class YumPackager(yum.YumPackager):
def _remove_special(self, name, info):