Add a Field to a Custom MDC

Follow this procedure to add a field to a custom (private) MATRIXX Data Container (MDC). You cannot add fields to a system MDC. Instead, create a custom MDC that extends the system MDC and add the fields to the custom MDC. All fields in the system MDC are available to the custom MDC.

About this task

This task assumes you are changing a MATRIXX Engine installation that is online, in production, and has multiple engines. In such cases, you must perform this procedure on an engine running in standby mode. If you are changing an offline engine, you need not perform any steps after running the configure_engine.py script, except to run the script again on the other engines. If you are changing a single engine, you need not perform any steps after running the configure_engine.py script.

Procedure

  1. Use a configuration source to configure the grouped AVP in create_config.info. You must delete the following create_config.info question:
    Do you want to add any private MDCs (y/n)?

    The MATRIXX Engine configuration source can configure multiple configuration files to be merged at start-up as inputs for the create_config.py command. Files are loaded in alphabetical order. Each filename must end in create_config.info.

    For more information about configuration using a configuration source, see the discussion about configuration sources in MATRIXX Configuration.
  2. Run create_config.py.
    For example:
    kubectl exec -it engine_pod_name -n matrixx -- bash --login -c "create_config.py"
  3. When you are prompted to add any custom MDCs, answer y and provide the following information:
    • The container name.

      MDC names start with Mtx. Do not use this prefix for custom MDCs. MATRIXX suggests using a prefix that identifies MDCs uniquely for the data segment or service provider.

    • The container key.

      MATRIXX identifies and locates MDCs by their key value during processing. To ensure there are no conflicts between MATRIXX data containers and customer-defined data containers, use a unique negative integer for each custom data container to add. For best performance, start with -1 and decrement sequentially for each new MDC. Once a value has been assigned, do not re-use it, or data loss may occur in the MDC with the original key.

    • The system data container for the MDC.

      If the custom data container is an extension of a system MDC, specify the MDC on which it is based. The base data container is typically a top-level container. For example, a custom subscriber type uses the MtxSubscriberObject MDC as its base container, and a custom device uses the MtxDeviceObject MDC as its base container.

      To print to file a list of system MDC names: kubectl exec -it engine_pod_name -n matrixx -- bash --login -c "print_data_container_pickled_file.py" -s > system_mdc_list.txt

      For more information about print_data_container_pickled_file.py, see the discussion about print_data_container_pickled_file.py.

      Note: Adding a field to the Diameter message requires the field to be mapped to a Diameter AVP.
    • The number of fields to add to the custom MDC.

      For each field to add, you must provide a unique field name and field data type and confirm whether it is a list or an array.

      Warning: Do not reuse any field name from any parent container on which the derived MDC is based.

      For string and blob data types, you can specify a maximum size of the field to save space. If the field is for an IPv4 address, use the unsigned int32 data type for the field. If the field is for an IPv6 address, use the unsigned int128 data type. Configuring the max-size field can cause a SubMan request to fail if the field value is greater than the configured max-size.

    • The created schema version.

      For each field to add, use a positive integer to set a schema version for the field. Enter the current MATRIXX Engine release number.

    • The deleted schema version.

      If you are not deleting any fields, enter 0 for the deleted schema version. Otherwise, enter the current MATRIXX Engine release number.

What to do next

When create_config.py finishes, update the configuration on each server in the engine as described in the discussion about configuring MATRIXX Engine.