From 81289c39c8b7fe4a07dbc1ac1bb464e48e127b48 Mon Sep 17 00:00:00 2001 From: "CHIEFSOFT\\ameye" Date: Tue, 19 May 2026 18:22:22 -0400 Subject: [PATCH] Provision Socket Calls --- app/Controllers/Provision.php | 75 ++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 36 deletions(-) diff --git a/app/Controllers/Provision.php b/app/Controllers/Provision.php index 79abefc..5b092be 100644 --- a/app/Controllers/Provision.php +++ b/app/Controllers/Provision.php @@ -12,7 +12,7 @@ class Provision extends BaseController $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'); + log_message('info', "TEST TEST ***** ***** Provision :: Action To :: " . $SOCKET_SERVER_LOCATION . '/broadcast/provisioning'); $this->APIcall("GET", $SOCKET_SERVER_LOCATION . '/broadcast/provisioning', $data); } @@ -21,27 +21,27 @@ class Provision extends BaseController //$this->testSocket(); $current_database = $_ENV['MAIN_DATABASE_IP']; - log_message('critical', "***** ***** prepareProvision :: Working Database " . $current_database); + log_message('info', "***** ***** prepareProvision :: Working Database " . $current_database); - log_message('critical', "***** ***** prepareProvision :: Starting Port Allocation "); + log_message('info', "***** ***** prepareProvision :: Starting Port Allocation "); $this->allocatePortNo(); // allocate port for the container use - log_message('critical', "***** ***** prepareProvision :: Starting Product Database if Needed "); + log_message('info', "***** ***** prepareProvision :: Starting Product Database if Needed "); $this->prepareDataBase(); // allocate port for the container use - log_message('critical', "***** ***** prepareProvision :: Create needed DockerCompose Files "); + log_message('info', "***** ***** prepareProvision :: Create needed DockerCompose Files "); $this->updateProvision(); - log_message('critical', "***** ***** prepareProvision :: Populate HAPROXY for URL "); + log_message('info', "***** ***** prepareProvision :: Populate HAPROXY for URL "); $this->configureURL(); - log_message('critical', "***** ***** scheduleRefreshAction :: Refresh Requested Sites "); + log_message('info', "***** ***** scheduleRefreshAction :: Refresh Requested Sites "); $this->scheduleRefreshAction(); return 0; } -//PROVISION_MSQL_DATABASE_IP="172.16.4.96" + //PROVISION_MSQL_DATABASE_IP="172.16.4.96" //PROVISION_MSQL_DATABASE_USERNAME="root" //PROVISION_MSQL_DATABASE_PASSWORD="may12002!" //PROVISION_MSQL_DATABASE="wordpress" @@ -59,7 +59,7 @@ class Provision extends BaseController die("Connection failed: " . $conn->connect_error); } //echo "Connected successfully"; - log_message('critical', "***** ***** prepareDataBase :: Connected successfully "); + log_message('info', "***** ***** prepareDataBase :: Connected successfully "); $list_limit = 2; $mysql = "SELECT id, member_id, uid, internal_url,product_id,status,provision_port,updated @@ -81,7 +81,7 @@ class Provision extends BaseController $sql = "CREATE DATABASE $dbName"; if ($conn->query($sql) === TRUE) { // echo "Database created successfully"; - log_message('critical', "***** ***** prepareDataBase :: () Database created successfully "); + log_message('info', "***** ***** prepareDataBase :: () Database created successfully "); $mysql = "UPDATE members_products SET updated=now() WHERE uid::TEXT = '" . $provisionUID . "'"; try { @@ -94,7 +94,7 @@ class Provision extends BaseController // $sql = "GRANT SELECT , INSERT , UPDATE , DELETE ON " . $dbName . " . * TO '" . $dbName . "'@'localhost' IDENTIFIED BY '" . $provisionUID . "'"; $sql = "GRANT CREATE, SELECT , INSERT , UPDATE , DELETE ON " . $dbName . " . * TO '" . $dbName . "'@'localhost' IDENTIFIED BY '" . $provisionUID . "'"; - log_message('critical', "***** ***** prepareDataBase :: GrantQuery === " . $sql); + log_message('info', "***** ***** prepareDataBase :: GrantQuery === " . $sql); $result = mysqli_query($conn, $sql); @@ -255,14 +255,14 @@ class Provision extends BaseController $provision_detail = $query->getResult(); if (count($provision_detail) > 0) { - log_message('critical', "***** ***** FINAL readProductImageName In Now "); + log_message('info', "***** ***** FINAL readProductImageName In Now "); $result = $provision_detail[0]; // Get results as an array of objects $product_template = $result->product_template; $custom_template = $result->custom_template; if ($product_template != '') { - log_message('critical', "***** ***** FINAL readProductImageName In Now 001"); + log_message('info', "***** ***** FINAL readProductImageName In Now 001"); $provision_data = $this->selectTemplateDetailsFromUID($product_template); if ($provision_data[0] != '') { $PROVISION_IMAGE_NAME = $provision_data[0]; // $provision_name; @@ -271,7 +271,7 @@ class Provision extends BaseController } if ($custom_template != '') { // We have a custom template - log_message('critical', "***** ***** FINAL readProductImageName In Now 002"); + log_message('info', "***** ***** FINAL readProductImageName In Now 002"); $provision_name = $this->selectCustomnTemplateFromName($custom_template); if ($provision_name != '') { $PROVISION_IMAGE_NAME = $provision_name; @@ -358,7 +358,7 @@ class Provision extends BaseController private function prepareTemplateFile($composer_template_contents, $ContainerName, $allocatedPort, $provisionUID, $ansible_folder, $productId, $internalUrl, $provID): string { -// $PROVISION_IMAGE_NAME = match ($productId) { + // $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 => '', @@ -462,7 +462,7 @@ class Provision extends BaseController private function auditProvisionPlans($subscriptionUid): void { -// try { + // try { // $sqlP = "SELECT * FROM members_products WHERE uid::text = '$subscriptionUid' "; // $query = $this->db->query($sqlP); // $row = $query->row(); @@ -523,7 +523,7 @@ class Provision extends BaseController $members_product_id = $pr->mpid; - $this->create_provision_action($member_id, $subscriptionUId, "Rebuilding Provision Started "); + $this->create_provision_action($member_id, $subscriptionUId, "Rebuilding Provision Started", false); log_message('critical', "Members Product ID ***** " . $pr->mpid . " Provision_Status == " . $pr->provision_status); @@ -560,7 +560,7 @@ class Provision extends BaseController $this->db->query("UPDATE provision_plans SET updated = now() WHERE id = $planId"); // $this->db->query("UPDATE members_products SET p_file = p_file + 1 WHERE id = $provisionId"); $params = [ - "template_id" => (int)$_ENV['ANSIBLE_TEMPLATE_ID'], + "template_id" => (int) $_ENV['ANSIBLE_TEMPLATE_ID'], "debug" => false, "dry_run" => false, "playbook" => $playbook, @@ -598,8 +598,7 @@ class Provision extends BaseController $member_product_uid, $member_id, $internal_url - ): void - { + ): void { $public_path = FCPATH; @@ -615,9 +614,9 @@ class Provision extends BaseController $partFolder = $ansible_folder . "/parts/" . $member_product_uid; /* - * may be if the file is already there , we can turn back - * - */ + * may be if the file is already there , we can turn back + * + */ $destination_composer_path = $ansible_folder . "/parts/" . $provisionUID . "/docker-compose.yml"; @@ -671,7 +670,7 @@ class Provision extends BaseController $mysql = "UPDATE members_products SET updated=now(), provision_port=" . $allocated_port . ", primary_server='" . $primary_server . "' WHERE uid::TEXT = '" . $provisionUID . "' AND provision_port = 0"; $query = $this->db->query($mysql); - $this->create_provision_action($memberID, $provisionUID, "Allocating Provisioning Ports"); + $this->create_provision_action($memberID, $provisionUID, "Allocating Provisioning Ports", false); } //Now let us try fix hanging stuffs @@ -800,11 +799,13 @@ class Provision extends BaseController $row = $query_find->getResult(); if (count($row) > 0) { - $percent_completed = $row['percent_completed']; + $percent_completed = (int) $row['percent_completed']; $percent_completed = $percent_completed + 10; } } - if ($percent_completed > 100) $percent_completed = 1000; + if ($percent_completed > 100) + $percent_completed = 100; + $mysql = "INSERT INTO provision_actions (member_id,product_uid,action ,percent_completed) VALUES ($memberID,'$provisionUID','$actionText', $percent_completed)"; log_message('info', "***** ***** Provision :: provisionActions(QUERY) :: " . $mysql); $query = $this->db->query($mysql); @@ -866,13 +867,13 @@ class Provision extends BaseController $ContainerName = $this->generatedContainerName($productId, $pr->mpid); //$productId ."-SVR-". str_pad($pr->mpid, 10, "0", STR_PAD_LEFT); //$destinationHomeFolder = "/home/chiefsoft/SITES/" . $ContainerName; $destinationHomeFolder = $_ENV['DESTINATION_HOME_FOLDER'] . $ContainerName; -// $composer_template_path_local = $partMachineLocal . $provisionUID; + // $composer_template_path_local = $partMachineLocal . $provisionUID; // $composer_template_path_remote = $remote_composer_path . $provisionUID; $composer_template_path_local = $partMachineLocal . $productUid; $composer_template_path_remote = $remote_composer_path . $productUid; -// $ansible_transport_path = $pr->provision_uid; // $ContainerName; + // $ansible_transport_path = $pr->provision_uid; // $ContainerName; $ansible_transport_path = $productUid; // $ContainerName; // let us make sure all we promise are availale @@ -898,7 +899,7 @@ class Provision extends BaseController $this->db->query("UPDATE provision_plans SET updated = now() WHERE id = $planId"); $this->db->query("UPDATE members_products SET p_file = p_file + 1 WHERE id = $provisionId"); $params = [ - "template_id" => (int)$_ENV['ANSIBLE_TEMPLATE_ID'], + "template_id" => (int) $_ENV['ANSIBLE_TEMPLATE_ID'], "debug" => false, "dry_run" => false, "playbook" => $playbook, @@ -1074,7 +1075,7 @@ class Provision extends BaseController { log_message('critical', "***** ***** Configure URL :: Set up URL access for product "); $limit = 1; - $mysql = "SELECT id, uid, internal_url,primary_server,provision_port,url_status FROM members_products WHERE url_status = 0 LIMIT $limit"; + $mysql = "SELECT id, uid, internal_url,primary_server,provision_port,url_status,member_id FROM members_products WHERE url_status = 0 LIMIT $limit"; $query = $this->db->query($mysql); $provision_list = $query->getResult(); foreach ($provision_list as $pr) { @@ -1083,21 +1084,23 @@ class Provision extends BaseController $provisionServer = $pr->primary_server; $provisionPort = $pr->provision_port; $provisionUID = $pr->uid; + $memberID = $pr->member_id; log_message('critical', "***** ***** Configure URL Start ::: $provisionURL == $provisionServer:$provisionPort "); // Here call haproxy actions - list ($res, $message) = $this->configureHaproxyURL($provisionURL, $provisionServer, $provisionPort); + list($res, $message) = $this->configureHaproxyURL($provisionURL, $provisionServer, $provisionPort); // TODO: Check $res for errors $mysql_close = "UPDATE members_products SET url_status = url_status + 1 WHERE id = $mbId "; $this->db->query($mysql_close); log_message('critical', "***** ***** Conclude if all Okay => $mysql_close "); + $this->create_provision_action($memberID, $provisionUID, "Automatic URL Setup Started", false); } } public function haproxy(): string { -// $limit = 1; + // $limit = 1; // $mysql = "SELECT // internal_url, // provision_port, @@ -1120,7 +1123,7 @@ class Provision extends BaseController // } - list ($res, $message) = $this->configureHaproxyURL("23607.devprov.mermsemr.com", "172.16.4.91", "6603"); + list($res, $message) = $this->configureHaproxyURL("23607.devprov.mermsemr.com", "172.16.4.91", "6603"); var_dump($message); log_message('critical', "Message => '" . $message . "'"); return "Message:
" . $message; @@ -1206,14 +1209,14 @@ curl -XPOST --user admin:Hapr0xy001 \ }' \ "http://172.16.4.99:5555/v3//services/haproxy/configuration/backends/$BACKEND/servers?version=$CFGVER" > server.txt */ -# test => "server4" + # test => "server4" $server = "server" . $cfgver0; $data = [ "name" => $server, "address" => $provisionServer, - "port" => (int)$provisionPort, + "port" => (int) $provisionPort, "check" => "enabled", - "health_check_port" => (int)$provisionPort + "health_check_port" => (int) $provisionPort ]; $uri = '/v3/services/haproxy/configuration/backends/' . $backend . '/servers?version=' . $cfgver; // 202