LGTM

On Tue, Jun 17, 2014 at 11:17:47AM +0200, 'Klaus Aehlig' via ganeti-devel wrote:
> 
> 
> commit ec5d7b679bfff011899bce162a5cd5ea46a68a1b
> Merge: e4e926c 6b47261
> Author: Klaus Aehlig <[email protected]>
> Date:   Tue Jun 17 11:02:35 2014 +0200
> 
>     Merge branch 'stable-2.10' into stable-2.11
>     
>     * stable-2.10
>       Export VLAN nicparam to NIC configuration scripts
>       Fix gnt-network client to accept vlan info
>       Fix query mechanism wrt networks and vlans
>       Fix LUNetwork* hooks to comply with docs
>       Fix LUNetworkConnect wrt vlan
>     
>     Conflicts:
>       lib/client/gnt_network.py
>       lib/cmdlib/network.py
>       qa/qa_network.py
>       src/Ganeti/OpParams.hs
>     Resolution:
>       lib/cmdlib/network.py: use stable-2.11 version
>       lib/client/gnt_network.py:  use stable-2.10 version
>       Rest: union of changes
>     
>     Signed-off-by: Klaus Aehlig <[email protected]>
> 
> diff --cc lib/client/gnt_network.py
> index ee06c81,6f67091..f988515
> --- a/lib/client/gnt_network.py
> +++ b/lib/client/gnt_network.py
> @@@ -111,10 -112,11 +112,12 @@@ def ConnectNetwork(opts, args)
>   
>     """
>     cl = GetClient()
>  +  qcl = GetClient(query=True)
>   
> -   (network, mode, link) = args[:3]
> -   groups = _GetDefaultGroups(qcl, args[3:])
> +   network = args[0]
> +   nicparams = objects.FillDict(constants.NICC_DEFAULTS, opts.nicparams)
> + 
> +   groups = _GetDefaultGroups(cl, args[1:])
>   
>     # TODO: Change logic to support "--submit"
>     for group in groups:
> diff --cc lib/cmdlib/network.py
> index 143646b,d93f2dd..dbaf9e8
> --- a/lib/cmdlib/network.py
> +++ b/lib/cmdlib/network.py
> @@@ -390,7 -392,128 +390,6 @@@ class LUNetworkSetParams(LogicalUnit)
>   
>       self.cfg.Update(self.network, feedback_fn)
>   
>  -
>  -class NetworkQuery(QueryBase):
>  -  FIELDS = query.NETWORK_FIELDS
>  -
>  -  def ExpandNames(self, lu):
>  -    lu.needed_locks = {}
>  -    lu.share_locks = ShareAll()
>  -
>  -    self.do_locking = self.use_locking
>  -
>  -    all_networks = lu.cfg.GetAllNetworksInfo()
>  -    name_to_uuid = dict((n.name, n.uuid) for n in all_networks.values())
>  -
>  -    if self.names:
>  -      missing = []
>  -      self.wanted = []
>  -
>  -      for name in self.names:
>  -        if name in name_to_uuid:
>  -          self.wanted.append(name_to_uuid[name])
>  -        else:
>  -          missing.append(name)
>  -
>  -      if missing:
>  -        raise errors.OpPrereqError("Some networks do not exist: %s" % 
> missing,
>  -                                   errors.ECODE_NOENT)
>  -    else:
>  -      self.wanted = locking.ALL_SET
>  -
>  -    if self.do_locking:
>  -      lu.needed_locks[locking.LEVEL_NETWORK] = self.wanted
>  -      if query.NETQ_INST in self.requested_data:
>  -        lu.needed_locks[locking.LEVEL_INSTANCE] = locking.ALL_SET
>  -      if query.NETQ_GROUP in self.requested_data:
>  -        lu.needed_locks[locking.LEVEL_NODEGROUP] = locking.ALL_SET
>  -
>  -  def DeclareLocks(self, lu, level):
>  -    pass
>  -
>  -  def _GetQueryData(self, lu):
>  -    """Computes the list of networks and their attributes.
>  -
>  -    """
>  -    all_networks = lu.cfg.GetAllNetworksInfo()
>  -
>  -    network_uuids = self._GetNames(lu, all_networks.keys(),
>  -                                   locking.LEVEL_NETWORK)
>  -
>  -    do_instances = query.NETQ_INST in self.requested_data
>  -    do_groups = query.NETQ_GROUP in self.requested_data
>  -
>  -    network_to_instances = None
>  -    network_to_groups = None
>  -
>  -    # For NETQ_GROUP, we need to map network->[groups]
>  -    if do_groups:
>  -      all_groups = lu.cfg.GetAllNodeGroupsInfo()
>  -      network_to_groups = dict((uuid, []) for uuid in network_uuids)
>  -      for _, group in all_groups.iteritems():
>  -        for net_uuid in network_uuids:
>  -          netparams = group.networks.get(net_uuid, None)
>  -          if netparams:
>  -            info = (group.name, netparams[constants.NIC_MODE],
>  -                    netparams[constants.NIC_LINK],
>  -                    netparams[constants.NIC_VLAN])
>  -
>  -            network_to_groups[net_uuid].append(info)
>  -
>  -    if do_instances:
>  -      all_instances = lu.cfg.GetAllInstancesInfo()
>  -      network_to_instances = dict((uuid, []) for uuid in network_uuids)
>  -      for instance in all_instances.values():
>  -        for nic in instance.nics:
>  -          if nic.network in network_uuids:
>  -            network_to_instances[nic.network].append(instance.name)
>  -            break
>  -
>  -    if query.NETQ_STATS in self.requested_data:
>  -      stats = \
>  -        dict((uuid,
>  -              self._GetStats(network.AddressPool(all_networks[uuid])))
>  -             for uuid in network_uuids)
>  -    else:
>  -      stats = None
>  -
>  -    return query.NetworkQueryData([all_networks[uuid]
>  -                                   for uuid in network_uuids],
>  -                                   network_to_groups,
>  -                                   network_to_instances,
>  -                                   stats)
>  -
>  -  @staticmethod
>  -  def _GetStats(pool):
>  -    """Returns statistics for a network address pool.
>  -
>  -    """
>  -    return {
>  -      "free_count": pool.GetFreeCount(),
>  -      "reserved_count": pool.GetReservedCount(),
>  -      "map": pool.GetMap(),
>  -      "external_reservations":
>  -        utils.CommaJoin(pool.GetExternalReservations()),
>  -      }
>  -
>  -
>  -class LUNetworkQuery(NoHooksLU):
>  -  """Logical unit for querying networks.
>  -
>  -  """
>  -  REQ_BGL = False
>  -
>  -  def CheckArguments(self):
>  -    self.nq = NetworkQuery(qlang.MakeSimpleFilter("name", self.op.names),
>  -                            self.op.output_fields, self.op.use_locking)
>  -
>  -  def ExpandNames(self):
>  -    self.nq.ExpandNames(self)
>  -
>  -  def Exec(self, feedback_fn):
>  -    return self.nq.OldStyleQuery(self)
>  -
> --
>   def _FmtNetworkConflict(details):
>     """Utility for L{_NetworkConflictCheck}.
>   
> diff --cc qa/qa_network.py
> index ffd069a,63919e0..4dd532f
> --- a/qa/qa_network.py
> +++ b/qa/qa_network.py
> @@@ -100,10 -85,8 +102,12 @@@ def TestNetworkConnect()
>     AssertCommand(["gnt-group", "add", group1])
>     AssertCommand(["gnt-network", "add", "--network", "192.0.2.0/24", 
> network1])
>   
>  +  AssertCommand(["gnt-network", "connect", network1, mode, link, group1])
>  +
>  +  TestNetworkList()
>  +
> +   AssertCommand(["gnt-network", "connect", "--nic-parameters", nicparams,
> +                 network1, group1])
>     AssertCommand(["gnt-network", "disconnect", network1, group1])
>   
>     AssertCommand(["gnt-group", "remove", group1])
> diff --cc src/Ganeti/OpParams.hs
> index 54817d1,ae00822..170cf50
> --- a/src/Ganeti/OpParams.hs
> +++ b/src/Ganeti/OpParams.hs
> @@@ -1680,8 -1632,7 +1681,13 @@@ pNetworkLink 
>     withDoc "Network link when connecting to a group" $
>     simpleField "network_link" [t| NonEmptyString |]
>   
>  +pAdminStateSource :: Field
>  +pAdminStateSource =
>  +  withDoc "Who last changed the instance admin state" .
>  +  optionalField $
>  +  simpleField "admin_state_source" [t| AdminStateSource |]
> ++
> + pNetworkVlan :: Field
> + pNetworkVlan =
> +   withDoc "Network vlan when connecting to a group" $
> +   simpleField "network_vlan" [t| String |]
> diff --cc test/hs/Test/Ganeti/OpCodes.hs
> index b152ed7,383a621..d1d7a49
> --- a/test/hs/Test/Ganeti/OpCodes.hs
> +++ b/test/hs/Test/Ganeti/OpCodes.hs
> @@@ -365,9 -361,11 +365,9 @@@ instance Arbitrary OpCodes.OpCode wher
>             genMaybe (listOf genIPv4Address)
>         "OP_NETWORK_CONNECT" ->
>           OpCodes.OpNetworkConnect <$> genNameNE <*> genNameNE <*>
> -           arbitrary <*> genNameNE <*> arbitrary
> +           arbitrary <*> genNameNE <*> arbitrary <*> arbitrary
>         "OP_NETWORK_DISCONNECT" ->
>           OpCodes.OpNetworkDisconnect <$> genNameNE <*> genNameNE
>  -      "OP_NETWORK_QUERY" ->
>  -        OpCodes.OpNetworkQuery <$> genFieldsNE <*> arbitrary <*> genNamesNE
>         "OP_RESTRICTED_COMMAND" ->
>           OpCodes.OpRestrictedCommand <$> arbitrary <*> genNodeNamesNE <*>
>             return Nothing <*> genNameNE
> 
> -- 
> Klaus Aehlig
> Google Germany GmbH, Dienerstr. 12, 80331 Muenchen
> Registergericht und -nummer: Hamburg, HRB 86891
> Sitz der Gesellschaft: Hamburg
> Geschaeftsfuehrer: Graham Law, Christine Elizabeth Flores

Reply via email to