On Thu, Nov 20, 2014 at 9:18 AM, 'Aaron Karper' via ganeti-devel
<ganeti-devel@googlegroups.com> wrote:
> Currently disks with heterogeneous layouts mixing drbd and externally
> mirrored storage is disallowed, because this changes the logic further.
> This change checks and forbids this, a later change will provide the
> functionality for heterogeneous layouts.
>
> Signed-off-by: Aaron Karper <akar...@google.com>
> ---
>  lib/cmdlib/instance_migration.py | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/lib/cmdlib/instance_migration.py 
> b/lib/cmdlib/instance_migration.py
> index 3ae40ea..52261fb 100644
> --- a/lib/cmdlib/instance_migration.py
> +++ b/lib/cmdlib/instance_migration.py
> @@ -350,7 +350,8 @@ class TLMigrateInstance(Tasklet):
>                                   " %s" % (utils.CommaJoin(invalid_disks), 
> text),
>                                   errors.ECODE_STATE)
>
> -    if self.instance.disk_template in constants.DTS_EXT_MIRROR:
> +    # TODO allow heterogeneous disk types if all are mirrored in some way.
> +    if utils.AllDiskOfType(disks, constants.DTS_EXT_MIRROR):
>        CheckIAllocatorOrNode(self.lu, "iallocator", "target_node")
>
>        if self.lu.op.iallocator:
> @@ -386,7 +387,7 @@ class TLMigrateInstance(Tasklet):
>                       keep=[self.instance.primary_node, 
> self.target_node_uuid])
>          ReleaseLocks(self.lu, locking.LEVEL_NODE_ALLOC)
>
> -    else:
> +    elif utils.AllDiskOfType(disks, constants.DTS_INT_MIRROR):
>        secondary_node_uuids = \
>          self.cfg.GetInstanceSecondaryNodes(self.instance.uuid)
>        if not secondary_node_uuids:
> @@ -414,6 +415,10 @@ class TLMigrateInstance(Tasklet):
>        CheckTargetNodeIPolicy(self.lu, ipolicy, self.instance, nodeinfo,
>                               self.cfg, ignore=self.ignore_ipolicy)
>
> +    else:
> +      raise errors.OpPrereqError("Instance mixes internal and external "
> +                                 "mirroring. This is not currently 
> supported.")
> +
>      i_be = cluster.FillBE(self.instance)
>
>      # check memory requirements on the secondary node
> --
> 2.1.0.rc2.206.gedb03e5
>

LGTM, thanks.
Michele

-- 
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

Reply via email to