pip install ciscoaxl
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)
Note: all get methods that return more than 1 item have a tagfilter property that can allow more fields to return. Fields are filtered by default to increase performance, but if you need additional fields returned from the axl call, simply add the tagfilter={} to the request. Example:
get_phones(tagfilter{ "name": "",
"product": "",
"description": "",
"protocol": "",
"locationName": "",
"callingSearchSpaceName": "",
"devicePoolName": ""
})
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')
for trans in ucm.get_translations():
detailed = ucm.get_translation(uuid=trans.uuid)
print(detailed.description)
trans = ucm.get_translation(pattern='2XXX', routePartitionName='xlates-pt')
print(trans.description)
ported = ['12324625544', '12324625545', '12324625546']
for num in ported:
ucm.add_translation(pattern=num, routePartitionName='pstn_pt',calledPartyTransformationMask='1102', callingSearchSpaceName='GW_CSS')
ucm.delete_translation(pattern='34567', routePartitionName='xlates-pt')
ucm.update_translation(pattern='1234', routePartitionName='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')
for css in ucm.get_calling_search_spaces():
print(css.name)
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']
)
ucm.update_calling_search_space(calling_search_space='VIP_CSS')
ucm.delete_calling_search_space(calling_search_space='VIP_CSS')
for pt in ucm.get_partitions():
print(pt.name)
pt = ucm.get_partition(routePartitionName='pstn-pt')
print(pt.name)
ucm.add_partition(routePartitionName='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)
dn = ucm.get_directory_number(directory_number='2888',routePartitionName='losfeliz-pt')
print(dn.uuid)
ucm.add_directory_number(
pattern='1102',
routePartitionName='ABQ_PT'
)
ucm.delete_directory_number(uuid='{0B0CDC93-EC9C-7255-1B09-40A3CE727D5A}')
for udp in ucm.get_device_profiles():
print(udp.name)
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')
]
)
ucm.delete_device_profile('UDP_Mscott')
for cti in ucm.get_cti_route_points():
print(cti.name)
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')
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)
rp = ucm.get_route_pattern(pattern='911')
print(rp.description)
ucm.add_route_pattern(
pattern='999',
routePartitionName='losfeliz-pt',
description='Movie Times',
route_list='stdloc-rl'
)
ucm.delete_route_pattern(pattern='999', routePartitionName='losfeliz-pt')
for sql in ucm.execute_sql_query('select * from device where description like "Bart%"'):
print(sql.name)
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')
ucm.do_device_logout(device='SEP001100220033', userId='bsimpson')