A command line utility, pollreg-utility, is used to configure CMTS registrations in deployments of ServAssure Collection Platform. The utility can be used for listing existing registrations, importing new/updated registrations, or deleting registrations. The utility uses the ServAssure Collection Platform registration API for managing registrations.
The pollreg-utility can be found in the ServAssure Collection Platform installation package in the /roles/docsis-manager/files directory. The utility can either be used on the host that runs Ansible installation and configuration playbooks or can be copied to another location.
Using pollreg-utility
python --versionIf running python2, use the file pollreg-utility.py.
If running python3, use the file pollreg-utility3.py.
pollreg-utility syntax:
pollreg-utility[3].py [-h] [--url URL] [--user USER] [--password PASSWORD]
[--cmts CMTS] [--registration REGISTRATION]
[{list,update,refresh,deleteAll,cmtsconfigs,fingerprints,discovery,delete}]
[file]Parameter descriptions:
- --h, --help
- Show the help message and exit
- --url URL
- Collection Manager URL
- --user USER
- User to access Collection Manager
- --password PASSWORD
- Password to access Collection Manager
- --cmts CMTS
- CMTS ID for discovery and delete commands
- --registration REGISTRATION
- Registration ID for the delete command
- {list,update,refresh,deleteAll,cmtsconfigs,fingerprints,discovery,delete}
- Command to execute in addition to arguments that define the action for the utility to take. See the example below for uses of each argument.
- file
- File path for update command inputs.
The following example illustrates how to construct pollreg-utility commands to modify the ServAssure Collection Manager registration database.
# Command format – referred to as $COMMAND_PREFIX in examples below
python pollreg-utility.py --url http://<docsis-manager-host>:8085/ --user <docsis-manager-api-username> --password <docsis-manager-api-password>
# For a system with python 3, use "pollreg-utility3.py"
# Follow the above command with the below examples to alter the DOCSIS Manager registration database
# List/export current registrations
$COMMAND_PREFIX list
# Import exported or backup registrations
$COMMAND_PREFIX --backupdir /opt/arris/regBackups --backupname backupFileName update pollRegistrations.lst
# List CMTS Configs
$COMMAND_PREFIX cmtsconfigs
# List fingerprint information - saves file to fingerprints.json
$COMMAND_PREFIX fingerprints
# List discovery information for specific CMTS ID – saves file to discovery.json
$COMMAND_PREFIX discovery --cmts <CMTS_ID e.g-EASTUSCMTS01>
# Delete all registrations
$COMMAND_PREFIX deleteAll
# Delete registrations for specific CMTS ID
$COMMAND_PREFIX delete --cmts <CMTS_ID e.g-EASTUSCMTS01>
# Delete single registration by registration ID
$COMMAND_PREFIX delete --registration <REG_ID e.g-EASTUSCMTS01.docsis_mta.saa_starnode01>
Registration back up
Each time an update operation is run, the CMTS registration is retrieved and optionally backed up for storage and reference. ServAssure Collection Platform stores a maximum of 10 backup files; when another file is backed up after the maximum is reached, the oldest previously stored file is deleted. Backup files do not have a maximum age. There is no unique command to perform a restore operation. You can run the update command with the filename of a specific backup file to import a previous CMTS registration.
python pollreg-utility.py --url http://192.0.2.0:8085/ --user admin --password password --backupdir /opt/arris/regBackups --backupname backupForV3 update newReg.lstThe
result is creation of a backup file at the designated path, with a filename that includes
the designated name appended by IP and date information. The example operation above creates
the following backup file:
/opt/arris/regBackups/backupForV3.192.0.2.0.2023-02-27.1677510941If
you do not provide the backup parameters, the update proceeds without backing up the current
CMTS registration.Poll registration
- Profile name
- SNMP collection parameter set
- Poll schedule
- Quartz schedule expression
- Requester IP
- Required for legacy but not used. Set to static string such as python_utility. Will be removed in a future version.
- Registration ID
- Registration identifier in the format <cmtsId>.<profileName>.<requesterIp>
- CMTS/CM/MTA config
- Read/write community strings, CLI authentication, network partitions, and other information.
Base profiles
The following table highlights a base set of profiles, schedules1, and timeouts to enable for enrichment data along with some supplemental profiles for other features.
| Profile name | Recommended profile schedule | Profile collection timeout (ms) |
|---|---|---|
| docsis_cm_preeq | 0 5 * * * ? | 1490000 |
| docsis_cm_attributes | 0 35 3,9,15,21 * * ? | 1490000 |
| docsis_mta | 0 30 * * * ? | 1490000 |
| docsis_cmts_cm_topology | 0 5,20,35,50 * * * ? | 890000 |
| docsis_cmts_cpu | 0 5,20,35,50 * * * ? | 890000 |
| docsis_cmts_11_qos | 0 18 * * * ? | 1800000 |
| docsis_cmts_slow_ipv4v6 | 0 2 * * * ? | 2400000 |
| docsis_cmts_interface | 0 5,20,35,50 * * * ? | 890000 |
When adding or updating registrations, the utility takes a text file as input where each line of text file is a well formed JSON object containing poll registration information. The example below shows a set of registrations for a particular CMTS with the above base profile and network region “us-east” (default region would be “default”). For each CMTS to be registered for polling, the example below can be used, but the fields in each registration for CMTS ID, CMTS IP, CMTS CLI details, CMTS/CM/MTA read/write community strings must be changed for the actual CMTS to be registered.
- Lines in the registration file starting with # are treated as comments and are ignored.
- The value in the poll schedule column uses Quartz expressions that are slightly different than standard CRON expressions.
- Timeout values must be set such that the polls will time out before the next poll starts. For example, if a poll is running, an hourly timeout should be set to less than an hour.
{{"profile": "docsis_mta", "pollSchedule": {"priority": 1, "type": "cron", "schedule": "0 30 * * * ?"}, "registrationId": "Mimic_E6K_v8_Jun2021.docsis_mta.python_utility", "responseUrl": "urn:null", "args": {}, "requesterIp": "python_utility", "devices": {"snmpConfig": {"version": "v2c", "collectionTimeout": 1490000, "communityString": ["public"]}, "list": [{"ip": "10.184.63.2", "id": "Mimic_E6K_v8_Jun2021"}], "groupId": "Mimic_E6K_v8_Jun2021"}, "handBack": {}, "writeCommunityStrings": [{"mtaWriteCommunityStr": ["private"], "cmReadCommunityStr": ["public", "private"], "readCommunityStr": ["public"], "ip": "10.184.1.1", "writeCommunityStr": ["private"], "ipv6Preference": false, "ipdrInfo": [], "cliUser": "e6k", "cliType": null, "cliPassword": "secret", "cliPrompt": null, "networkPartition": "default", "cmWriteCommunityStr": ["private"], "id": "Mimic_E6K_v8_Jun2021", "mtaReadCommunityStr": ["public"]}]}
{"profile": "docsis_cmts_cpu", "pollSchedule": {"priority": 1, "type": "cron", "schedule": “0 5,20,35,50 * * * ?"}, "registrationId": "Mimic_E6K_v8_Jun2021.docsis_cmts_cpu.python_utility", "responseUrl": "urn:null", "args": {}, "requesterIp": "python_utility", "devices": {"snmpConfig": {"version": "v2c", "collectionTimeout": 890000, "communityString": ["public"]}, "list": [{"ip": "10.184.63.2", "id": "Mimic_E6K_v8_Jun2021"}], "groupId": "Mimic_E6K_v8_Jun2021"}, "handBack": {}, "writeCommunityStrings": [{"mtaWriteCommunityStr": ["private"], "cmReadCommunityStr": ["public", "private"], "readCommunityStr": ["public"], "ip": "10.184.63.2", "writeCommunityStr": ["private"], "ipv6Preference": true, "ipdrInfo": [], "cliUser": "e6", "cliType": null, "cliPassword": "99", "cliPrompt": null, "networkPartition": "us-east", "cmWriteCommunityStr": ["private"], "id": "Mimic_E6K_v8_Jun2021", "mtaReadCommunityStr": ["public"]}]}
{"profile": "docsis_cm_preeq", "pollSchedule": {"priority": 1, "type": "cron", "schedule": "0 5 * * * ?"}, "registrationId": "Mimic_E6K_v8_Jun2021.docsis_cm_preeq.python_utility", "responseUrl": "urn:null", "args": {}, "requesterIp": "python_utility", "devices": {"snmpConfig": {"version": "v2c", "collectionTimeout": 1490000, "communityString": ["public", "private"]}, "list": [], "groupId": "Mimic_E6K_v8_Jun2021", "discovery": {"profile": "docsis_cmts_slow_ipv4v6", "ipv6Preference": true}}, "handBack": {}}
{"profile": "docsis_cmts_11_qos", "pollSchedule": {"priority": 1, "type": "cron", "schedule": "0 18 * * * ?"}, "registrationId": "Mimic_E6K_v8_Jun2021.docsis_cmts_11_qos.python_utility", "responseUrl": "urn:null", "args": {}, "requesterIp": "python_utility", "devices": {"snmpConfig": {"version": "v2c", "collectionTimeout": 1800000, "communityString": ["public"]}, "list": [{"ip": "10.184.63.2", "id": "Mimic_E6K_v8_Jun2021"}], "groupId": "Mimic_E6K_v8_Jun2021"}, "handBack": {}, "writeCommunityStrings": [{"mtaWriteCommunityStr": ["private"], "cmReadCommunityStr": ["public", "private"], "readCommunityStr": ["public"], "ip": "10.184.63.2", "writeCommunityStr": ["private"], "ipv6Preference": true, "ipdrInfo": [], "cliUser": "e6", "cliType": null, "cliPassword": "99", "cliPrompt": null, "networkPartition": "us-east", "cmWriteCommunityStr": ["private"], "id": "Mimic_E6K_v8_Jun2021", "mtaReadCommunityStr": ["public"]}]}
{"profile": "docsis_cm_attributes", "pollSchedule": {"priority": 1, "type": "cron", "schedule": "0 35 3,9,15,21 * * ?"}, "registrationId": "Mimic_E6K_v8_Jun2021.docsis_cm_attributes.python_utility", "responseUrl": "urn:null", "args": {}, "requesterIp": "python_utility", "devices": {"snmpConfig": {"version": "v2c", "collectionTimeout": 1490000, "communityString": ["public", "private"]}, "list": [], "groupId": "Mimic_E6K_v8_Jun2021", "discovery": {"profile": "docsis_cmts_slow_ipv4v6", "ipv6Preference": true}}, "handBack": {}}
{"profile": "docsis_cmts_slow_ipv4v6", "pollSchedule": {"priority": 1, "type": "cron", "schedule": "0 2 * * * ?"}, "registrationId": "Mimic_E6K_v8_Jun2021.docsis_cmts_slow_ipv4v6.python_utility", "responseUrl": "urn:null", "args": {}, "requesterIp": "python_utility", "devices": {"snmpConfig": {"version": "v2c", "collectionTimeout": 2400000, "communityString": ["public"]}, "list": [{"ip": "10.184.63.2", "id": "Mimic_E6K_v8_Jun2021"}], "groupId": "Mimic_E6K_v8_Jun2021"}, "handBack": {}, "writeCommunityStrings": [{"mtaWriteCommunityStr": ["private"], "cmReadCommunityStr": ["public", "private"], "readCommunityStr": ["public"], "ip": "10.184.63.2", "writeCommunityStr": ["private"], "ipv6Preference": true, "ipdrInfo": [], "cliUser": "e6", "cliType": null, "cliPassword": "99", "cliPrompt": null, "networkPartition": "us-east", "cmWriteCommunityStr": ["private"], "id": "Mimic_E6K_v8_Jun2021", "mtaReadCommunityStr": ["public"]}]}
{"profile": "docsis_cmts_cm_topology", "pollSchedule": {"priority": 1, "type": "cron", "schedule": "0 5,20,35,50 * * * ?"}, "registrationId": "Mimic_E6K_v8_Jun2021.docsis_cmts_cm_topology.python_utility", "responseUrl": "urn:null", "args": {}, "requesterIp": "python_utility", "devices": {"snmpConfig": {"version": "v2c", "collectionTimeout": 890000, "communityString": ["public"]}, "list": [{"ip": "10.184.63.2", "id": "Mimic_E6K_v8_Jun2021"}], "groupId": "Mimic_E6K_v8_Jun2021"}, "handBack": {}, "writeCommunityStrings": [{"mtaWriteCommunityStr": ["private"], "cmReadCommunityStr": ["public", "private"], "readCommunityStr": ["public"], "ip": "10.184.63.2", "writeCommunityStr": ["private"], "ipv6Preference": true, "ipdrInfo": [], "cliUser": "e6", "cliType": null, "cliPassword": "99", "cliPrompt": null, "networkPartition": "us-east", "cmWriteCommunityStr": ["private"], "id": "Mimic_E6K_v8_Jun2021", "mtaReadCommunityStr": ["public"]}]}
{"profile": "docsis_cmts_interface", "pollSchedule": {"priority": 1, "type": "cron","schedule": "0 5,20,35,50 * * * ?"}, "registrationId": "Mimic_E6K_v8_Jun2021.docsis_cmts_interface.python_utility", "responseUrl": "urn:null","args": {}, "requesterIp": "python_utility", "devices": {"snmpConfig": {"version": "v2c","collectionTimeout": 890000, "communityString": ["public"]}, "list": [{"ip": "10.184.63.2", "id":"Mimic_E6K_v8_Jun2021"}], "groupId": "Mimic_E6K_v8_Jun2021"}, "handBack": {},"writeCommunityStrings": [{"mtaWriteCommunityStr": ["private"], "cmReadCommunityStr": ["public","private"], "readCommunityStr": ["public"], "ip": "10.184.63.2", "writeCommunityStr": ["private"],"ipv6Preference": true, "ipdrInfo": [], "cliUser": "e6", "cliType": null, "cliPassword": "99","cliPrompt": null, "networkPartition": "us-east", "cmWriteCommunityStr": ["private"], "id":"Mimic_E6K_v8_Jun2021", "mtaReadCommunityStr": ["public"]}]}
Write community strings
| ServAssure NXT Feature | CM write community string | CMTS write community string |
|---|---|---|
| Public API(s) On-Demand Actions | Modem Reset | Modem from CMTS Reset |
| Analyze | Modem Reset | Modem from CMTS Reset |
| Analyze sub-carrier | Downstream rxMER | Upstream rxMER |
| Upstream Spectrum Analyzer | N/A | CMTS Upstream Spectrum CMTS Upstream Spectrum Session Impulse Noise |
| Alarm Central | CM Spectrum | N/A |
