fc5afdacf2
This change breaks down the monolithic 'dcmanager' process into a separate state-handling multi-process architecture. Subcloud state management is handled by the new state processes. This is a performance optimization, increasing the throughput of subcloud state change operations during dcmanager audits. It also optimizes performance handling of state updates from dcorch. Refactoring. These top-level methods are moved from dcmanager SubcloudManager to SubcloudStateManager (along with associated RPC/service APIs above): - update_subcloud_endpoint_status - update_subcloud_availability - plus internal methods, including the subcloud-level synchronization block New service: DCManagerStateService() - distributedcloud/dcmanager/state/service.py - overriding max_pool_size, max_overflow values from /etc/dcmanager/dcmanager.conf New state manager: SubcloudStateManager() - distributedcloud/dcmanager/state/subcloud_state_manager.py New RPC client: SubcloudStateClient() - Added to existing distributedcloud/dcmanager/rpc/client.py New RPC topic: - TOPIC_DC_MANAGER_STATE = "dcmanager-state" SM service changes: - distributedcloud/dcmanager/cmd/state.py - distributedcloud/ocf/dcmanager-state Other notable changes (from testing): - Cleanup: unused ThreadGroupManager removed from dcmananager service.py - generic_sync_manager: Add eventlet yield during subcloud processing during initialization - dcorch: fix exceptions on shutdown due to race on threadgroup shutdown - dcorch: log service startup with worker config Test cases: - update test cases where necessary to used the newly refactored code - since there is no new logic, no additional tests are required Test Plan: PASS: - Test various audit scenarios in small virtualized environment - Test audit scenarios in lab setting with a large number of subclouds - subclouds going offline/online (including flooding) - dead office recovery - swact - system soak - Validate dcmanager-state service lifecycle and dependencies Story: 2009725 Task: 44317 Change-Id: I2c9a0f84e8cf638632ca319545e9e93e6f43f263 Signed-off-by: Kyle MacLeod <kyle.macleod@windriver.com> |
||
---|---|---|
.. | ||
__init__.py | ||
api.py | ||
audit_worker.py | ||
audit.py | ||
manage.py | ||
manager.py | ||
orchestrator.py | ||
README.rst | ||
state.py |
cmd
Scripts to start the DC Manager API and Manager services
- api.py:
-
start API service python api.py --config-file=/etc/dcmanager.conf
- manager.py:
-
start Manager service python manager.py --config-file=/etc/dcmanager.conf
- audit.py:
-
start Audit service python audit.py --config-file=/etc/dcmanager.conf
- orchestrator.py:
-
start Orchestrator service python orchestrator.py --config-file=/etc/dcmanager.conf
- manage.py:
-
CLI interface for dcmanager database management dcmanager-manage --config-file /etc/dcmanager.conf db_sync dcmanager-manage --config-file /etc/dcmanager.conf db_version