#!/usr/bin/python
#
# This example is based upon openlmi-account provider and adds a user account
# to the given group on managed system.
#
# To make this example work, modify following variables:
# hostname
# username
# password
# account
# group
import lmiwbem
hostname = "hostname"
username = "username"
password = "password"
account = "account"
group = "group"
# Connect to CIMOM
conn = lmiwbem.WBEMConnection()
conn.connect(hostname, username, password)
# Create LMI_Account instance name
account_iname = lmiwbem.CIMInstanceName(
"LMI_Account",
lmiwbem.NocaseDict({
"CreationClassName" : "LMI_Account",
"Name" : account,
"SystemCreationClassName" : "PG_ComputerSystem",
"SystemName" : hostname}),
hostname,
"root/cimv2")
# Get account LMI_Identity association
identity_iname = conn.AssociatorNames(
account_iname,
ResultClass="LMI_Identity")[0]
# Create LMI_Group instance name
group_iname = lmiwbem.CIMInstanceName(
"LMI_Group",
lmiwbem.NocaseDict({
"CreationClassName" : "LMI_Group",
"Name" : group}),
hostname,
"root/cimv2")
if 1:
# Prepare LMI_MemberOfGroup instance
member_of_group = lmiwbem.CIMInstance(
"LMI_MemberOfGroup",
lmiwbem.NocaseDict({
"Member" : identity_iname,
"Collection" : group_iname}),
# No qualifiers
None,
lmiwbem.CIMInstanceName(
"LMI_MemberOfGroup",
# No keybindings; Member and Collection are not key properties in
# LMI_MemberOfGroup
None,
hostname,
"root/cimv2"))
# Create new instance of LMI_MemberOfGroup
new_iname = conn.CreateInstance(member_of_group)
else:
# CIMInstance can be constructed without CIMInstanceName.
member_of_group = lmiwbem.CIMInstance(
"LMI_MemberOfGroup",
lmiwbem.NocaseDict({
"Member" : identity_iname,
"Collection" : group_iname}),
# No qualifiers
None,
# No path
None)
# Create new instance of LMI_MemberOfGroup
new_iname = conn.CreateInstance(member_of_group, "root/cimv2")
# Do something with new CIMInstanceName
print new_iname
# Disconnect from CIMOM
conn.disconnect()