LGTM.

Thanks,
Jose

On Apr 16 15:19, Ilias Tsitsimpis wrote:
> Instance's 'disks' slot will contain a list of disk UUIDs. Create a new
> slot named 'disks_info' which will be annotated with the disk objects'
> during the RPC.
> 
> Signed-off-by: Ilias Tsitsimpis <[email protected]>
> ---
>  lib/backend.py                 | 14 +++++++-------
>  lib/objects.py                 |  4 +++-
>  lib/rpc/node.py                |  2 +-
>  test/py/ganeti.rpc_unittest.py | 10 +++++-----
>  4 files changed, 16 insertions(+), 14 deletions(-)
> 
> diff --git a/lib/backend.py b/lib/backend.py
> index f277732..aab5160 100644
> --- a/lib/backend.py
> +++ b/lib/backend.py
> @@ -1519,7 +1519,7 @@ def GetInstanceMigratable(instance):
>    if iname not in hyper.ListInstances(instance.hvparams):
>      _Fail("Instance %s is not running", iname)
>  
> -  for idx in range(len(instance.disks)):
> +  for idx in range(len(instance.disks_info)):
>      link_name = _GetBlockDevSymlinkPath(iname, idx)
>      if not os.path.islink(link_name):
>        logging.warning("Instance %s is missing symlink %s for disk %d",
> @@ -1805,7 +1805,7 @@ def _GatherAndLinkBlockDevs(instance):
>  
>    """
>    block_devices = []
> -  for idx, disk in enumerate(instance.disks):
> +  for idx, disk in enumerate(instance.disks_info):
>      device = _RecursiveFindBD(disk)
>      if device is None:
>        raise errors.BlockDeviceError("Block device '%s' is not set up." %
> @@ -1853,7 +1853,7 @@ def StartInstance(instance, startup_paused, reason, 
> store_reason=True):
>    except errors.BlockDeviceError, err:
>      _Fail("Block device error: %s", err, exc=True)
>    except errors.HypervisorError, err:
> -    _RemoveBlockDevLinks(instance.name, instance.disks)
> +    _RemoveBlockDevLinks(instance.name, instance.disks_info)
>      _Fail("Hypervisor error: %s", err, exc=True)
>  
>  
> @@ -1929,7 +1929,7 @@ def InstanceShutdown(instance, timeout, reason, 
> store_reason=True):
>    except errors.HypervisorError, err:
>      logging.warning("Failed to execute post-shutdown cleanup step: %s", err)
>  
> -  _RemoveBlockDevLinks(iname, instance.disks)
> +  _RemoveBlockDevLinks(iname, instance.disks_info)
>  
>  
>  def InstanceReboot(instance, reboot_type, shutdown_timeout, reason):
> @@ -2040,7 +2040,7 @@ def AcceptInstance(instance, info, target):
>      hyper.AcceptInstance(instance, info, target)
>    except errors.HypervisorError, err:
>      if instance.disk_template in constants.DTS_EXT_MIRROR:
> -      _RemoveBlockDevLinks(instance.name, instance.disks)
> +      _RemoveBlockDevLinks(instance.name, instance.disks_info)
>      _Fail("Failed to accept instance: %s", err, exc=True)
>  
>  
> @@ -3178,13 +3178,13 @@ def OSEnvironment(instance, inst_os, debug=0):
>      result["INSTANCE_%s" % attr.upper()] = str(getattr(instance, attr))
>  
>    result["HYPERVISOR"] = instance.hypervisor
> -  result["DISK_COUNT"] = "%d" % len(instance.disks)
> +  result["DISK_COUNT"] = "%d" % len(instance.disks_info)
>    result["NIC_COUNT"] = "%d" % len(instance.nics)
>    result["INSTANCE_SECONDARY_NODES"] = \
>        ("%s" % " ".join(instance.secondary_nodes))
>  
>    # Disks
> -  for idx, disk in enumerate(instance.disks):
> +  for idx, disk in enumerate(instance.disks_info):
>      real_disk = _OpenRealBD(disk)
>      result["DISK_%d_PATH" % idx] = real_disk.dev_path
>      result["DISK_%d_ACCESS" % idx] = disk.mode
> diff --git a/lib/objects.py b/lib/objects.py
> index 21890f4..0265bcd 100644
> --- a/lib/objects.py
> +++ b/lib/objects.py
> @@ -1152,6 +1152,7 @@ class Instance(TaggableObject):
>      "admin_state",
>      "nics",
>      "disks",
> +    "disks_info",
>      "disk_template",
>      "disks_active",
>      "network_port",
> @@ -1193,7 +1194,7 @@ class Instance(TaggableObject):
>      if _with_private:
>        bo["osparams_private"] = self.osparams_private.Unprivate()
>  
> -    for attr in "nics", "disks":
> +    for attr in "nics", "disks", "disks_info":
>        alist = bo.get(attr, None)
>        if alist:
>          nlist = outils.ContainerToDicts(alist)
> @@ -1217,6 +1218,7 @@ class Instance(TaggableObject):
>      obj = super(Instance, cls).FromDict(val)
>      obj.nics = outils.ContainerFromDicts(obj.nics, list, NIC)
>      obj.disks = outils.ContainerFromDicts(obj.disks, list, Disk)
> +    obj.disks_info = outils.ContainerFromDicts(obj.disks_info, list, Disk)
>      return obj
>  
>    def UpgradeConfig(self):
> diff --git a/lib/rpc/node.py b/lib/rpc/node.py
> index 7e8425c..19fc018 100644
> --- a/lib/rpc/node.py
> +++ b/lib/rpc/node.py
> @@ -887,7 +887,7 @@ class RpcRunner(_RpcClientBase,
>      idict["osparams"] = cluster.SimpleFillOS(instance.os, instance.osparams)
>      if osp is not None:
>        idict["osparams"].update(osp)
> -    idict["disks"] = self._DisksDictDP(node, (instance.disks, instance))
> +    idict["disks_info"] = self._DisksDictDP(node, (instance.disks, instance))
>      for nic in idict["nics"]:
>        nic["nicparams"] = objects.FillDict(
>          cluster.nicparams[constants.PP_DEFAULT],
> diff --git a/test/py/ganeti.rpc_unittest.py b/test/py/ganeti.rpc_unittest.py
> index 1fc61e2..82cf05c 100755
> --- a/test/py/ganeti.rpc_unittest.py
> +++ b/test/py/ganeti.rpc_unittest.py
> @@ -887,11 +887,11 @@ class TestRpcRunner(unittest.TestCase):
>      self.assertEqual(result["hvparams"][constants.HT_KVM], {
>        constants.HV_BOOT_ORDER: "xyz",
>        })
> -    del result["disks"][0]["ctime"]
> -    del result["disks"][0]["mtime"]
> -    del result["disks"][1]["ctime"]
> -    del result["disks"][1]["mtime"]
> -    self.assertEqual(result["disks"], [{
> +    del result["disks_info"][0]["ctime"]
> +    del result["disks_info"][0]["mtime"]
> +    del result["disks_info"][1]["ctime"]
> +    del result["disks_info"][1]["mtime"]
> +    self.assertEqual(result["disks_info"], [{
>        "dev_type": constants.DT_PLAIN,
>        "dynamic_params": {},
>        "size": 4096,
> -- 
> 1.9.1
> 

-- 
Jose Antonio Lopes
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