On Mon, Aug 18, 2014 at 3:38 AM, Yuto KAWAMURA(kawamuray) < [email protected]> wrote:
> Add the new hvparam lxc_extra_config which is used to specify > additional LXC container config parameters which are not supported by > the Ganeti LXC hypervisor natively. > > Signed-off-by: Yuto KAWAMURA(kawamuray) <[email protected]> > --- > lib/hypervisor/hv_lxc.py | 6 ++++++ > man/gnt-instance.rst | 10 ++++++++++ > src/Ganeti/Constants.hs | 5 +++++ > 3 files changed, 21 insertions(+) > > diff --git a/lib/hypervisor/hv_lxc.py b/lib/hypervisor/hv_lxc.py > index b8ea73a..596def2 100644 > --- a/lib/hypervisor/hv_lxc.py > +++ b/lib/hypervisor/hv_lxc.py > @@ -68,6 +68,7 @@ class LXCHypervisor(hv_base.BaseHypervisor): > constants.HV_LXC_CGROUP_USE: hv_base.NO_CHECK, > constants.HV_LXC_DEVICES: hv_base.NO_CHECK, > constants.HV_LXC_DROP_CAPABILITIES: hv_base.NO_CHECK, > + constants.HV_LXC_EXTRA_CONFIG: hv_base.NO_CHECK, > constants.HV_LXC_STARTUP_WAIT: hv_base.OPT_NONNEGATIVE_INT_CHECK, > } > > @@ -512,6 +513,11 @@ class LXCHypervisor(hv_base.BaseHypervisor): > for cap in self._GetInstanceDropCapabilities(instance.hvparams): > out.append("lxc.cap.drop = %s" % cap) > > + # Extra config > + out.append("# User defined configs") > + extra_configs = instance.hvparams[constants.HV_LXC_EXTRA_CONFIG] > + out.extend(extra_configs.split(",")) > By splitting these values at ',', we are limiting the params to values which do not contain a comma, aren't we? Given that lxc.mount.entry would usually require commas, we should probably avoid this restriction. For the time being, it can remain as-is, but perhaps a TODO should be added / issue should be filed stating that we could load these values from a file. The contents would have to be read instantly and committed to the configuration to allow for instance mobility, but it would help solve this horrible issue of escapes and separators and escaping escapes. This is a bigger issue though, and I will try and consult with the team before moving on this one. + > return "\n".join(out) + "\n" > > @classmethod > diff --git a/man/gnt-instance.rst b/man/gnt-instance.rst > index 1e00a54..d5cfe13 100644 > --- a/man/gnt-instance.rst > +++ b/man/gnt-instance.rst > @@ -941,6 +941,16 @@ lxc\_devices > /dev/console, /dev/ptmx and first block of Unix98 PTY slaves) with > read-writable(rw) access. > > +lxc\_extra\_config > + Valid for the LXC hypervisor. > + > + This option specifies the list of extra config parameters which > + are not supported by the Ganeti LXC hypervisor natively. > + The each value of this option must be valid as a line of a LXC > Each value ... of the LXC > + container config file(see: **lxc.container.conf**\(5)). > + > + This parameter is not set by default. > + > The ``-O (--os-parameters)`` option allows customisation of the OS > parameters. The actual parameter names and values depend on the OS being > used, but the syntax is the same key=value. For example, setting a > diff --git a/src/Ganeti/Constants.hs b/src/Ganeti/Constants.hs > index 4d8d420..848085e 100644 > --- a/src/Ganeti/Constants.hs > +++ b/src/Ganeti/Constants.hs > @@ -1698,6 +1698,9 @@ hvLxcDevices = "lxc_devices" > hvLxcDropCapabilities :: String > hvLxcDropCapabilities = "lxc_drop_capabilities" > > +hvLxcExtraConfig :: String > +hvLxcExtraConfig = "lxc_extra_config" > + > hvMemPath :: String > hvMemPath = "mem_path" > > @@ -1863,6 +1866,7 @@ hvsParameterTypes = Map.fromList > , (hvLxcCgroupUse, VTypeString) > , (hvLxcDevices, VTypeString) > , (hvLxcDropCapabilities, VTypeString) > + , (hvLxcExtraConfig, VTypeString) > , (hvLxcStartupWait, VTypeInt) > , (hvMemPath, VTypeString) > , (hvMigrationBandwidth, VTypeInt) > @@ -3947,6 +3951,7 @@ hvcDefaults = > , (hvLxcCgroupUse, PyValueEx "") > , (hvLxcDevices, PyValueEx lxcDevicesDefault) > , (hvLxcDropCapabilities, PyValueEx lxcDropCapabilitiesDefault) > + , (hvLxcExtraConfig, PyValueEx "") > , (hvLxcStartupWait, PyValueEx (30 :: Int)) > ]) > ] > -- > 2.0.4 > > Hrvoje Ribicic Ganeti Engineering Google Germany GmbH Dienerstr. 12, 80331, München Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Geschäftsführer: Graham Law, Christine Elizabeth Flores Steuernummer: 48/725/00206 Umsatzsteueridentifikationsnummer: DE813741370
