LGTM, thanks

On Wed, Jul 30, 2014 at 6:36 PM, Yuto KAWAMURA(kawamuray) <
[email protected]> wrote:

> The instance stash file is used to keep information that is necessary to
> complete instance destruction, until the instance is stopped.
> At this point, the name of loopback device allocated to create the block
> device partition mapping is a concrete example of this kind of
> information.
>
> Signed-off-by: Yuto KAWAMURA(kawamuray) <[email protected]>
> ---
>  lib/hypervisor/hv_lxc.py | 36 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 36 insertions(+)
>
> diff --git a/lib/hypervisor/hv_lxc.py b/lib/hypervisor/hv_lxc.py
> index 21f5b44..72927df 100644
> --- a/lib/hypervisor/hv_lxc.py
> +++ b/lib/hypervisor/hv_lxc.py
> @@ -32,6 +32,7 @@ from ganeti import errors # pylint: disable=W0611
>  from ganeti import utils
>  from ganeti import objects
>  from ganeti import pathutils
> +from ganeti import serializer
>  from ganeti.hypervisor import hv_base
>  from ganeti.errors import HypervisorError
>
> @@ -119,6 +120,41 @@ class LXCHypervisor(hv_base.BaseHypervisor):
>      return utils.PathJoin(cls._ROOT_DIR, instance_name + ".log")
>
>    @classmethod
> +  def _InstanceStashFilePath(cls, instance_name):
> +    """Return the stash file path for an instance.
> +
> +    The stash file is used to keep information needed to clean up after
> the
> +    destruction of the instance.
> +
> +    """
> +    return utils.PathJoin(cls._ROOT_DIR, instance_name + ".stash")
> +
> +  def _SaveInstanceStash(self, instance_name, data):
> +    """Save data to the instance stash file in serialized format.
> +
> +    """
> +    stash_file = self._InstanceStashFilePath(instance_name)
> +    serialized = serializer.Dump(data)
> +    try:
> +      utils.WriteFile(stash_file, data=serialized,
> +                      mode=constants.SECURE_FILE_MODE)
> +    except EnvironmentError, err:
> +      raise HypervisorError("Failed to save instance stash file %s : %s" %
> +                            (stash_file, err))
> +
> +  def _LoadInstanceStash(self, instance_name):
> +    """Load information stashed in file which was created by
> +    L{_SaveInstanceStash}.
> +
> +    """
> +    stash_file = self._InstanceStashFilePath(instance_name)
> +    try:
> +      return serializer.Load(utils.ReadFile(stash_file))
> +    except (EnvironmentError, ValueError), err:
> +      raise HypervisorError("Failed to load instance stash file %s : %s" %
> +                            (stash_file, err))
> +
> +  @classmethod
>    def _GetCgroupMountPoint(cls):
>      for _, mountpoint, fstype, _ in utils.GetMounts():
>        if fstype == "cgroup":
> --
> 1.8.5.5
>
>


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

Reply via email to