From 12db0c7f19430f7cf2c52daad4fecd6aa611adf5 Mon Sep 17 00:00:00 2001
From: Raphael Luiz Avelar Lima <Raphael.Lima@windriver.com>
Date: Thu, 13 Feb 2025 13:20:00 -0300
Subject: [PATCH] Enable dcmanager orchestrator's worker service

This commit enables dcmanager orchestrator's worker service for System
Controller.

Test plan:
1. PASS: Build an ISO containing the changes for the implementation of
   the orchestrator worker and successfully deploy a new DC system.
2. PASS: Verify that the deployed system has the new service running as
   expected and logging to the orchestrator.log file.
3. PASS: Verify that the orchestrator-worker service can be managed by
   SM and that restarting dcmanager-manager also restarts the
   orchestrator worker.

Depends-On: https://review.opendev.org/c/starlingx/distcloud/+/941289
Depends-On: https://review.opendev.org/c/starlingx/ha/+/941573

Story: 2011311
Task: 51697

Change-Id: I10617bda80241f959792a7d21cdc07a9cefe0370
Signed-off-by: Raphael Luiz Avelar Lima <Raphael.Lima@windriver.com>
---
 modules/puppet-dcmanager/src/dcmanager/manifests/init.pp | 4 +++-
 .../src/modules/platform/manifests/dcmanager.pp          | 8 ++++++++
 puppet-manifests/src/modules/platform/manifests/sm.pp    | 9 +++++++++
 3 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/modules/puppet-dcmanager/src/dcmanager/manifests/init.pp b/modules/puppet-dcmanager/src/dcmanager/manifests/init.pp
index 72fd4d065..2726ac223 100644
--- a/modules/puppet-dcmanager/src/dcmanager/manifests/init.pp
+++ b/modules/puppet-dcmanager/src/dcmanager/manifests/init.pp
@@ -1,7 +1,7 @@
 #
 # Files in this package are licensed under Apache; see LICENSE file.
 #
-# Copyright (c) 2013-2022 Wind River Systems, Inc.
+# Copyright (c) 2013-2022, 2025 Wind River Systems, Inc.
 #
 # SPDX-License-Identifier: Apache-2.0
 #
@@ -47,6 +47,7 @@ class dcmanager (
   $log_levels                  = 'keystoneauth=ERROR,eventlet.wsgi.server=WARN',
   $workers                     = 1,
   $orch_workers                = 1,
+  $orch_worker_workers         = 2,
   $state_workers               = 4,
   $audit_workers               = 1,
   $audit_worker_workers        = 4,
@@ -113,6 +114,7 @@ class dcmanager (
   dcmanager_config {
     'DEFAULT/workers':                   value => $workers;
     'DEFAULT/orch_workers':              value => $orch_workers;
+    'DEFAULT/orch_worker_workers':       value => $orch_worker_workers;
     'DEFAULT/state_workers':             value => $state_workers;
     'DEFAULT/audit_workers':             value => $audit_workers;
     'DEFAULT/audit_worker_workers':      value => $audit_worker_workers;
diff --git a/puppet-manifests/src/modules/platform/manifests/dcmanager.pp b/puppet-manifests/src/modules/platform/manifests/dcmanager.pp
index 1a93c34d9..c665df327 100644
--- a/puppet-manifests/src/modules/platform/manifests/dcmanager.pp
+++ b/puppet-manifests/src/modules/platform/manifests/dcmanager.pp
@@ -10,6 +10,7 @@ class platform::dcmanager::params (
   $deploy_base_dir = '/opt/platform/deploy',
   $iso_base_dir_source = '/opt/platform/iso',
   $iso_base_dir_target = '/var/www/pages/iso',
+  $orch_worker_workers = undef,
   $state_workers = undef,
   $audit_worker_workers = undef,
   $rabbit_host = 'localhost',
@@ -78,12 +79,19 @@ class platform::dcmanager
       $audit_worker_workers_value = $::platform::dcmanager::params::audit_worker_workers
     }
 
+    if $::platform::dcmanager::params::orch_worker_workers == undef {
+      $orch_worker_workers_value = min($::platform::params::eng_workers_by_2, 4)
+    } else {
+      $orch_worker_workers_value = $::platform::dcmanager::params::orch_worker_workers
+    }
+
     class { '::dcmanager':
       rabbit_host          => $::platform::dcmanager::params::rabbit_host,
       rabbit_port          => $::platform::amqp::params::port,
       rabbit_userid        => $::platform::amqp::params::auth_user,
       rabbit_password      => $::platform::amqp::params::auth_password,
       state_workers        => $state_workers_value,
+      orch_worker_workers  => $orch_worker_workers_value,
       audit_worker_workers => $audit_worker_workers_value,
     }
     file {$iso_base_dir_source:
diff --git a/puppet-manifests/src/modules/platform/manifests/sm.pp b/puppet-manifests/src/modules/platform/manifests/sm.pp
index ef16e3829..df090fde8 100644
--- a/puppet-manifests/src/modules/platform/manifests/sm.pp
+++ b/puppet-manifests/src/modules/platform/manifests/sm.pp
@@ -1346,6 +1346,12 @@ class platform::sm
     -> exec { 'Provision DCManager-Orchestrator in SM (service dcmanager-orchestrator)':
       command => 'sm-provision service dcmanager-orchestrator',
     }
+    -> exec { 'Provision DCManager-Orchestrator-Worker (service-group-member dcmanager-orchestrator-worker)':
+      command => 'sm-provision service-group-member distributed-cloud-services dcmanager-orchestrator-worker',
+    }
+    -> exec { 'Provision DCManager-Orchestrator-Worker in SM (service dcmanager-orchestrator-worker)':
+      command => 'sm-provision service dcmanager-orchestrator-worker',
+    }
     -> exec { 'Provision DCManager-RestApi (service-group-member dcmanager-api)':
       command => 'sm-provision service-group-member distributed-cloud-services dcmanager-api',
     }
@@ -1418,6 +1424,9 @@ class platform::sm
     -> exec { 'Configure Platform - DCManager-Orchestrator':
       command => "sm-configure service_instance dcmanager-orchestrator dcmanager-orchestrator \"\"",
     }
+    -> exec { 'Configure Platform - DCManager-Orchestrator-Worker':
+      command => "sm-configure service_instance dcmanager-orchestrator-worker dcmanager-orchestrator-worker \"\"",
+    }
     -> exec { 'Configure OpenStack - DCManager-API':
       command => "sm-configure service_instance dcmanager-api dcmanager-api \"\"",
     }