Remove two hlint overrides
[ganeti-local] / lib / client / gnt_network.py
index bd0fe83..562f957 100644 (file)
@@ -1,7 +1,7 @@
 #
 #
 
-# Copyright (C) 2011 Google Inc.
+# Copyright (C) 2011, 2012 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
@@ -20,7 +20,7 @@
 
 """IP pool related commands"""
 
-# pylint: disable-msg=W0401,W0614
+# pylint: disable=W0401,W0614
 # W0401: Wildcard import ganeti.cli
 # W0614: Unused import %s from wildcard import (since we need cli)
 
@@ -32,7 +32,8 @@ from textwrap import wrap
 
 
 #: default list of fields for L{ListNetworks}
-_LIST_DEF_FIELDS = ["name", "network", "gateway", "group_cnt", "group_list"]
+_LIST_DEF_FIELDS = ["name", "network", "gateway",
+                    "network_type", "mac_prefix", "group_list", "tags"]
 
 
 def _HandleReservedIPs(ips):
@@ -43,6 +44,7 @@ def _HandleReservedIPs(ips):
       return utils.UnescapeAndSplit(ips, sep=",")
   return None
 
+
 def AddNetwork(opts, args):
   """Add a network to the cluster.
 
@@ -55,14 +57,22 @@ def AddNetwork(opts, args):
   """
   (network_name, ) = args
 
-  op = opcodes.OpNetworkAdd(network_name=network_name,
-                            gateway=opts.gateway,
-                            network=opts.network,
-                            gateway6=opts.gateway6,
-                            network6=opts.network6,
-                            mac_prefix=opts.mac_prefix,
-                            network_type=opts.network_type,
-                            add_reserved_ips=_HandleReservedIPs(opts.add_reserved_ips))
+  if opts.tags is not None:
+    tags = opts.tags.split(",")
+  else:
+    tags = []
+
+  op = opcodes.OpNetworkAdd(
+                    network_name=network_name,
+                    gateway=opts.gateway,
+                    network=opts.network,
+                    gateway6=opts.gateway6,
+                    network6=opts.network6,
+                    mac_prefix=opts.mac_prefix,
+                    network_type=opts.network_type,
+                    add_reserved_ips=_HandleReservedIPs(opts.add_reserved_ips),
+                    conflicts_check=opts.conflicts_check,
+                    tags=tags)
   SubmitOpCode(op, opts=opts)
 
 
@@ -81,10 +91,10 @@ def MapNetwork(opts, args):
   mode = args[2]
   link = args[3]
 
-  #TODO: allow comma separated group names
-  if groups == 'all':
+  # TODO: allow comma separated group names
+  if groups == "all":
     cl = GetClient()
-    (groups, ) = cl.QueryGroups([], ['name'], False)
+    (groups, ) = cl.QueryGroups([], ["name"], False)
   else:
     groups = [groups]
 
@@ -111,9 +121,9 @@ def UnmapNetwork(opts, args):
   groups = args[1]
 
   #TODO: allow comma separated group names
-  if groups == 'all':
+  if groups == "all":
     cl = GetClient()
-    (groups, ) = cl.QueryGroups([], ['name'], False)
+    (groups, ) = cl.QueryGroups([], ["name"], False)
   else:
     groups = [groups]
 
@@ -138,6 +148,7 @@ def ListNetworks(opts, args):
   fmtoverride = {
     "group_list": (",".join, False),
     "inst_list": (",".join, False),
+    "tags": (",".join, False),
   }
 
   return GenericList(constants.QR_NETWORK, desired_fields, args, None,
@@ -159,10 +170,9 @@ def ListNetworkFields(opts, args):
                            not opts.no_headers)
 
 
-def ShowNetworkConfig(opts, args):
+def ShowNetworkConfig(_, args):
   """Show network information.
 
-  @param opts: the command line options selected by the user
   @type args: list
   @param args: should either be an empty list, in which case
       we show information about all nodes, or should contain
@@ -177,26 +187,29 @@ def ShowNetworkConfig(opts, args):
                                     "mac_prefix", "network_type",
                                     "free_count", "reserved_count",
                                     "map", "group_list", "inst_list",
-                                    "external_reservations"],
+                                    "external_reservations",
+                                    "serial_no", "uuid"],
                             names=args, use_locking=False)
 
   for (name, network, gateway, network6, gateway6,
        mac_prefix, network_type, free_count, reserved_count,
-       map, group_list, instances, ext_res) in result:
+       mapping, group_list, instances, ext_res, serial, uuid) in result:
     size = free_count + reserved_count
     ToStdout("Network name: %s", name)
-    ToStdout("  subnet: %s", network)
-    ToStdout("  gateway: %s", gateway)
-    ToStdout("  subnet6: %s", network6)
-    ToStdout("  gateway6: %s", gateway6)
-    ToStdout("  mac prefix: %s", mac_prefix)
-    ToStdout("  type: %s", network_type)
-    ToStdout("  size: %d", size)
-    ToStdout("  free: %d (%.2f%%)", free_count,
-             100 * float(free_count)/float(size))
-    ToStdout("  usage map:")
+    ToStdout("UUID: %s", uuid)
+    ToStdout("Serial number: %d", serial)
+    ToStdout("  Subnet: %s", network)
+    ToStdout("  Gateway: %s", gateway)
+    ToStdout("  IPv6 Subnet: %s", network6)
+    ToStdout("  IPv6 Gateway: %s", gateway6)
+    ToStdout("  Mac Prefix: %s", mac_prefix)
+    ToStdout("  Type: %s", network_type)
+    ToStdout("  Size: %d", size)
+    ToStdout("  Free: %d (%.2f%%)", free_count,
+             100 * float(free_count) / float(size))
+    ToStdout("  Usage map:")
     idx = 0
-    for line in wrap(map, width=64):
+    for line in wrap(mapping, width=64):
       ToStdout("     %s %s %d", str(idx).rjust(3), line.ljust(64), idx + 63)
       idx += 64
     ToStdout("         (X) used    (.) free")
@@ -220,11 +233,11 @@ def ShowNetworkConfig(opts, args):
                                                 ["nic.ips", "nic.networks"],
                                                 use_locking=False)
 
-        l = lambda value: ", ".join(`idx`+":"+str(ip)
+        l = lambda value: ", ".join(str(idx) + ":" + str(ip)
                                     for idx, (ip, net) in enumerate(value)
                                       if net == name)
 
-        ToStdout("    %s : %s", inst, l(zip(ips,networks)))
+        ToStdout("    %s : %s", inst, l(zip(ips, networks)))
     else:
       ToStdout("  not used by any instances")
 
@@ -256,9 +269,8 @@ def SetNetworkParams(opts, args):
     ToStderr("Please give at least one of the parameters.")
     return 1
 
-  op = opcodes.OpNetworkSetParams(network_name=args[0],
-                                  # pylint: disable-msg=W0142
-                                  **all_changes)
+  # pylint: disable=W0142
+  op = opcodes.OpNetworkSetParams(network_name=args[0], **all_changes)
 
   # TODO: add feedback to user, e.g. list the modifications
   SubmitOrSend(op, opts)
@@ -283,7 +295,8 @@ commands = {
   "add": (
     AddNetwork, ARGS_ONE_NETWORK,
     [DRY_RUN_OPT, NETWORK_OPT, GATEWAY_OPT, ADD_RESERVED_IPS_OPT,
-     MAC_PREFIX_OPT, NETWORK_TYPE_OPT, NETWORK6_OPT, GATEWAY6_OPT],
+     MAC_PREFIX_OPT, NETWORK_TYPE_OPT, NETWORK6_OPT, GATEWAY6_OPT,
+     NOCONFLICTSCHECK_OPT, TAG_ADD_OPT],
     "<network_name>", "Add a new IP network to the cluster"),
   "list": (
     ListNetworks, ARGS_MANY_NETWORKS,
@@ -321,8 +334,19 @@ commands = {
     RemoveNetwork, ARGS_ONE_NETWORK, [FORCE_OPT, DRY_RUN_OPT],
     "[--dry-run] <network_id>",
     "Remove an (empty) network from the cluster"),
+  "list-tags": (
+    ListTags, ARGS_ONE_NETWORK, [],
+    "<network_name>", "List the tags of the given network"),
+  "add-tags": (
+    AddTags, [ArgNetwork(min=1, max=1), ArgUnknown()],
+    [TAG_SRC_OPT, PRIORITY_OPT, SUBMIT_OPT],
+    "<network_name> tag...", "Add tags to the given network"),
+  "remove-tags": (
+    RemoveTags, [ArgNetwork(min=1, max=1), ArgUnknown()],
+    [TAG_SRC_OPT, PRIORITY_OPT, SUBMIT_OPT],
+    "<network_name> tag...", "Remove tags from given network"),
 }
 
 
 def Main():
-  return GenericMain(commands)
+  return GenericMain(commands, override={"tag_type": constants.TAG_NETWORK})