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