Merge branch 'stable-2.8' into master
authorKlaus Aehlig <aehlig@google.com>
Mon, 15 Jul 2013 14:30:15 +0000 (16:30 +0200)
committerKlaus Aehlig <aehlig@google.com>
Tue, 16 Jul 2013 07:29:52 +0000 (09:29 +0200)
* stable-2.8
  Change method dispatch in ClientOps to enforce luxi.REQ_ALL
  Allow modify_etc_hosts to be changed
  Add --modify-etc-hosts option for CLI tools
  Add luxiReqQueryNetworks to LuxiOp
  Log received message at debug level
  Set the correct group for confd
  Log RPC errors from inside executeRpcCall
  Factor out the logRpcErrors function
  Expose bulk parameter for GetJobs in RAPI client
  Add git send-email to the chroot
  Add tests for CanRead
  Only generate node lists with nodes having different names
  Cluster verify checks server.pem permissions
  Add function for checking file access permissions
  Prevent silent failure in case of connection problems
  Fix apt-get invocation in chroot_builder

* merged from stable-2.7
  Fix RAPI to include missing network fields
  Add support for querying network timestamps
  In the crontab example, look for the correct binary
  Fix wrong numbering in UPGRADE documentation

Conflicts:
devel/build_chroot
lib/client/gnt_cluster.py
Resolved by taking both additions.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>

17 files changed:
1  2 
devel/build_chroot
lib/cli.py
lib/client/gnt_cluster.py
lib/cmdlib/cluster.py
lib/config.py
lib/opcodes.py
lib/query.py
lib/rapi/rlib2.py
lib/server/masterd.py
src/Ganeti/Objects.hs
src/Ganeti/OpCodes.hs
src/Ganeti/OpParams.hs
src/Ganeti/Query/Server.hs
src/Ganeti/Rpc.hs
test/hs/Test/Ganeti/HTools/Node.hs
test/hs/Test/Ganeti/Objects.hs
test/hs/Test/Ganeti/OpCodes.hs

@@@ -119,8 -116,9 +119,9 @@@ in_chroot -- 
  
  #Install selected packages from backports
  in_chroot -- \
 -  apt-get -y --no-install-recommends -t squeeze-backports install \
 +  $APT_INSTALL -t squeeze-backports \
      git \
+     git-email \
      vim
  
  in_chroot -- \
diff --cc lib/cli.py
Simple merge
@@@ -1622,8 -1598,8 +1624,9 @@@ commands = 
       DRBD_HELPER_OPT, NODRBD_STORAGE_OPT, DEFAULT_IALLOCATOR_OPT,
       RESERVED_LVS_OPT, DRY_RUN_OPT, PRIORITY_OPT, PREALLOC_WIPE_DISKS_OPT,
       NODE_PARAMS_OPT, USE_EXTERNAL_MIP_SCRIPT, DISK_PARAMS_OPT, HV_STATE_OPT,
 -     DISK_STATE_OPT, SUBMIT_OPT, ENABLED_DISK_TEMPLATES_OPT,
 -     IPOLICY_STD_SPECS_OPT, MODIFY_ETCHOSTS_OPT] + INSTANCE_POLICY_OPTS,
 +     DISK_STATE_OPT] + SUBMIT_OPTS +
-     [ENABLED_DISK_TEMPLATES_OPT, IPOLICY_STD_SPECS_OPT] + INSTANCE_POLICY_OPTS,
++     [ENABLED_DISK_TEMPLATES_OPT, IPOLICY_STD_SPECS_OPT, MODIFY_ETCHOSTS_OPT] +
++     INSTANCE_POLICY_OPTS,
      "[opts...]",
      "Alters the parameters of the cluster"),
    "renew-crypto": (
Simple merge
diff --cc lib/config.py
Simple merge
diff --cc lib/opcodes.py
Simple merge
diff --cc lib/query.py
Simple merge
@@@ -72,9 -72,9 +72,9 @@@ I_FIELDS = ["name", "admin_state", "os"
              "pnode", "snodes",
              "disk_template",
              "nic.ips", "nic.macs", "nic.modes",
-             "nic.links", "nic.networks", "nic.bridges",
+             "nic.links", "nic.networks", "nic.networks.names", "nic.bridges",
              "network_port",
 -            "disk.sizes", "disk_usage",
 +            "disk.sizes", "disk.spindles", "disk_usage",
              "beparams", "hvparams",
              "oper_state", "oper_ram", "oper_vcpus", "status",
              "custom_hvparams", "custom_beparams", "custom_nicparams",
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -134,17 -112,10 +134,19 @@@ instance Arbitrary Node.Node wher
  -- lists here.
  genNodeList :: Gen Node.Node -> Gen Node.List
  genNodeList ngen = fmap (snd . Loader.assignIndices) names_nodes
-     where names_nodes = (fmap . map) (\n -> (Node.name n, n)) $ listOf1 ngen
+     where names_nodes = (fmap . map) (\n -> (Node.name n, n)) nodes
+           nodes = listOf1 ngen `suchThat`
+                   ((\ns -> ns == nub ns) . map Node.name)
  
 +-- | Node list generator where node names are unique
 +genUniqueNodeList :: Gen Node.Node -> Gen (Node.List, Types.NameAssoc)
 +genUniqueNodeList ngen = (do
 +  nl <- genNodeList ngen
 +  let na = (fst . Loader.assignIndices) $
 +           map (\n -> (Node.name n, n)) (Container.elems nl)
 +  return (nl, na)) `suchThat`
 +    (\(nl, na) -> Container.size nl == Map.size na)
 +
  -- | Generate a node list, an instance list, and a node graph.
  -- We choose instances with nodes contained in the node list.
  genNodeGraph :: Gen (Maybe Graph.Graph, Node.List, Instance.List)
Simple merge
Simple merge