Provision Socket Calls

This commit is contained in:
CHIEFSOFT\ameye
2026-05-19 18:22:22 -04:00
parent 317ee76c3e
commit 81289c39c8
+39 -36
View File
@@ -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:<br/>" . $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