Created
December 30, 2015 00:26
-
-
Save fatred/aa31323dfefa6d9b29a1 to your computer and use it in GitHub Desktop.
prob_of_net-cucm_python-pt4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import suds | |
from suds.client import Client | |
import ssl | |
import logging | |
import sys | |
# ignore ssl pain - python 2.7.9+ only | |
ssl._create_default_https_context = ssl._create_unverified_context | |
# set suds logging to critical only | |
logging.getLogger('suds.client').setLevel(logging.CRITICAL) | |
# if we need to see the soap envelopes for debugging, we can uncomment the below... | |
#handler = logging.StreamHandler(sys.stderr) | |
#logger = logging.getLogger('suds.transport.http') | |
#logger.setLevel(logging.DEBUG), handler.setLevel(logging.DEBUG) | |
#logger.addHandler(handler) | |
# define a function to convert the suds requests to a dict for return to AXL | |
def sudsToDict(data): | |
return dict([(str(key),val) for key,val in data]) | |
# setup creds for auth | |
username = 'admin' | |
passwd = 'well_good_pass()rd' | |
# setup access to the wdsl and the pub | |
# | |
# NOTE: this has localhost:8000 for the wsdl. | |
# the wsdl isnt available on the server (why i will never know) | |
# | |
# two choices: | |
# 1) host the wsdl online somewhere you know, and refer to that | |
# 2) in another terminal browse to the AXLToolkit/ folder | |
# run 'python -m SimpleHTTPServer' in that dir. | |
# that spins up a mini web server you can read the wsdl from... | |
wsdl_url = 'http://localhost:8000/schema/10.5/AXLAPI.wsdl' | |
service_url = 'https://10.31.74.30/axl/' | |
# Create an object to communicate with the API called cucm_server. | |
# this is how we pull and push data into CUCM via XML. | |
cucm_server = Client(wsdl_url, location = service_url, username=username, password=passwd) | |
# read some data in. | |
# | |
print "Checking for user: " | |
try: | |
user_check = cucm_server.service.listUser({'userid':'New_End_User'},{'firstName':'','lastName':'','userid':'','mailid':'','department':'','userLocale':''}) | |
except suds.WebFault, err: | |
print err | |
exit() | |
# Check to see if our request was an error or a success... | |
if len(user_check[0]) > 0: | |
print "User already exists!" | |
exit() | |
else: | |
print "User not found... Continue..." | |
# we only get here when we had a success... | |
# | |
# build a new request object with factory | |
print "Creating user request" | |
new_user_request = cucm_server.factory.create("ns0:AddUserReq") | |
# set the username that we need... | |
print "Updating User request" | |
new_user_request.user.userid = "New_End_User" | |
new_user_request.user.firstName = "API Generated" | |
new_user_request.user.lastName = "End User" | |
new_user_request.user.department = 'API' | |
new_user_request.user.password = 'cisco' | |
new_user_request.user.pin = '08520' | |
new_user_request.user.mailid = 'meh@meh.com' | |
#delete the ones we dont need... | |
del new_user_request.user.authenticationType | |
del new_user_request.user.accountType | |
del new_user_request.user.convertUserAccount | |
del new_user_request.user.ipccExtension | |
del new_user_request.user.nameDialing | |
del new_user_request.user.userIdentity | |
del new_user_request.user.ldapDirectoryName | |
del new_user_request.user.calendarPresence | |
del new_user_request.user.userProfile | |
del new_user_request.user.selfService | |
del new_user_request.user.extensionsInfo | |
del new_user_request.user.pagerNumber | |
del new_user_request.user.homeNumber | |
del new_user_request.user.mobileNumber | |
del new_user_request.user.title | |
del new_user_request.user.telephoneNumber | |
del new_user_request.user.directoryUri | |
del new_user_request.user.lineAppearanceAssociationForPresences | |
del new_user_request.user.serviceProfile | |
del new_user_request.user.imAndPresenceEnable | |
del new_user_request.user.homeCluster | |
del new_user_request.user.customUserFields | |
del new_user_request.user.mlppPassword | |
del new_user_request.user.numericUserId | |
del new_user_request.user.patternPrecedence | |
del new_user_request.user.ctiControlledDeviceProfiles | |
del new_user_request.user.enableEmcc | |
del new_user_request.user.primaryDevice | |
del new_user_request.user.pinCredentials | |
del new_user_request.user.passwordCredentials | |
del new_user_request.user.remoteDestinationLimit | |
del new_user_request.user.maxDeskPickupWaitTime | |
del new_user_request.user.enableMobileVoiceAccess | |
del new_user_request.user.enableMobility | |
del new_user_request.user.subscribeCallingSearchSpaceName | |
del new_user_request.user.presenceGroupName | |
del new_user_request.user.defaultProfile | |
del new_user_request.user.phoneProfiles | |
del new_user_request.user.digestCredentials | |
del new_user_request.user.enableCti | |
del new_user_request.user.associatedGroups | |
del new_user_request.user.associatedPc | |
del new_user_request.user.primaryExtension | |
del new_user_request.user.associatedDevices | |
del new_user_request.user.userLocale | |
del new_user_request.user.manager | |
# convert that to a dict | |
new_user_req_dict = sudsToDict(new_user_request) | |
# push that user object back into call manager with addUser method | |
print "submitting new user request" | |
try: | |
add_new_user_results = cucm_server.service.addUser(**new_user_req_dict) | |
except suds.Webfault, err: | |
print err | |
exit() | |
# we only get where when we had success | |
# | |
print "pulling new user data back..." | |
try: | |
user_check2 = cucm_server.service.listUser({'userid':'New_End_User'},{'firstName':'','lastName':'','userid':'','mailid':'','department':'','userLocale':''}) | |
except suds.WebFault, err: | |
print err | |
exit() | |
# Check to see if our request was an error or a success... | |
if len(user_check2[0]) > 0: | |
print "User created successfully!" | |
print user_check2[0] | |
else: | |
print "FAIL WHALE!!!" | |
print user_check2[0] | |
exit() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment