summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorRoman Rakus <rrakus@redhat.com>2012-09-19 12:51:16 +0200
committerRoman Rakus <rrakus@redhat.com>2012-09-19 12:51:16 +0200
commit9c10f3bbe51fdd7f72e1ae7f89a3574a5e91c796 (patch)
tree948dd50aa4490c38b95bca150d42bb510aeae663 /examples
parentef33be52301bfbb9252d5ef337ba95d3b6bccde2 (diff)
downloadopenlmi-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>
Diffstat (limited to 'examples')
-rwxr-xr-xexamples/test_account.py83
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