Below is a patch to the spacecmd user.py file to provide support for the 
Spacewalk API of user.setDetails.

-----

--- spacecmd/user.py    2013-03-03 22:53:56.000000000 -0600
+++ spacecmd/user.py    2013-04-18 18:28:02.099910821 -0500
@@ -449,4 +449,147 @@
                                                user, 
                                                groups)
 
+####################
+
+def help_user_setfirstname(self):
+    print 'user_setfirstname: Set an user accounts first name field'
+    print 'usage: user_setfirstname USER FIRST_NAME'
+
+def complete_user_setfirstname(self, text, line, beg, end):
+    parts = shlex.split(line)
+    if line[-1] == ' ': parts.append(' ')
+
+    if len(parts) == 2:
+        return tab_completer(self.do_user_list('', True), text)
+    elif len(parts) > 2:
+        return
+
+def do_user_setfirstname(self, args):
+    (args, options) = parse_arguments(args)
+
+    if len(args) != 2:
+        self.help_user_setfirstname()
+        return
+
+    user = args.pop(0)
+    details = { 'first_name' : args.pop(0) }
+
+    self.client.user.setDetails(self.session, user, details)
+
+####################
+
+def help_user_setlastname(self):
+    print 'user_setlastname: Set an user accounts last name field'
+    print 'usage: user_setlastname USER LAST_NAME'
+
+def complete_user_setlastname(self, text, line, beg, end):
+    parts = shlex.split(line)
+    if line[-1] == ' ': parts.append(' ')
+
+    if len(parts) == 2:
+        return tab_completer(self.do_user_list('', True), text)
+    elif len(parts) > 2:
+        return
+
+def do_user_setlastname(self, args):
+    (args, options) = parse_arguments(args)
+
+    if len(args) != 2:
+        self.help_user_setlastname()
+        return
+
+    user = args.pop(0)
+    details = { 'last_name' : args.pop(0) }
+
+    self.client.user.setDetails(self.session, user, details)
+
+####################
+
+def help_user_setemail(self):
+    print 'user_setemail: Set an user accounts email field'
+    print 'usage: user_setemail USER EMAIL'
+
+def complete_user_setemail(self, text, line, beg, end):
+    parts = shlex.split(line)
+    if line[-1] == ' ': parts.append(' ')
+
+    if len(parts) == 2:
+        return tab_completer(self.do_user_list('', True), text)
+    elif len(parts) > 2:
+        return
+
+def do_user_setemail(self, args):
+    (args, options) = parse_arguments(args)
+
+    if len(args) != 2:
+        self.help_user_setemail()
+        return
+
+    user = args.pop(0)
+    details = { 'email' : args.pop(0) }
+
+    self.client.user.setDetails(self.session, user, details)
+
+####################
+
+def help_user_setprefix(self):
+    print 'user_setprefix: Set an user accounts name prefix field'
+    print 'usage: user_setprefix USER PREFIX'
+
+def complete_user_setprefix(self, text, line, beg, end):
+    parts = shlex.split(line)
+    if line[-1] == ' ': parts.append(' ')
+
+    if len(parts) == 2:
+        return tab_completer(self.do_user_list('', True), text)
+    elif len(parts) > 2:
+        return
+
+def do_user_setprefix(self, args):
+    (args, options) = parse_arguments(args)
+
+    if len(args) > 2:
+        self.help_user_setprefix()
+        return
+
+    user = args.pop(0)
+    if len(args) == 0:
+        # clearing prefix with a space currently does not work
+        # spacewalk requires a space to clear the prefix but the
+        # space seems to be stripped when submitted to the API gateway
+        # attempts to use %x20 and \u0020 (among others) also fail
+        details = { 'prefix' : ' ' }
+    else:
+        details = { 'prefix' : args.pop(0) }
+
+    self.client.user.setDetails(self.session, user, details)
+
+####################
+
+def help_user_setpassword(self):
+    print 'user_setpassword: Set an user accounts name prefix field'
+    print 'usage: user_setpassword USER PASSWORD'
+
+def complete_user_setpassword(self, text, line, beg, end):
+    parts = shlex.split(line)
+    if line[-1] == ' ': parts.append(' ')
+
+    if len(parts) == 2:
+        return tab_completer(self.do_user_list('', True), text)
+    elif len(parts) > 2:
+        return
+
+def do_user_setpassword(self, args):
+    (args, options) = parse_arguments(args)
+
+    if len(args) != 2:
+        self.help_user_setpassword()
+        return
+
+    user = args.pop(0)
+    details = { 'password' : args.pop(0) }
+
+    self.client.user.setDetails(self.session, user, details)
+
+
 # vim:ts=4:expandtab:

_______________________________________________
Spacewalk-devel mailing list
Spacewalk-devel@redhat.com
https://www.redhat.com/mailman/listinfo/spacewalk-devel

Reply via email to