Configuration Group Management for DB2

This spec talks about how to enable configuration group management for DB2.

Launchpad Blueprint: https://blueprints.launchpad.net/trove/+spec/db2-config-group

Problem Description

Trove supports configuration group management but this feature has not been implemented for DB2.

Proposed Change

DB2 supports both database manager configuration parameters and database configuration parameters. The database manager configuration parameters apply to an instance whereas the database configuration parameter applies to each database. In this spec, we talk about implementing configuration management for the DB2 database manager.

The database manager configuration parameters are stored in the db2systm file under the sqllib directory. To update the configuration parameters, DB2 recommends using the UPDATE DBM CONFIGURATION and RESET DBM CONFIGURATION commands instead of directly updating the config file. To see a complete list of configuration parameters, check the Appendix section.

Configuration

None

Database

None

Public API

None

Public API Security

None

Python API

None

CLI (python-troveclient)

None

Internal API

None

Guest Agent

Implement update_overrides and apply_overrides in the manager and service modules.

The following files will be updated:

/opt/stack/trove/trove/guestagent/datastore/experimental/db2/manager.py
/opt/stack/trove/trove/guestagent/datastore/experimental/db2/service.py
/opt/stack/trove/trove/guestagent/datastore/experimental/db2/system.py

The following file will be added:

/opt/stack/trove/trove/templates/db2/validation-rules.json

This will fit into the existing configuration manager framework. The existing ‘PropertiesCodec’ implementation will be reused to handle text-file operations. Configuration overrides will be implemented using the ‘ImportStrategy’ of the guestagent configuration manager.

Alternatives

None

Dashboard Impact (UX)

None

Implementation

Assignee(s)

mariamj@us.ibm.com

Milestones

Newton

Work Items

Implement configuration-related manager API calls

def update_overrides(self, context, overrides, remove=False)
def apply_overrides(self, context, overrides)

Write unit tests/integration tests were applicable

Upgrade Implications

None

Dependencies

None

Testing

  • Unit and integration tests will be added to test the new functionality

Documentation Impact

The documentation will be updated to reflect the new features supported by Trove for DB2.

Appendix

The database manager configuration parameters have been listed below. For a detailed description of each parameter, please refer[1]. The parameters listed below are the ones that are relevant for the DB2 Express-C version. The link referenced in [1] gives a complete list of parameters for the DB2 enterprise edition:

AGENTPRI
AGENT_STACK_SZ
ALTERNATE_AUTH_ENC
ASLHEAPSZ
AUDIT_BUF_SZ
CATALOG_NOAUTH
CLNT_KRB_PLUGIN
CLNT_PW_PLUGIN
COMM_EXIT_LIST
CUR_EFF_ARCH_LVL
CUR_EFF_CODE_LVL
DFT_ACCOUNT_STR
DFT_MON_BUFPOOL
DFT_MON_LOCK
DFT_MON_SORT
DFT_MON_STMT
DFT_MON_TABLE
DFT_MON_TIMESTAMP
DFT_MON_UOW
DIAGLEVEL
DIAGSIZE
DIR_CACHE
DISCOVER
DISCOVER_INST
FCM_NUM_BUFFERS
FCM_NUM_CHANNELS
FEDERATED
FED_NOAUTH
FENCED_POOL
GROUP_PLUGIN
HEALTH_MON
INDEXREC
INTRA_PARALLEL
JAVA_HEAP_SZ
KEEPFENCED
KEYSTORE_TYPE
LOCAL_GSSPLUGIN
MAX_CONNECTIONS
MAX_COORDAGENTS
MAX_QUERYDEGREE
MON_HEAP_SZ
NOTIFYLEVEL
NUMDB
NUM_INITAGENTS
NUM_INITFENCED
NUM_POOLAGENTS
RESYNC_INTERVAL
RQRIOBLK
SHEAPTHRES
SPM_LOG_FILE_SZ
SPM_MAX_RESYNC
SRVCON_AUTH
SRVCON_GSSPLUGIN_LIST
SRVCON_PW_PLUGIN
SRV_PLUGIN_MODE
SSL_CIPHERSPECS
SSL_CLNT_KEYDB
SSL_CLNT_STASH
SSL_SVCENAME
SSL_SVR_KEYDB
SSL_SVR_LABEL
SSL_SVR_STASH
SSL_VERSIONS
START_STOP_TIME
SYSADM_GROUP
SYSCTRL_GROUP
SYSMAINT_GROUP
SYSMON_GROUP
TM_DATABASE
TP_MON_NAME
TRUST_ALLCLNTS
TRUST_CLNTAUTH
UTIL_IMPACT_LIM
WLM_DISPATCHER
WLM_DISP_CONCUR
WLM_DISP_CPU_SHARES
WLM_DISP_MIN_UTIL

Guest agent controlled parameters:

ALT_DIAGPATH
AUTHENTICATION
DFTDBPATH
DIAGPATH
JDK_PATH
KEYSTORE_LOCATION