diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2013-11-25 10:48:43 -0500 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2013-11-25 10:48:49 -0500 |
commit | a87c59d6f23b4c4fd4e38e380994f2193ca24588 (patch) | |
tree | a19f4e154cb042d64bf9efd5ee305cb1e111db39 /src/lib/Bcfg2/Server | |
parent | a02509650edd374b60ef178d217cda7faab24141 (diff) | |
download | bcfg2-a87c59d6f23b4c4fd4e38e380994f2193ca24588.tar.gz bcfg2-a87c59d6f23b4c4fd4e38e380994f2193ca24588.tar.bz2 bcfg2-a87c59d6f23b4c4fd4e38e380994f2193ca24588.zip |
bcfg2-admin: Restored missing "bcfg2-admin client add ... attrib=val" functionality
Diffstat (limited to 'src/lib/Bcfg2/Server')
-rw-r--r-- | src/lib/Bcfg2/Server/Admin/Client.py | 23 | ||||
-rw-r--r-- | src/lib/Bcfg2/Server/Plugins/Metadata.py | 5 |
2 files changed, 25 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(): diff --git a/src/lib/Bcfg2/Server/Plugins/Metadata.py b/src/lib/Bcfg2/Server/Plugins/Metadata.py index 047dd4f4e..343e14162 100644 --- a/src/lib/Bcfg2/Server/Plugins/Metadata.py +++ b/src/lib/Bcfg2/Server/Plugins/Metadata.py @@ -658,6 +658,11 @@ class Metadata(Bcfg2.Server.Plugin.Metadata, if attribs is None: attribs = dict() if self._use_db: + if attribs: + msg = "Metadata does not support setting client attributes " +\ + "with use_database enabled" + self.logger.error(msg) + raise Bcfg2.Server.Plugin.PluginExecutionError(msg) try: client = MetadataClientModel.objects.get(hostname=client_name) except MetadataClientModel.DoesNotExist: |