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.py23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/lib/Bcfg2/Server/Admin/Client.py b/src/lib/Bcfg2/Server/Admin/Client.py
index 187ccfd71..4eb67a9de 100644
--- a/src/lib/Bcfg2/Server/Admin/Client.py
+++ b/src/lib/Bcfg2/Server/Admin/Client.py
@@ -5,6 +5,18 @@ import Bcfg2.Server.Admin
from Bcfg2.Server.Plugin import MetadataConsistencyError
+def get_attribs(args):
+ 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]"
@@ -16,14 +28,19 @@ 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:
+ 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 in adding client: %s" % sys.exc_info()[1])
+ 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:
- self.errExit("Error in deleting client: %s" %
+ self.errExit("Error deleting client: %s" %
sys.exc_info()[1])
elif args[0] in ['list', 'ls']:
for client in self.metadata.list_clients():