.. This work is licensed under a Creative Commons Attribution 3.0 Unported License. http://creativecommons.org/licenses/by/3.0/legalcode Sections of this template were taken directly from the Nova spec template at: https://github.com/openstack/nova-specs/blob/master/specs/juno-template.rst .. This template should be in ReSTructured text. The filename in the git repository should match the launchpad URL, for example a URL of https://blueprints.launchpad.net/trove/+spec/awesome-thing should be named awesome-thing.rst. Please do not delete any of the sections in this template. If you have nothing to say for a whole section, just write: None Note: This comment may be removed if desired, however the license notice above should remain. ======================================= 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 .. code-block:: python 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. References ========== .. [1] https://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.config.doc/doc/c0060794.html 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