summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Admin/Client.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Bcfg2/Server/Admin/Client.py')
-rw-r--r--src/lib/Bcfg2/Server/Admin/Client.py34
1 files changed, 24 insertions, 10 deletions
diff --git a/src/lib/Bcfg2/Server/Admin/Client.py b/src/lib/Bcfg2/Server/Admin/Client.py
index 570e993ed..325b7ae6e 100644
--- a/src/lib/Bcfg2/Server/Admin/Client.py
+++ b/src/lib/Bcfg2/Server/Admin/Client.py
@@ -5,9 +5,22 @@ import Bcfg2.Server.Admin
from Bcfg2.Server.Plugin import MetadataConsistencyError
+def get_attribs(args):
+ """ Get a list of attributes to set on a client when adding/updating it """
+ attr_d = {}
+ for i in args[2:]:
+ attr, val = i.split('=', 1)
+ if attr not in ['profile', 'uuid', 'password', 'floating', 'secure',
+ 'address', 'auth']:
+ print("Attribute %s unknown" % attr)
+ raise SystemExit(1)
+ attr_d[attr] = val
+ return attr_d
+
+
class Client(Bcfg2.Server.Admin.MetadataCore):
""" Create, delete, or list client entries """
- __usage__ = "[options] [add|del|list] [attr=val]"
+ __usage__ = "[options] [add|del|update|list] [attr=val]"
__plugin_whitelist__ = ["Metadata"]
def __call__(self, args):
@@ -16,21 +29,22 @@ class Client(Bcfg2.Server.Admin.MetadataCore):
"Usage: %s" % self.__usage__)
if args[0] == 'add':
try:
- self.metadata.add_client(args[1])
+ self.metadata.add_client(args[1], get_attribs(args))
except MetadataConsistencyError:
- err = sys.exc_info()[1]
- print("Error in adding client: %s" % err)
- raise SystemExit(1)
+ self.errExit("Error adding client: %s" % sys.exc_info()[1])
+ elif args[0] in ['update', 'up']:
+ try:
+ self.metadata.update_client(args[1], get_attribs(args))
+ except MetadataConsistencyError:
+ self.errExit("Error updating client: %s" % sys.exc_info()[1])
elif args[0] in ['delete', 'remove', 'del', 'rm']:
try:
self.metadata.remove_client(args[1])
except MetadataConsistencyError:
- err = sys.exc_info()[1]
- print("Error in deleting client: %s" % err)
- raise SystemExit(1)
+ self.errExit("Error deleting client: %s" %
+ sys.exc_info()[1])
elif args[0] in ['list', 'ls']:
for client in self.metadata.list_clients():
print(client)
else:
- print("No command specified")
- raise SystemExit(1)
+ self.errExit("No command specified")