StarlingX Distributed Cloud
Go to file
Kyle MacLeod fc5afdacf2 Refactor portion of dcmanager into dcmanager-state process
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>
2022-01-27 16:33:41 -05:00
api-ref/source Updating API docs for dcmanager commands 2022-01-13 12:45:53 -06:00
distributedcloud Refactor portion of dcmanager into dcmanager-state process 2022-01-27 16:33:41 -05:00
doc Turn off the legacy pip resolver for distcloud 2021-01-22 16:00:28 -06:00
releasenotes Switch to newer openstackdocstheme and reno versions 2020-06-04 14:18:06 +02:00
tools/gate Adding py39 gate and removing py36 gates from zuul 2021-10-28 15:26:34 -05:00
.gitignore [Doc] OpenStack API Reference Guide 2018-09-25 08:18:08 -07:00
.gitreview OpenDev Migration Patch 2019-04-19 19:52:44 +00:00
.mailmap StarlingX open source release updates 2018-08-07 11:51:21 -04:00
.zuul.yaml Adding py39 gate and removing py36 gates from zuul 2021-10-28 15:26:34 -05:00
CONTRIBUTING.rst StarlingX open source release updates 2018-08-07 11:51:21 -04:00
CONTRIBUTORS.wrs StarlingX open source release updates 2018-08-07 11:51:21 -04:00
HACKING.rst Update setup.cfg to align with StarlingX project 2019-01-07 16:34:24 +00:00
README_DC Update location of openrc in readme 2019-03-15 10:56:03 -05:00
centos_build_layer.cfg Build layering, add layer build config file 2019-11-08 08:40:22 +08:00
centos_dev_docker_images.inc OpenStack-Keystone Proxy Containerization 2019-11-04 14:36:50 -05:00
centos_dev_wheels.inc OpenStack-Keystone Proxy Containerization 2019-11-04 14:36:50 -05:00
centos_iso_image.inc Keystone token and resource caching 2020-03-23 21:31:04 -04:00
centos_pkg_dirs Update files for relocated repo 2019-11-04 14:36:51 -05:00
centos_stable_docker_images.inc OpenStack-Keystone Proxy Containerization 2019-11-04 14:36:50 -05:00
centos_stable_wheels.inc Update files for relocated repo 2019-11-04 14:36:51 -05:00
debian_build_layer.cfg Add debian_build_layer.cfg file 2021-10-05 14:07:18 -04:00
requirements.txt Move content to subdir to support relocated packaging 2019-11-04 13:57:02 -05:00
test-requirements.txt Only install yamllint in py3 env 2021-04-06 11:40:45 -05:00
tox.ini Turn off the legacy pip resolver for distcloud 2021-01-22 16:00:28 -06:00