From 8481b75688b2929667d0c09d62b0153d6bd2e490 Mon Sep 17 00:00:00 2001 From: "CHIEFSOFT\\ameye" Date: Mon, 24 Nov 2025 22:41:17 -0500 Subject: [PATCH] PROV flavor --- app/Controllers/Provision.php | 84 ++++++++++++++++++++++++++++------- 1 file changed, 68 insertions(+), 16 deletions(-) diff --git a/app/Controllers/Provision.php b/app/Controllers/Provision.php index 0509120..ce50244 100644 --- a/app/Controllers/Provision.php +++ b/app/Controllers/Provision.php @@ -8,7 +8,7 @@ class Provision extends BaseController public function testSocket(): void { // TELL THE SOCKET TO REFRESH PAGE - // $data["product_uid"] = "bea86662-adb3-4c09-816b-014f450d9713"; // 3cc24fd6-e6c7-4c08-8a64-f06e3f790f38 + // $data["product_uid"] = "bea86662-adb3-4c09-816b-014f450d9713"; // 3cc24fd6-e6c7-4c08-8a64-f06e3f790f38 $data["product_uid"] = "3cc24fd6-e6c7-4c08-8a64-f06e3f790f38"; // $data["provision_action"] = "Auto%20Configuration%20Started"; $SOCKET_SERVER_LOCATION = $_ENV['SOCKET_SERVER_LOCATION']; @@ -219,13 +219,16 @@ class Provision extends BaseController return 0; } - private function assignProvideImageName($productId, $provisionUID) + private function assignProvideImageName($productId, $provisionUID): array { - $PROVISION_IMAGE_NAME = match ($productId) { - "A000001" => "registry.chiefsoft.com/pweb/pweb-01-merms-pweb0006c:latest", - "A000002" => "registry.chiefsoft.com/bweb/bweb-01-merms-pweb0006c:latest", - default => '', - }; +// $PROVISION_IMAGE_NAME = match ($productId) { +// "A000001" => "registry.chiefsoft.com/pweb/pweb-01-merms-pweb0006c:latest", +// "A000002" => "registry.chiefsoft.com/bweb/bweb-01-merms-pweb0006c:latest", +// default => '', +// }; + $PROVISION_IMAGE_NAME = ''; + $PROVISION_IMAGE_FLAVOR = 'P' . rand(1, 6); // temporary - should be blank + // let us confirm if we have a custom template for this line $provisionUID = trim($provisionUID); $mysql = "SELECT * FROM members_products WHERE uid::text = '$provisionUID'"; @@ -243,13 +246,16 @@ class Provision extends BaseController if (count($imageData)) { $this->assignTemplateToProvision($provisionUID, $imageData["provision_uid"]); //stamp image on the provison $PROVISION_IMAGE_NAME = $imageData["provision_name"]; + $PROVISION_IMAGE_FLAVOR = $imageData["flavor"]; } } if ($product_template != '') { // We have a template - $provision_name = $this->selectTemplateFromUID($product_template); - if ($provision_name != '') { - $PROVISION_IMAGE_NAME = $provision_name; + //$provision_name = $this->selectTemplateFromUID($product_template); + $provision_data = $this->selectTemplateDetailsFromUID($product_template); + if ($provision_data[0] != '') { + $PROVISION_IMAGE_NAME = $provision_data[0]; // $provision_name; + $PROVISION_IMAGE_FLAVOR = $provision_data[1]; } } @@ -257,12 +263,13 @@ class Provision extends BaseController $provision_name = $this->selectCustomnTemplateFromName($custom_template); if ($provision_name != '') { $PROVISION_IMAGE_NAME = $provision_name; + $PROVISION_IMAGE_FLAVOR = ""; } } log_message('critical', "***** ***** assignProvideImageName ProductTemplate: $PROVISION_IMAGE_NAME CustomTemplate: $custom_template "); } - return $PROVISION_IMAGE_NAME; + return [$PROVISION_IMAGE_NAME,$PROVISION_IMAGE_FLAVOR]; } private function selectCustomnTemplateFromName($custom_id) @@ -279,6 +286,22 @@ class Provision extends BaseController return $provision_name; } + private function selectTemplateDetailsFromUID($template_uid): array + { + $mysql = "SELECT * FROM products_templates WHERE uid::text = '$template_uid'"; + $query = $this->db->query($mysql); + $template_detail = $query->getResult(); + $provision_name = ''; + $provision_flavor = ''; + if (count($template_detail) > 0) { + //var_dump($provision_detail[0]); + $result = $template_detail[0]; // Get results as an array of objects + $provision_name = trim($result->provision_name); + $provision_flavor = trim($result->flavor); + } + return [$provision_name, $provision_flavor]; + } + private function selectTemplateFromUID($template_uid) { $mysql = "SELECT * FROM products_templates WHERE uid::text = '$template_uid'"; @@ -295,7 +318,7 @@ class Provision extends BaseController private function pickLatestImage($productId) { - $mysql = "SELECT uid::text AS provision_uid,provision_name FROM products_templates + $mysql = "SELECT uid::text AS provision_uid,provision_name,flavor FROM products_templates WHERE product_id = trim('$productId') AND status = 1 ORDER BY id DESC limit 1"; $query = $this->db->query($mysql); @@ -306,6 +329,7 @@ class Provision extends BaseController $result = $template_detail[0]; // Get results as an array of objects $data["provision_uid"] = $result->provision_uid; $data["provision_name"] = $result->provision_name; + $data["flavor"] = $result->flavor; } return $data; } @@ -326,14 +350,16 @@ class Provision extends BaseController // default => '', // }; // - $PROVISION_IMAGE_NAME = $this->assignProvideImageName($productId, $provisionUID); + $PROVISION_IMAGE_DATA = $this->assignProvideImageName($productId, $provisionUID); + $PROVISION_IMAGE_NAME = $PROVISION_IMAGE_DATA[0]; // $this->assignProvideImageName($productId, $provisionUID); + $PROVISION_IMAGE_FLAVOR = $PROVISION_IMAGE_DATA[1]; $partMachineLocal = $_ENV['PATH_MACHINE_LOCAL']; $SITE_CONTENTS_GATEWAY = $_ENV['SITE_CONTENTS_GATEWAY']; $SITE_CONTACT_GATEWAY = $_ENV['SITE_CONTACT_GATEWAY']; $MYSQL_PROVISION_DATABASE_PORT = $_ENV['PROVISION_MSQL_DATABASE_IP'] . ":" . $_ENV['PROVISION_MSQL_DATABASE_PORT']; // "172.16.4.96:3307"; $destinationHomeFolder = $_ENV['DESTINATION_HOME_FOLDER'] . $ContainerName; - $templateRandom = 'P' . rand(1, 6); + //$templateRandom = 'P' . rand(1, 6); $composer_template_contents = str_replace("WHAT_CONTAINER_NAME", $ContainerName, $composer_template_contents); $composer_template_contents = str_replace("DESTINATION_FOLDER", $destinationHomeFolder, $composer_template_contents); $composer_template_contents = str_replace("ALLOCATED_PORT", $allocatedPort, $composer_template_contents); @@ -344,7 +370,7 @@ class Provision extends BaseController $composer_template_contents = str_replace("PROVISION_IMAGE_NAME_REPLACE", $PROVISION_IMAGE_NAME, $composer_template_contents); $composer_template_contents = str_replace("SITE_CONTENTS_URL_REPLACE", $SITE_CONTENTS_GATEWAY, $composer_template_contents); $composer_template_contents = str_replace("SITE_CONTACT_URL_REPLACE", $SITE_CONTACT_GATEWAY, $composer_template_contents); - $composer_template_contents = str_replace("TEMPLATE_NAME_REPLACE", $templateRandom, $composer_template_contents); + $composer_template_contents = str_replace("TEMPLATE_NAME_REPLACE", $PROVISION_IMAGE_FLAVOR, $composer_template_contents); try { //Save to the specific path @@ -381,7 +407,6 @@ class Provision extends BaseController } // GET THE TEMPLATE FOR THIS PROVISIONING - return $composer_template_contents; } @@ -399,6 +424,25 @@ class Provision extends BaseController log_message('critical', "***** ***** scheduleRefreshAction Started:: () "); } } + + $mysql = "SELECT * FROM member_product_refresh WHERE product_id IN ('A000003','A000004') AND status =0 LIMIT 1"; + $query = $this->db->query($mysql); + // $num = $query->num_rows(); + $provision_list = $query->getResult(); + //$provision_list =[]; + foreach ($provision_list as $pr) { + $this->db->query("UPDATE member_product_refresh SET status = status + 1 WHERE id = " . $pr->id); + $subscriptionUId = $pr->subscription_uid; + if ($this->refreshBlogProvision($subscriptionUId) == 100) { + log_message('critical', "***** ***** scheduleRefreshAction Started:: () "); + } + } + } + + private function refreshBlogProvision($subscriptionUId): int + { + + return 0; } private function refreshProvision($subscriptionUId): int @@ -782,6 +826,14 @@ class Provision extends BaseController return 0; } + /* + // $data["product_uid"] = "bea86662-adb3-4c09-816b-014f450d9713"; // 3cc24fd6-e6c7-4c08-8a64-f06e3f790f38 + $data["product_uid"] = "3cc24fd6-e6c7-4c08-8a64-f06e3f790f38"; // + $data["provision_action"] = "Auto%20Configuration%20Started"; + $SOCKET_SERVER_LOCATION = $_ENV['SOCKET_SERVER_LOCATION']; + log_message('critical', "TEST TEST ***** ***** Provision :: Action To :: " . $SOCKET_SERVER_LOCATION . '/broadcast/provisioning'); + $this->APIcall("GET", $SOCKET_SERVER_LOCATION . '/broadcast/provisioning', $data); + */ public function releaseProvision() { log_message('critical', "***** ***** ReleaseProvision :: Execute Actual Provisioning() ");