Python SDK for Cisco CUCM AXL API
from ciscoaxl import axl
cucm = '10.10.20.1'
username = 'axluser'
password = 'axlpassword'
version = '12.5'
ucm = axl (username = cucm_username ,password = cucm_password ,cucm = cucm ,cucm_version = version )
for user in ucm .get_users ():
print (user .firstName )
user = ucm .get_user (user_id = 'mscott' )
print (user .email )
ucm .add_user (user_id = 'jlevensailor' , last_name = 'Levensailor' , first_name = 'Jeff' )
ucm .delete_user (user_id = 'jlevensailor' )
ucm .update_user (user_id = 'jlevensailor' , password = 'Lagavulin16' , pin = '5432' )
for phone in ucm .get_phones ():
print (phone .name )
phone = ucm .get_phone (name = 'SEP001122445566' )
print (phone .name )
ucm .add_phone (
name = 'SEP0023AF482340' ,
description = 'Robert - 1102' ,
product = 'Cisco 8861' ,
device_pool = 'RTP_DP' ,
location = 'RTP_LOC' ,
phone_template = 'Standard 8861 SIP' ,
protocol = 'SIP' ,
css = 'AVST-CSS' ,
subscribe_css = 'AVST-CSS' ,
lines = [
('1102' , 'ABQ_PT' , 'Robert Smith' , 'Robert Smith' , 'Robert Smith - 1102' , '+1408202XXXX' )
]
)
ucm .delete_phone ('SEP004433220043' )
Translations and Transformations
for trans in ucm .get_translations ():
detailed = ucm .get_translation (uuid = trans .uuid )
print (detailed .description )
Get Specific Translation Pattern
trans = ucm .get_translation (pattern = '2XXX' , partition = 'xlates-pt' )
print (trans .description )
ported = ['12324625544' , '12324625545' , '12324625546' ]
for num in ported :
ucm .add_translation (pattern = num , partition = 'pstn_pt' ,calledPartyTransformationMask = '1102' , callingSearchSpaceName = 'GW_CSS' )
Delete Translation Pattern
ucm .delete_translation (pattern = '34567' , partition = 'xlates-pt' )
Update Translation Pattern
ucm .update_translation (pattern = '1234' , partition = 'xlates-pt' , newPattern = '4567' )
for dp in ucm .get_device_pools ():
print (dp .name )
dp = ucm .get_device_pool (name = 'RTP_DP' )
print (dp .name )
ucm .add_device_pool (device_pool = 'Hollywood_DP' )
ucm .delete_device_pool (device_pool = 'Hollywood_DP' )
ucm .update_device_pool (name = 'RTP_DP' , regionName = 'G711_RGN' )
Get Calling Search Spaces
for css in ucm .get_calling_search_spaces ():
print (css .name )
Get Specific Calling Search Space
css = ucm .get_calling_search_space (calling_search_space = 'pstn-css' )
print (css .name )
ucm .add_calling_search_space (
calling_search_space = 'VIP_CSS' ,
description = 'Very Important Stuff'
members = ['losfeliz-pt' ,'silverlake-pt' ,'pstn-pt' ]
)
Delete Calling Search Space
ucm .update_calling_search_space (calling_search_space = 'VIP_CSS' )
Delete Calling Search Space
ucm .delete_calling_search_space (calling_search_space = 'VIP_CSS' )
for pt in ucm .get_partitions ():
print (pt .name )
pt = ucm .get_partition (partition = 'pstn-pt' )
print (pt .name )
ucm .add_partition (partition = 'VIP_PT' , description = 'Very Important Peep' )
ucm .delete_partition (name = 'VIP_PT' )
for reg in ucm .get_regions ():
print (reg .uuid )
reg = ucm .get_region (region = 'losfeliz_reg' )
print (reg .name )
ucm .add_region (region = 'Hollywood-REG' )
ucm .delete_region (region = 'Hollywood-REG' )
for loc in ucm .get_locations ():
print (loc .name )
loc = ucm .get_location (name = 'Shadow' )
print (loc .name )
ucm .add_location (location = 'Hollywood-LOC' )
ucm .delete_location (location = 'Hollywood-LOC' )
for dn in ucm .get_directory_numbers ():
print (dn .uuid )
Get Specific Directory Number
dn = ucm .get_directory_number (directory_number = '2888' ,partition = 'losfeliz-pt' )
print (dn .uuid )
ucm .add_directory_number (
pattern = '1102' ,
partition = 'ABQ_PT'
)
ucm .delete_directory_number (uuid = '{0B0CDC93-EC9C-7255-1B09-40A3CE727D5A}' )
for udp in ucm .get_device_profiles ():
print (udp .name )
Get Specific User Device Profile
udp = ucm .get_device_profile (profile = 'udp-bsimpson' )
print (udp .name )
ucm .add_device_profile (
profile = 'UDP_MScott' ,
description = 'Michael Scott - 2901' ,
product = 'Cisco 8861' ,
phone_template = 'Standard 8861 SIP' ,
protocol = 'SIP' ,
lines = [
('2901' , 'losfeliz-pt' , 'Michael Scott' , 'Michael Scott' , 'Michael Scott - 2901' , '+1408202XXXX' ),
('2902' , 'losfeliz-pt' , 'Pam Beesley' , 'Pam Beesley' , 'Pam Beesley - 2902' , '+1408202XXXX' )
]
)
Delete User Device Profile
ucm .delete_device_profile ('UDP_Mscott' )
for cti in ucm .get_cti_route_points ():
print (cti .name )
Get Specific CTI Route Point
cti = ucm .get_cti_route_point (cti_route_point = 'AutoAttendant' )
print (cti .name )
ucm .add_cti_route_point (
cti_route_point = 'aa-pilot' ,
description = 'pilot to unity' ,
device_pool = 'LosFeliz_DP' ,
css = 'allphone-css' ,
lines = [
('2908' , 'losfeliz-pt' ),
('2909' , 'losfeliz-pt' )
]
)
ucm .delete_cti_route_point (name = 'OneArch' )
Route Groups, Lists, and Patterns
nums = ['19197016707' , '19197016712' , '19197016713' , '19197016706' , '191970167016' ]
for num in nums :
for route in ucm .list_route_plan (num ):
print (route .dnOrPattern )
for route in ucm .list_route_plan ('2901' ):
print (route .uuid )
for rg in ucm .get_route_groups ():
print (rg .name )
rg = ucm .get_route_group (route_group = 'losfeliz-rg' )
print (rg .uuid )
ucm .add_route_group (
route_group = 'hollywood-rg' ,
distribution_algorithm = 'Circular' ,
members = [('america-online-sip' ), ('h323' )])
ucm .delete_route_group (route_group = 'hollywood-rg' )
for rl in ucm .get_route_lists ():
print (rl .name )
rl = ucm .get_route_list (route_list = 'stdloc-rl' )
print (rl .description )
ucm .add_route_list (
route_list = 'hollywood-rl' ,
description = 'hollywood' ,
run_on_all_nodes = 'true' ,
cm_group_name = 'Default' ,
members = [
('losfeliz-rg' ),
('silverlake-rg' )
])
ucm .delete_route_list (route_list = 'hollywood-rl' )
for rp in ucm .get_route_patterns ():
print (rp .pattern )
Get Specific Route Pattern
rp = ucm .get_route_pattern (pattern = '911' )
print (rp .description )
ucm .add_route_pattern (
pattern = '999' ,
partition = 'losfeliz-pt' ,
description = 'Movie Times' ,
route_list = 'stdloc-rl'
)
ucm .delete_route_pattern (pattern = '999' , partition = 'losfeliz-pt' )
for sql in ucm.execute_sql_query(' select * from device where description like "Bart%"' ):
print(sql.name)
Do LDAP Sync on all agreements
for ldap in ucm.get_ldap_dir ():
ucm.do_ldap_sync(uuid=ldap.uuid)
ucm .do_device_reset (device = 'SEP001100220033' )
ucm .do_device_login (device = 'SEP001100220033' , userId = 'bsimpson' )
Extension Mobility Logout
ucm .do_device_logout (device = 'SEP001100220033' , userId = 'bsimpson' )