Odin's Spear
  • Welcome
  • What's New
  • Getting Started
    • Getting the Essentials
    • Create API Object
  • API Coverage
  • Docs
    • API Object
    • Standard Methods
      • Administrators
        • POST - Service Provider Admin
        • PUT - Service Provider Admin Policies
        • POST - Group Admin Polices Bulk
        • POST - Group Admin
      • Alternate Numbers
        • GET - User Alternate Numbers
      • Authentication
        • PUT - User Web Authentication Password
        • PUT - User Authentication Service
      • Auto Attendants
        • GET - Auto Attendants
        • POST - Auto Attendant
        • GET - Auto Attendant
        • GET - Auto Attendant User
        • POST - Auto Attendant Remove User
        • PUT - Auto Attendant
        • DELETE - Auto Attendant
        • GET - Auto Attendant Submenus
        • POST - Auto Attendant Submenu
        • GET - Auto Attendant Submenu Usage
        • PUT - Auto Attendant Submenu
        • PUT - Auto Attendant Status
        • DELETE - Auto Attendant Submenu
      • Call Centers
        • GET - Group Call Center
        • PUT - Group Call Center
        • GET - Group Call Centers
        • PUT - Group Call Center Agents
        • PUT - Group Call Center Agents Levels
        • GET - Group Call Center Bounced Calls
        • PUT - Group Call Center Bounced Call
        • PUT - Group Call Center DNIS Instance
        • GET - Group Call Center Forced Forwarding
        • PUT - Group Call Center Forced Forwarding
        • GET - Group Call Center Overflow
        • PUT - Group Call Center Overflow
        • GET - Group Call Center Stranded Calls
        • GET - Group Call Center Stranded Calls Unavailable
        • PUT - Group Call Center Status
        • PUT - Group Call Center Stranded Calls
        • PUT - Group Call Center Stranded Calls Unavailable
        • GET - User Call Center
        • PUT - User Call Center
        • PUT - User Call Center Agent Sign Out
        • PUT - User Call Center Agents Update
        • PUT - User Call Center Supervised Agents
      • Call Forwarding Always
        • GET - Bulk Call Forwarding Always
        • GET - User Call Forwarding Always
      • Call Forwarding Busy
        • GET - Bulk Call Forwarding Busy
        • GET - User Call Forwarding Busy
      • Call Forwarding No Answer
        • GET - Bulk User Call Forwarding No Answer
        • GET - User Call Forwarding No Answer
      • Call Forwarding Not Reachable
        • GET - Bulk User Call Forwarding Not Reachable
        • GET - User Call Forwarding Not Reachable
      • Call Forwarding Selective
        • GET - User Call Forwarding Selective
        • GET - User Call Forwarding Selective Criteria
        • GET - User Call Forwarding Selective Criterias
      • Call Pickup
        • GET - Call Pickup Group User
      • Call Processing Policies
        • PUT - User Call Processing Policy
      • Call Records
        • GET - User Stats
      • Devices
        • POST - Group Device
        • PUT - Group Devices
        • PUT - Group Device File
        • PUT - Group Device Tag
        • PUT - Group Device Type File
        • PUT - Group Device Tags Profile
        • PUT - Group Device Type Tag
        • PUT - Service Provider Device
        • PUT - Service Provider Device File
        • PUT - Service Provider Device Tag
        • PUT - Service Provider Device Type Tag
        • PUT - System Devices
        • PUT - System Device File
        • PUT - System Device Tag
      • DNs
        • GET - Group DNs
        • POST - Group DNs
        • DELETE - Group DNs
        • PUT - Group DNs Activate
        • POST - Group DNs Assign Bulk
        • GET - Group DN Details
        • GET - Group DN Search
        • POST - Group DNs Unassign Bulk
        • GET - Service Provider DNs
        • POST - Service Provider DNs
        • GET - Service Provider DN Search
        • DELETE - Service Provider DNs
        • GET - System DNs
        • GET - System DN Search
        • GET - System DN Summary
        • GET - System DN Utilisation
      • Do Not Disturb
        • GET - User Do Not Disturb
        • PUT - User Do Not Disturb
      • Emergency Zones
        • POST - Group Emergency Zones
        • PUT - Group Emergency Zones
      • Groups
        • GET - Group Information
        • GET - Service Provider Groups
      • Hunt Groups
        • GET - Group Hunt Groups
        • GET - Group Hunt Group
        • POST - Group Hunt Group
        • PUT - Group Hunt Group
        • DELETE - Group Hunt Group
        • GET - Group Hunt Groups Available Users
        • PUT - Group Hunt Groups Status
        • GET - Group Hunt Group User
        • PUT - Group Hunt Group Weighted Call Distribution
        • POST - Group Hunt Groups Remove User
      • Password Generate
        • GET - Password Generate
        • GET - Passwords Generate
        • GET - Passcode Generate
        • GET - Passcodes Generate
        • GET - SIP Password Generate
        • GET - SIP Passwords Generate
      • Registration
        • GET - User Registration
        • GET - Bulk User Registration
      • Reports
        • GET - User Report
      • Schedules
        • GET - Group Schedules
        • GET - Group Events
      • Service Providers
        • GET - Service Provider
        • GET - Service Providers
      • Services
        • GET - Group Services
        • GET - Group Services Assigned
        • GET - User-Services
        • PUT - User Services
        • GET - User Services Assigned
        • GET - User Service Settings
        • PUT - User Service Settings
      • Shared Call Appearance
        • POST - User Shared Call Appearance Endpoint
      • Trunk Groups
        • GET - Group Trunk Group
        • GET - Group Trunk Groups
        • GET - Group Trunk Groups Call Capacity
        • PUT - Group Trunk Groups Call Capacity
        • PUT - Group Trunk Group
        • POST - Group Trunk Group
        • GET - Service Provider Call Capacity Report
        • GET - Service Provider Trunk Group Call Capacity
        • PUT - Service Provider Trunk Group Call Capacity
      • User
        • GET - User By ID
        • GET - Users
        • POST - User
        • PUT - User
        • DELETE - User
        • PUT - User ID
        • PUT - Users Bulk
        • PUT - User Group ID Update
        • GET - User Login Info
        • GET - User Portal Passcode
        • PUT - User Portal Passcode
        • POST - User Reset
      • Voice Messaging
        • GET - Group Voice Messaging
        • GET - Group Voice Messaging Portal
        • GET - User Voice Messaging Advanced
        • GET - User Voice Messaging Bulk
        • GET - User Voice Messaging Greetings
        • GET - User Voice Messaging Message Details
        • GET - User Voice Messaging Message Download
        • GET - User Voice Messaging Messages
        • GET - User Voice Messaging User Distribution List
        • GET - User Voice Messaging User Distribution Lists
        • GET - User Voice Messaging Voice Portal
        • GET - User Voice Messaging
        • PUT - Group Voice Messaging
        • PUT - Group Voice Messaging Portal
        • PUT - User Voice Messaging Bulk
        • PUT - User Voice Messaging Greetings
        • PUT - User Voice Messaging Messages Read
        • PUT - User Voice Messaging Messages Unread
        • PUT - User Voice Messaging User Distribution List
        • PUT - User Voice Messaging Voice Portal
        • PUT - User Voice Messaging
        • DELETE - User Voice Messaging Messages
    • Advanced Features
      • Scripter
        • Find Alias
        • User Association
        • Group Audit
        • Move Numbers
        • Remove Numbers
        • Bulk Password Reset
        • Service Provider Trunking Capacity
        • Webex Builder
        • Locate Free Extension
        • User Registration
        • VM Auto Login
      • Reporter
        • Call Flow
          • Making Sense of The Call Flow
          • Graphviz
        • Group Users Call Statistics
        • User Registration Report
    • Utils
      • Config Manager
        • Template Configs
          • Auto Attendant
          • Call Center
          • Device
          • Group
          • Hunt Group
          • Service Provider
          • Trunk Group
          • User
      • Checkers
      • Constants
      • Formatters
      • Parsers
    • Logging
  • Powered By Odin's Spear
    • AA, CC, HG Audit
    • Bulk Build Group Admins
    • Bulk Build Service Provider Admins
    • Service Pack Audit
    • VM Bulk Passcode Set CSV
  • 14IP
    • Custom Logger
  • Development
  • Troubleshooting & FAQ
    • Frequently Asked Questions
    • Common Issues
      • Graphviz Troubleshooting
  • Change Log
  • Bugs and Issues
  • Contact
Powered by GitBook
On this page
  • Overview
  • Available Configurations
  • Class Methods
  • __init__
  • _load_configs
  • reload
  • list_configs
  • get_config
  • get_value
  • copy_config
  • view_config
  • Example Usage

Was this helpful?

  1. Docs
  2. Utils

Config Manager

Overview

The ConfigManager class is designed to load and cache template configurations for popular Broadworks entities. These configuration templates are stored as JSON files in a specified directory. The class enables users to retrieve, view, update, and copy these templates in a flexible and intuitive manner. The primary goal is to provide users with a base configuration that they can modify as needed before using it to make API calls (e.g., to create or update users).

Available Configurations

The following templates are supported and should be referenced using their corresponding names:

  • auto_attendant

  • call_center

  • device

  • group

  • hunt_group

  • service_provider

  • trunk_group

  • user

Class Methods

__init__

  • Purpose: Initialises the ConfigManager by setting the configuration directory and preloading all JSON configuration files into a cache.

  • Usage: Instantiate the class to automatically load available configurations.

_load_configs

  • Purpose: A private method that reads all JSON files from the config_dir and caches them.

  • Details: Iterates over each file in the specified directory and attempts to load JSON data, mapping the filename (without the extension) to its configuration data.

reload

  • Purpose: Clears the existing cache and reloads all configuration files from disk.

  • Usage: Use this method if the underlying configuration files have changed and you need to refresh the cache.

list_configs

  • Purpose: Returns a list of available configuration names.

  • Usage: Useful for users to quickly see which configuration templates are available for customisation.

get_config

  • Purpose: Retrieves the full configuration for a given config type.

  • Arguments:

    • config_name (str): The name of the configuration to fetch.

  • Returns: The configuration as a dictionary.

  • Exceptions: Raises a KeyError if the requested config is not among the supported templates.

get_value

  • Purpose: Retrieves a nested value from a configuration using dot notation.

  • Arguments:

    • config_name (str): The configuration from which to retrieve the value.

    • key_path (str): A dot notation string indicating the path to the desired value (e.g., "serviceProviderId.name").

  • Returns: The value found at the specified key path.

  • Exceptions: Raises a KeyError if either the configuration or the specified key path is not found.

copy_config

  • Purpose: Returns a complete deep copy of a specified configuration. This ensures that modifications to the returned copy do not affect the original cached configuration.

  • Arguments:

    • config_name (str): The configuration to be copied.

  • Returns: A deep copy of the configuration as a dictionary.

  • Exceptions: Raises a KeyError if the configuration name is not found.

view_config

  • Purpose: Prints the configuration in a human-friendly format using Python's pprint module.

  • Arguments:

    • config_name (str): The name of the configuration to be printed.

  • Returns: A formatted printout of the configuration.

  • Exceptions: Raises a KeyError if the configuration name is not valid.

Example Usage

from odins_spear.utils.config_manager import ConfigManager

# Instantiate the ConfigManager
cm = ConfigManager()

# List available configurations
print("Available Configs:", cm.list_configs())

# Retrieve a full configuration (e.g., 'user')
user_config = cm.get_config('user')

# Make a complete copy so modifications won't affect the original cached config
user_config_copy = cm.copy_config('user')

# Update specific values in the copy
user_config_copy['serviceInstanceProfile']['name'] = 'John Doe'
user_config_copy['serviceInstanceProfile']['language'] = 'English'

# Optionally, view the configuration in a formatted way
cm.view_config('user')

# Use the updated config in an API call - Below is an exmaple without com
api.users.post_user(
    service_provider="test_sp",
    group_id="test_gp",
    user_id="userId@example.com",
    first_name="John",
    last_name="Doe",
    extension="1234",
    web_auth_password="lalksnd223a",
    payload=user_config_copy
)
PreviousUtilsNextTemplate Configs

Last updated 2 months ago

Was this helpful?