On Fri, Jan 31, 2014 at 11:46 AM, Jose A. Lopes <[email protected]> wrote:
> * Add command-line interface flag to enable instance communication
> * Add instance communication parameter to the opcode that creates an instance
>
> Signed-off-by: Jose A. Lopes <[email protected]>
> ---
>  lib/cli.py                     | 68 
> +++++++++++++++++++++++++-----------------
>  lib/client/gnt_instance.py     |  3 +-
>  src/Ganeti/Constants.hs        |  6 +++-
>  src/Ganeti/OpCodes.hs          |  3 +-
>  src/Ganeti/OpParams.hs         |  8 ++++-
>  test/hs/Test/Ganeti/OpCodes.hs |  3 +-
>  6 files changed, 58 insertions(+), 33 deletions(-)
>
> diff --git a/lib/cli.py b/lib/cli.py
> index ad6c5bc..21407ac 100644
> --- a/lib/cli.py
> +++ b/lib/cli.py
> @@ -1,7 +1,7 @@
>  #
>  #
>
> -# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Google Inc.
> +# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Google 
> Inc.
>  #
>  # This program is free software; you can redistribute it and/or modify
>  # it under the terms of the GNU General Public License as published by
> @@ -115,6 +115,7 @@ __all__ = [
>    "IGNORE_SIZE_OPT",
>    "INCLUDEDEFAULTS_OPT",
>    "INTERVAL_OPT",
> +  "INSTANCE_COMMUNICATION_OPT",
>    "MAC_PREFIX_OPT",
>    "MAINTAIN_NODE_HEALTH_OPT",
>    "MASTER_NETDEV_OPT",
> @@ -1686,6 +1687,13 @@ HOTPLUG_IF_POSSIBLE_OPT = 
> cli_option("--hotplug-if-possible",
>                                       help="Hotplug devices in case"
>                                            " hotplug is supported")
>
> +INSTANCE_COMMUNICATION_OPT = \
> +    cli_option("-c", "--communication",
> +               default=False,
> +               dest="instance_communication",
> +               help=constants.INSTANCE_COMMUNICATION_DOC,
> +               type="bool")
> +
>  #: Options provided by all commands
>  COMMON_OPTS = [DEBUG_OPT, REASON_OPT]
>
> @@ -2727,6 +2735,7 @@ def GenericInstanceCreate(mode, opts, args):
>      no_install = opts.no_install
>      identify_defaults = False
>      compress = constants.IEC_NONE
> +    instance_communication = opts.instance_communication
>    elif mode == constants.INSTANCE_IMPORT:
>      start = False
>      os_type = None
> @@ -2736,36 +2745,39 @@ def GenericInstanceCreate(mode, opts, args):
>      no_install = None
>      identify_defaults = opts.identify_defaults
>      compress = opts.compress
> +    instance_communication = False
>    else:
>      raise errors.ProgrammerError("Invalid creation mode %s" % mode)
>
> -  op = opcodes.OpInstanceCreate(instance_name=instance,
> -                                disks=disks,
> -                                disk_template=opts.disk_template,
> -                                nics=nics,
> -                                conflicts_check=opts.conflicts_check,
> -                                pnode=pnode, snode=snode,
> -                                ip_check=opts.ip_check,
> -                                name_check=opts.name_check,
> -                                wait_for_sync=opts.wait_for_sync,
> -                                file_storage_dir=opts.file_storage_dir,
> -                                file_driver=opts.file_driver,
> -                                iallocator=opts.iallocator,
> -                                hypervisor=hypervisor,
> -                                hvparams=hvparams,
> -                                beparams=opts.beparams,
> -                                osparams=opts.osparams,
> -                                mode=mode,
> -                                start=start,
> -                                os_type=os_type,
> -                                force_variant=force_variant,
> -                                src_node=src_node,
> -                                src_path=src_path,
> -                                compress=compress,
> -                                tags=tags,
> -                                no_install=no_install,
> -                                identify_defaults=identify_defaults,
> -                                ignore_ipolicy=opts.ignore_ipolicy)
> +  op = opcodes.OpInstanceCreate(
> +    instance_name=instance,
> +    disks=disks,
> +    disk_template=opts.disk_template,
> +    nics=nics,
> +    conflicts_check=opts.conflicts_check,
> +    pnode=pnode, snode=snode,
> +    ip_check=opts.ip_check,
> +    name_check=opts.name_check,
> +    wait_for_sync=opts.wait_for_sync,
> +    file_storage_dir=opts.file_storage_dir,
> +    file_driver=opts.file_driver,
> +    iallocator=opts.iallocator,
> +    hypervisor=hypervisor,
> +    hvparams=hvparams,
> +    beparams=opts.beparams,
> +    osparams=opts.osparams,
> +    mode=mode,
> +    start=start,
> +    os_type=os_type,
> +    force_variant=force_variant,
> +    src_node=src_node,
> +    src_path=src_path,
> +    compress=compress,
> +    tags=tags,
> +    no_install=no_install,
> +    identify_defaults=identify_defaults,
> +    ignore_ipolicy=opts.ignore_ipolicy,
> +    instance_communication=instance_communication)

Usually, our style guide states that in python we should indent on the
same level as the open parenthesis.
I guess (I'm not counting it) that the line that is being added is too
long to be aligned in such a way.

Provided this is the reason of the change, I agree with rewriting this
block of code this way, as long as it doesn't trigger lint errors.

>
>    SubmitOrSend(op, opts)
>    return 0
> diff --git a/lib/client/gnt_instance.py b/lib/client/gnt_instance.py
> index e761a9a..f6d270b 100644
> --- a/lib/client/gnt_instance.py
> +++ b/lib/client/gnt_instance.py
> @@ -1,7 +1,7 @@
>  #
>  #
>
> -# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Google Inc.
> +# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2014 Google Inc.
>  #
>  # This program is free software; you can redistribute it and/or modify
>  # it under the terms of the GNU General Public License as published by
> @@ -1479,6 +1479,7 @@ add_opts = [
>    FORCE_VARIANT_OPT,
>    NO_INSTALL_OPT,
>    IGNORE_IPOLICY_OPT,
> +  INSTANCE_COMMUNICATION_OPT,
>    ]
>
>  commands = {
> diff --git a/src/Ganeti/Constants.hs b/src/Ganeti/Constants.hs
> index 533ec6a..9e008fe 100644
> --- a/src/Ganeti/Constants.hs
> +++ b/src/Ganeti/Constants.hs
> @@ -16,7 +16,7 @@ imported.
>
>  {-
>
> -Copyright (C) 2013 Google Inc.
> +Copyright (C) 2013, 2014 Google Inc.

Thanks for updating the copyright dates in the files you touched. :-)

>
>  This program is free software; you can redistribute it and/or modify
>  it under the terms of the GNU General Public License as published by
> @@ -4764,6 +4764,10 @@ glusterPortDefault = 24007
>
>  -- * Instance communication
>
> +instanceCommunicationDoc :: String
> +instanceCommunicationDoc =
> +  "Enable or disable the communication mechanism for an instance"
> +
>  instanceCommunicationNetwork :: String
>  instanceCommunicationNetwork = "ganeti:network:communication"
>
> diff --git a/src/Ganeti/OpCodes.hs b/src/Ganeti/OpCodes.hs
> index 9c9d736..bee6449 100644
> --- a/src/Ganeti/OpCodes.hs
> +++ b/src/Ganeti/OpCodes.hs
> @@ -7,7 +7,7 @@
>
>  {-
>
> -Copyright (C) 2009, 2010, 2011, 2012, 2013 Google Inc.
> +Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Google Inc.
>
>  This program is free software; you can redistribute it and/or modify
>  it under the terms of the GNU General Public License as published by
> @@ -452,6 +452,7 @@ $(genOpCode "OpCode"
>       , pBackupCompress
>       , pStartInstance
>       , pInstTags
> +     , pInstanceCommunication
>       ],
>       "instance_name")
>    , ("OpInstanceMultiAlloc",
> diff --git a/src/Ganeti/OpParams.hs b/src/Ganeti/OpParams.hs
> index 11d62f6..127c5d6 100644
> --- a/src/Ganeti/OpParams.hs
> +++ b/src/Ganeti/OpParams.hs
> @@ -12,7 +12,7 @@ module.
>
>  {-
>
> -Copyright (C) 2012 Google Inc.
> +Copyright (C) 2012, 2014 Google Inc.
>
>  This program is free software; you can redistribute it and/or modify
>  it under the terms of the GNU General Public License as published by
> @@ -44,6 +44,7 @@ module Ganeti.OpParams
>    , SetParamsMods(..)
>    , ExportTarget(..)
>    , pInstanceName
> +  , pInstanceCommunication
>    , pInstanceUuid
>    , pInstances
>    , pName
> @@ -984,6 +985,11 @@ pInstanceName =
>    withDoc "A required instance name (for single-instance LUs)" $
>    simpleField "instance_name" [t| String |]
>
> +pInstanceCommunication :: Field
> +pInstanceCommunication =
> +  withDoc C.instanceCommunicationDoc $
> +  defaultFalse "instance_communication"
> +
>  pForceVariant :: Field
>  pForceVariant =
>    withDoc "Whether to force an unknown OS variant" $
> diff --git a/test/hs/Test/Ganeti/OpCodes.hs b/test/hs/Test/Ganeti/OpCodes.hs
> index 5157801..90bc091 100644
> --- a/test/hs/Test/Ganeti/OpCodes.hs
> +++ b/test/hs/Test/Ganeti/OpCodes.hs
> @@ -241,7 +241,8 @@ instance Arbitrary OpCodes.OpCode where
>            genMaybe genNodeNameNE <*> return Nothing <*> genMaybe (pure []) 
> <*>
>            genMaybe genNodeNameNE <*> arbitrary <*> genMaybe genNodeNameNE <*>
>            return Nothing <*> genMaybe genNodeNameNE <*> genMaybe genNameNE 
> <*>
> -          arbitrary <*> arbitrary <*> (genTags >>= mapM mkNonEmpty)
> +          arbitrary <*> arbitrary <*> (genTags >>= mapM mkNonEmpty) <*>
> +          arbitrary
>        "OP_INSTANCE_MULTI_ALLOC" ->
>          OpCodes.OpInstanceMultiAlloc <$> arbitrary <*> genMaybe genNameNE <*>
>          pure []
> --
> 1.8.5.3
>

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