
Security News
Browserslist-rs Gets Major Refactor, Cutting Binary Size by Over 1MB
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
pip install ciscoaxl
testing in a lab is highly recommended. if you don't have a lab of your own, you can reserve a DevNet Sandbox free of charge!
The DevNet Sandbox is accessible through Cisco DevNet at http://developer.cisco.com
Select Collaboration on the right hand category menu and then look for the “Collaboration 12.5” tile. Hit reserve.
To connect to the lab, you'll need to use VPN.
VPN Credentials will be sent to your DevNet registered email account, or you can view the OUTPUT from the topology page.
Once connected, you can click on the server, in this case CUCM, and select ATTRIBUTES to find username, password, and hostname / ip address.
Enable the AXL SOAP interface
Browse to the CUCM Serviceability page on https://<IP_CUCM>/ccmservice
Tools > Service Activation:
Enable the "Cisco AXL Web Service"
Step 1 - Create an AXL User Group
CUCM > User Management > User Group > Add.
Step 2 - Assign the AXL role to the group
On the top right drop down list "Related Links".
Select "Assign Role to User Group" and select "Standard AXL API Access"
Step 3 - Create a new Application User
CUCM > User Management > Application User > Add.
Add the User Group "AXL Group" to this user so that after saving the roles of the new Application User appear as in the following screen:
from ciscoaxl import axl
cucm = '10.10.20.1'
username = 'axlaccess'
password = 'axlpassword'
version = '12.5'
ucm = axl(username=username,password=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(name='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(pattern='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(name='udp-bsimpson')
print(udp.name)
ucm.add_device_profile(
name='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.run_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')
FAQs
Cisco CUCM AXL Library. simple to use.
We found that ciscoaxl demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Research
Security News
Eight new malicious Firefox extensions impersonate games, steal OAuth tokens, hijack sessions, and exploit browser permissions to spy on users.
Security News
The official Go SDK for the Model Context Protocol is in development, with a stable, production-ready release expected by August 2025.