diff options
author | Roman Rakus <rrakus@redhat.com> | 2012-09-19 12:51:16 +0200 |
---|---|---|
committer | Roman Rakus <rrakus@redhat.com> | 2012-09-19 12:51:16 +0200 |
commit | 9c10f3bbe51fdd7f72e1ae7f89a3574a5e91c796 (patch) | |
tree | 948dd50aa4490c38b95bca150d42bb510aeae663 | |
parent | ef33be52301bfbb9252d5ef337ba95d3b6bccde2 (diff) | |
download | openlmi-providers-9c10f3bbe51fdd7f72e1ae7f89a3574a5e91c796.tar.gz openlmi-providers-9c10f3bbe51fdd7f72e1ae7f89a3574a5e91c796.tar.xz openlmi-providers-9c10f3bbe51fdd7f72e1ae7f89a3574a5e91c796.zip |
account: create account in example script
Signed-off-by: Roman Rakus <rrakus@redhat.com>
-rwxr-xr-x | examples/test_account.py | 83 |
1 files changed, 62 insertions, 21 deletions
diff --git a/examples/test_account.py b/examples/test_account.py index 835e3d3..f36cc7a 100755 --- a/examples/test_account.py +++ b/examples/test_account.py @@ -4,51 +4,65 @@ import sys import pywbem def usage(): - print """Usage: %s <address> <command> <command parameter> [username] [password] + print """Usage: %s <address> <username> <password> <command> [parameter...] Connect to CIM server at address and issue a command on the machine. Available commands and their parameters: - list_user - list users, parameter is user name or * for all - list_group - list groups, parameter is group name or * for all + list_user - list users, parameter is user name or empty for all + list_group - list groups, parameter is group name or empty for all group_members - list members of group, parameter is group name + create_account - creates a new account, parameters: + [0] = Name: required, user login name -Example: %s https://127.0.0.1:5989 list_user * root redhat""" % (sys.argv[0], sys.argv[0]) +Example: %s https://127.0.0.1:5989 root redhat list_user""" % (sys.argv[0], sys.argv[0]) - -if len(sys.argv) < 6: +if len(sys.argv) < 5: usage() sys.exit(1) url = sys.argv[1] -command = sys.argv[2] -parameter = sys.argv[3] username = None password = None -if len(sys.argv) > 4: - username = sys.argv[4] -if len(sys.argv) > 5: - password = sys.argv[5] + +if sys.argv[2]: + username = sys.argv[2] +if sys.argv[3]: + password = sys.argv[3] + +command = sys.argv[4] +parameters = sys.argv[5:] cliconn = pywbem.WBEMConnection(url, (username, password)) if command == "list_user": # Listintg users is simple, just query all instances from LMI_Account # or select only by given Name - if parameter == "*": - instances = cliconn.ExecQuery('WQL', 'select * from LMI_Account') - else: - instances = cliconn.ExecQuery('WQL', 'select * from LMI_Account where Name = "%s"' % parameter) + slct = "select * from LMI_Account" + if parameters: + for i, parameter in enumerate(parameters): + if i==0: + slct += ' where Name = "%s"' % parameter + else: + slct += ' or Name = "%s"' % parameter + + instances = cliconn.ExecQuery('WQL', slct) for instance in instances: print instance.tomof() elif command == "list_group": # Listintg gruops is simple, just query all instances from LMI_Group # or select only by given Name - if parameter == "*": - instances = cliconn.ExecQuery('WQL', 'select * from LMI_Group') - else: - instances = cliconn.ExecQuery('WQL', 'select * from LMI_Group where Name = "%s"' % parameter) + slct = "select * from LMI_Group" + if parameters: + for i, parameter in enumerate(parameters): + if i==0: + slct += ' where Name = "%s"' % parameter + else: + slct += ' or Name = "%s"' % parameter + + + instances = cliconn.ExecQuery('WQL', slct) for instance in instances: print instance.tomof() @@ -59,7 +73,12 @@ elif command == "group_members": # And finally select all accounts (LMI_Account) which are connected through # LMI_AssignedAccountIdentity with selected identities (this should be # 1 to 1) - groups = cliconn.ExecQuery('WQL', 'select * from LMI_Group where Name = "%s"' % parameter) + if not parameters: + usage() + sys.exit(1) + + else: + groups = cliconn.ExecQuery('WQL', 'select * from LMI_Group where Name = "%s"' % parameters[0]) for group in groups: identities = cliconn.Associators(group.path, AssocClass='LMI_MemberOfGroup') for identity in identities: @@ -67,6 +86,28 @@ elif command == "group_members": for account in accounts: print account.tomof() +elif command == "create_account": +# create a new account +# Firstly find system name, which is necessary parameter for method +# then invoke the method + if not parameters: + usage() + sys.exit(1) + + computerSystems = cliconn.ExecQuery('WQL', 'select * from Linux_ComputerSystem') + if not computerSystems: + print >>sys.stderr, "No usable Linux_ComputerSystem instance found." + sys.exit(2) + + if len(computerSystems) > 1: + print >>sys.stderr, "More than one Linux_ComputerSystem instance found, don't know which to use." + sys.exit(3) + + lams = cliconn.ExecQuery('WQL', 'select * from LMI_AccountManagementService')[0] + + print cliconn.InvokeMethod("CreateAccount", lams.path, + Name = parameters[0], + System = computerSystems[0].path) else: # unknown command |