Cisco CUCM AXL Library. simple to use.
Project description
Python SDK for Cisco CUCM AXL API
AXL API Documentation
Installation
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!
Reserve a DevNet Sandbox (if required)
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 AXL SOAP Service on CUCM:
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"
Create an AXL Service Account
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:
SDK Usage
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": ""
})
Users
Get All Users
for user in ucm.get_users():
print(user.firstName)
Get Specific User
user = ucm.get_user(user_id='mscott')
print(user.email)
Add User
ucm.add_user(user_id='jlevensailor', last_name='Levensailor', first_name='Jeff')
Delete User
ucm.delete_user(user_id='jlevensailor')
Update User
ucm.update_user(user_id='jlevensailor', password='Lagavulin16', pin='5432')
Phones
Get Phones
for phone in ucm.get_phones():
print(phone.name)
Get Specific Phone
phone = ucm.get_phone(name='SEP001122445566')
print(phone.name)
Add Phone
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')
]
)
Delete Phone
ucm.delete_phone(name='SEP004433220043')
Translations and Transformations
Get Translation Patterns
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', routePartitionName='xlates-pt')
print(trans.description)
Add Translation Pattern
ported = ['12324625544', '12324625545', '12324625546']
for num in ported:
ucm.add_translation(pattern=num, routePartitionName='pstn_pt',calledPartyTransformationMask='1102', callingSearchSpaceName='GW_CSS')
Delete Translation Pattern
ucm.delete_translation(pattern='34567', routePartitionName='xlates-pt')
Update Translation Pattern
ucm.update_translation(pattern='1234', routePartitionName='xlates-pt', newPattern='4567')
Device Pools
Get Device Pools
for dp in ucm.get_device_pools():
print(dp.name)
Get Specific Device Pool
dp = ucm.get_device_pool(name='RTP_DP')
print(dp.name)
Add Device Pool
ucm.add_device_pool(device_pool='Hollywood_DP')
Delete Device Pool
ucm.delete_device_pool(device_pool='Hollywood_DP')
Update Device Pool
ucm.update_device_pool(name='RTP_DP', regionName='G711_RGN')
CSS and Partitions
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)
Add Calling Search Space
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')
Get Partitions
for pt in ucm.get_partitions():
print(pt.name)
Get Specific Partition
pt = ucm.get_partition(routePartitionName='pstn-pt')
print(pt.name)
Add Partition
ucm.add_partition(routePartitionName='VIP_PT', description='Very Important Peep')
Delete Partition
ucm.delete_partition(name='VIP_PT')
Regions and Locations
Get Regions
for reg in ucm.get_regions():
print(reg.uuid)
Get Specific Region
reg = ucm.get_region(region='losfeliz_reg')
print(reg.name)
Add Region
ucm.add_region(region='Hollywood-REG')
Delete Region
ucm.delete_region(region='Hollywood-REG')
Get Locations
for loc in ucm.get_locations():
print(loc.name)
Get Specific Location
loc = ucm.get_location(name='Shadow')
print(loc.name)
Add Location
ucm.add_location(location='Hollywood-LOC')
Delete Location
ucm.delete_location(location='Hollywood-LOC')
Directory Numbers
Get Directory Numbers
for dn in ucm.get_directory_numbers():
print(dn.uuid)
Get Specific Directory Number
dn = ucm.get_directory_number(pattern='2888',routePartitionName='losfeliz-pt')
print(dn.uuid)
Add Directory Number
ucm.add_directory_number(
pattern='1102',
routePartitionName='ABQ_PT'
)
Delete Directory Number
ucm.delete_directory_number(uuid='{0B0CDC93-EC9C-7255-1B09-40A3CE727D5A}')
Device Profiles
Get User Device Profiles
for udp in ucm.get_device_profiles():
print(udp.name)
Get Specific User Device Profile
udp = ucm.get_device_profile(name='udp-bsimpson')
print(udp.name)
Add User Device Profile
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')
]
)
Delete User Device Profile
ucm.delete_device_profile('UDP_Mscott')
CTI Route Points
Get CTI Route Points
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)
Add CTI Route Point
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')
]
)
Delete CTI Route Point
ucm.delete_cti_route_point(name='OneArch')
Route Groups, Lists, and Patterns
List Route Plan
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)
Get Route Groups
for rg in ucm.get_route_groups():
print(rg.name)
Get Specific Route Group
rg = ucm.get_route_group(route_group='losfeliz-rg')
print(rg.uuid)
Add Route Group
ucm.add_route_group(
route_group='hollywood-rg',
distribution_algorithm='Circular',
members=[('america-online-sip'), ('h323')])
Delete Route Group
ucm.delete_route_group(route_group='hollywood-rg')
Get Route Lists
for rl in ucm.get_route_lists():
print(rl.name)
Get Specific Route List
rl = ucm.get_route_list(route_list='stdloc-rl')
print(rl.description)
Add Route List
ucm.add_route_list(
route_list='hollywood-rl',
description='hollywood',
run_on_all_nodes='true',
cm_group_name='Default',
members=[
('losfeliz-rg'),
('silverlake-rg')
])
Delete Route List
ucm.delete_route_list(route_list='hollywood-rl')
Get Route Patterns
for rp in ucm.get_route_patterns():
print(rp.pattern)
Get Specific Route Pattern
rp = ucm.get_route_pattern(pattern='911')
print(rp.description)
Add Route Pattern
ucm.add_route_pattern(
pattern='999',
routePartitionName='losfeliz-pt',
description='Movie Times',
route_list='stdloc-rl'
)
Delete Route Pattern
ucm.delete_route_pattern(pattern='999', routePartitionName='losfeliz-pt')
Runs and Dos
Execute SQL Query
for sql in ucm.run_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)
Reset Device
ucm.do_device_reset(device='SEP001100220033')
Extension Mobility Login
ucm.do_device_login(device='SEP001100220033', userId='bsimpson')
Extension Mobility Logout
ucm.do_device_logout(device='SEP001100220033', userId='bsimpson')
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ciscoaxl-0.164.tar.gz
.
File metadata
- Download URL: ciscoaxl-0.164.tar.gz
- Upload date:
- Size: 2.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.11.5 Darwin/22.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 90ec1d0f82c19bb1e507409c8e6b16a19089ebf1cd1b695fab77af8a1fc3926f |
|
MD5 | 58151b27c05527aa7d2aa117a02bfced |
|
BLAKE2b-256 | 1688297ecb81b20e60cf162e979f695d23a961f84a7f034e9caf24542e527961 |
File details
Details for the file ciscoaxl-0.164-py3-none-any.whl
.
File metadata
- Download URL: ciscoaxl-0.164-py3-none-any.whl
- Upload date:
- Size: 2.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.11.5 Darwin/22.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8db554383e107e7f6927b353b625afd78ae987b8b126013cc7024bd1e0d509d |
|
MD5 | eb89f890ead9c7bc70de9680971bba0b |
|
BLAKE2b-256 | 0c5724aebfb627c4215bde4cc13fd1be8fe7ad20ef3611b721ec67bde891538e |