Provision Socket Calls
This commit is contained in:
+37
-107
@@ -188,7 +188,7 @@ class Provision extends BaseController
|
||||
|
||||
|
||||
$this->registerProvision($subscriptionId, $prov_name);
|
||||
$this->provisionActions($memberID, $subscriptionUId, "Auto Configuration Started");
|
||||
$this->create_provision_action($memberID, $subscriptionUId, "Auto Configuration Started", false);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -436,8 +436,8 @@ class Provision extends BaseController
|
||||
$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;
|
||||
$this->db->query("UPDATE member_product_refresh SET status = status + 1 WHERE id = " . $pr->id);
|
||||
$this->auditProvisionPlans($subscriptionUId);
|
||||
if ($this->refreshProvision($subscriptionUId) == 100) {
|
||||
log_message('critical', "***** ***** scheduleRefreshAction Started:: () ");
|
||||
@@ -523,7 +523,7 @@ class Provision extends BaseController
|
||||
$members_product_id = $pr->mpid;
|
||||
|
||||
|
||||
$this->provisionActions($member_id, $subscriptionUId, "Rebuilding Provision Started ");
|
||||
$this->create_provision_action($member_id, $subscriptionUId, "Rebuilding Provision Started ");
|
||||
|
||||
|
||||
log_message('critical', "Members Product ID ***** " . $pr->mpid . " Provision_Status == " . $pr->provision_status);
|
||||
@@ -548,7 +548,7 @@ class Provision extends BaseController
|
||||
}
|
||||
|
||||
// make sure we compose the docker compose to use
|
||||
$this->prepareDockerComposer(
|
||||
$this->prepare_provision_docker_composer(
|
||||
$members_product_id,
|
||||
$provision_port,
|
||||
$productId,
|
||||
@@ -581,17 +581,17 @@ class Provision extends BaseController
|
||||
log_message('critical', "ANSIBLE RETURN ***** " . $ansibleReturn);
|
||||
if ($ansibleReturn === 200) {
|
||||
log_message('critical', "Calling update_To_Completed ***** " . $ansibleReturn);
|
||||
$this->update_To_Completed($productUid);
|
||||
$this->update_provision_to_completed($productUid);
|
||||
} else {
|
||||
log_message('critical', "Calling WHY PATH update_To_Completed ***** " . $ansibleReturn);
|
||||
$this->update_To_Completed($productUid);
|
||||
$this->update_provision_to_completed($productUid);
|
||||
}
|
||||
$this->provisionActions($member_id, $subscriptionUId, "Rebuilding Provision Completed ");
|
||||
$this->create_provision_action($member_id, $subscriptionUId, "Rebuilding Provision Completed", true);
|
||||
}
|
||||
return 100;
|
||||
}
|
||||
|
||||
private function prepareDockerComposer(
|
||||
private function prepare_provision_docker_composer(
|
||||
$members_product_id,
|
||||
$members_product_port,
|
||||
$product_id,
|
||||
@@ -638,74 +638,20 @@ class Provision extends BaseController
|
||||
$destinationHomeFolder = $_ENV['DESTINATION_HOME_FOLDER'] . $ContainerName;
|
||||
$composer_template_contents = file_get_contents($composer_template_path);
|
||||
// Do the processing
|
||||
// $composer_template_contents = str_replace("WHAT_CONTAINER_NAME", $ContainerName, $composer_template_contents);
|
||||
// //$destinationHomeFolder = "/home/chiefsoft/SITES/" . $ContainerName;
|
||||
// $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;
|
||||
// $composer_template_contents = str_replace("DESTINATION_FOLDER", $destinationHomeFolder, $composer_template_contents);
|
||||
// $composer_template_contents = str_replace("ALLOCATED_PORT", $allocatedPort, $composer_template_contents);
|
||||
// $composer_template_contents = str_replace("CNT_DB_NAME", $ContainerName, $composer_template_contents);
|
||||
// $composer_template_contents = str_replace("CNT_DB_PASS", $provisionUID, $composer_template_contents);
|
||||
// $composer_template_contents = str_replace("CNT_DB_DATA", $MYSQL_PROVISION_DATABASE_PORT, $composer_template_contents);
|
||||
// $composer_template_contents = str_replace("PROVISION_UID_REPLACE", $provisionUID, $composer_template_contents);
|
||||
// $composer_template_contents = str_replace("PROVISION_IMAGE_NAME_REPLACE", "registry.chiefsoft.com/pweb/pweb-01-merms-pweb0006c:latest", $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);
|
||||
//
|
||||
//
|
||||
// $templateRandom = 'P' . rand(1, 6);
|
||||
// $composer_template_contents = str_replace("TEMPLATE_NAME_REPLACE", $templateRandom, $composer_template_contents);
|
||||
//
|
||||
$composer_template_contents = $this->prepareTemplateFile($composer_template_contents, $ContainerName, $allocatedPort, $provisionUID, $ansible_folder, $productId, $internal_url, $members_product_id);
|
||||
|
||||
//Save to the specific path
|
||||
// $composerFile = fopen($destination_composer_path, "w") or die("Unable to open file!");
|
||||
// fwrite($composerFile, $composer_template_contents);
|
||||
// fclose($composerFile);
|
||||
|
||||
// GET THE TEMPLATE FOR THIS PROVISIONING
|
||||
/*
|
||||
$template_content = file_get_contents($template_file);
|
||||
$template_content_processed = str_replace("WHAT_HOST_IN_USE", $productId . "_SERVER", $template_content);
|
||||
$template_content_processed = str_replace("WHAT_PART_FOLDER", $partFolder, $template_content_processed);
|
||||
$template_content_processed = str_replace("DESTINATION_FOLDER", $destinationHomeFolder, $template_content_processed);
|
||||
$template_content_processed = str_replace("WHAT_PART_LOCAL", $composer_template_path_local, $template_content_processed); // depends on the local machine
|
||||
// CREATE PROVISOINING FILE
|
||||
$myfile = fopen($ansible_folder . "/" . $prov_name, "w") or die("Unable to open file!");
|
||||
fwrite($myfile, $template_content_processed);
|
||||
fclose($myfile);
|
||||
*/
|
||||
}
|
||||
|
||||
private function registerProvision($subscriptionId, $prov_name): int
|
||||
private function registerProvision($subscriptionId, $prov_name): void
|
||||
{
|
||||
|
||||
/*
|
||||
CREATE TABLE provision_plans (
|
||||
id SERIAL,
|
||||
uid uuid DEFAULT uuid_generate_v4(),
|
||||
provision_id INT REFERENCES members_products(id),
|
||||
play_file VARCHAR(100)UNIQUE NOT NULL,
|
||||
msg VARCHAR(100) ,
|
||||
added timestamp without time zone DEFAULT now(),
|
||||
updated timestamp without time zone DEFAULT now()
|
||||
);
|
||||
ALTER TABLE ONLY provision_plans
|
||||
ADD CONSTRAINT provision_plans_id_key UNIQUE (id);
|
||||
|
||||
*/
|
||||
try {
|
||||
$mysql = "INSERT INTO provision_plans (provision_id,play_file) VALUES($subscriptionId,'$prov_name')";
|
||||
$query = $this->db->query($mysql);
|
||||
} catch (\Exception $e) {
|
||||
log_message('critical', "***** ***** registerProvision Error:: registerProvision() " . $e->getMessage());
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private function allocatePortNo()
|
||||
private function allocatePortNo(): void
|
||||
{
|
||||
$list_limit = 2;
|
||||
$mysql = "SELECT id, member_id, uid, internal_url,product_id,status,provision_port,updated
|
||||
@@ -725,7 +671,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->provisionActions($memberID, $provisionUID, "Allocating Provisioning Ports");
|
||||
$this->create_provision_action($memberID, $provisionUID, "Allocating Provisioning Ports");
|
||||
}
|
||||
|
||||
//Now let us try fix hanging stuffs
|
||||
@@ -841,12 +787,26 @@ class Provision extends BaseController
|
||||
}
|
||||
}
|
||||
|
||||
private function provisionActions($memberID, $provisionUID, $actionText): int
|
||||
private function create_provision_action($memberID, $provisionUID, $actionText, $completedAction = false): void
|
||||
{
|
||||
log_message('critical', "***** ***** Provision :: provisionActions($memberID, $provisionUID,$actionText) ");
|
||||
try {
|
||||
$mysql = "INSERT INTO provision_actions (member_id,product_uid,action) VALUES ($memberID,'$provisionUID','$actionText')";
|
||||
log_message('critical', "***** ***** Provision :: provisionActions(QUERY) :: " . $mysql);
|
||||
if ($completedAction) {
|
||||
$percent_completed = 100;
|
||||
} else {
|
||||
$percent_completed = 10;
|
||||
$mysql_find = "SELECT * FROM provision_actions WHERE product_uid = '$provisionUID' ORDER BY id DESC limit 1";
|
||||
$query_find = $this->db->query($mysql_find);
|
||||
$row = $query_find->getResult();
|
||||
|
||||
if (count($row) > 0) {
|
||||
$percent_completed = $row['percent_completed'];
|
||||
$percent_completed = $percent_completed + 10;
|
||||
}
|
||||
}
|
||||
if ($percent_completed > 100) $percent_completed = 1000;
|
||||
$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);
|
||||
|
||||
// TELL THE SOCKET TO REFRESH PAGE
|
||||
@@ -854,26 +814,17 @@ class Provision extends BaseController
|
||||
$data["provision_action"] = urlencode($actionText);
|
||||
|
||||
$SOCKET_SERVER_LOCATION = $_ENV['SOCKET_SERVER_LOCATION'];
|
||||
log_message('critical', "***** ***** Provision :: Action To :: " . $SOCKET_SERVER_LOCATION . '/broadcast/provisioning');
|
||||
log_message('info', "***** ***** Provision :: Action To :: " . $SOCKET_SERVER_LOCATION . '/broadcast/provisioning');
|
||||
$this->APIcall("GET", $SOCKET_SERVER_LOCATION . '/broadcast/provisioning', $data);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
log_message('critical', "***** ***** Provision Error:: provisionActions() " . $e->getMessage());
|
||||
}
|
||||
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()
|
||||
public function releaseProvision(): int
|
||||
{
|
||||
log_message('critical', "***** ***** ReleaseProvision :: Execute Actual Provisioning() ");
|
||||
log_message('info', "***** ***** ReleaseProvision :: Execute Actual Provisioning() ");
|
||||
$PROCESS_LIMIT = 2;
|
||||
$rsyncPass = "******noNEDD****";
|
||||
// $remote_composer_path = "chiefsoft@10.0.0.32:/home/chiefsoft/MermsProvision/ANSIBLE/parts/";
|
||||
@@ -908,7 +859,7 @@ class Provision extends BaseController
|
||||
$provision_port = $pr->provision_port;
|
||||
$members_product_id = $pr->mpid;
|
||||
|
||||
log_message('critical', "Members Product ID ***** " . $pr->mpid . " Provision_Status == " . $pr->provision_status);
|
||||
log_message('info', "Members Product ID ***** " . $pr->mpid . " Provision_Status == " . $pr->provision_status);
|
||||
$this->updateToNow($productUid); // increase count not to repeat
|
||||
|
||||
$ansible_host = $productId . "_SERVER";
|
||||
@@ -935,7 +886,7 @@ class Provision extends BaseController
|
||||
}
|
||||
|
||||
// make sure we compose the docker compose to use
|
||||
$this->prepareDockerComposer(
|
||||
$this->prepare_provision_docker_composer(
|
||||
$members_product_id,
|
||||
$provision_port,
|
||||
$productId,
|
||||
@@ -967,16 +918,16 @@ class Provision extends BaseController
|
||||
log_message('critical', "ANSIBLE RETURN ***** " . $ansibleReturn);
|
||||
if ($ansibleReturn === 200) {
|
||||
log_message('critical', "Calling update_To_Completed ***** " . $ansibleReturn);
|
||||
$this->update_To_Completed($productUid);
|
||||
$this->update_provision_to_completed($productUid);
|
||||
} else {
|
||||
log_message('critical', "Calling WHY PATH update_To_Completed ***** " . $ansibleReturn);
|
||||
$this->update_To_Completed($productUid);
|
||||
$this->update_provision_to_completed($productUid);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private function update_To_Completed($provisionUID)
|
||||
private function update_provision_to_completed($provisionUID): void
|
||||
{
|
||||
log_message('critical', "update_To_Completed ******** ***** " . $provisionUID);
|
||||
try {
|
||||
@@ -993,27 +944,8 @@ class Provision extends BaseController
|
||||
}
|
||||
}
|
||||
|
||||
// public function runAnsibleShell($provisionFile){
|
||||
// try{
|
||||
// log_message('critical', "***** ***** Provision :: runAnsibleShell($provisionFile) ");
|
||||
// $shellCommand ="/var/www/html/ANSIBLE/auto_play.sh A000001.yml OLU AMEYE "; ///var/www/html/ANSIBLE/$provisionFile";
|
||||
// log_message('critical', $shellCommand);
|
||||
// $output = shell_exec($shellCommand );
|
||||
// log_message('critical', "***** ***** Provision :: runAnsibleShell(output) AFTER SHELL RUN ".serialize($output));
|
||||
//
|
||||
//// $shellCommand ="ansible-playbook --vault-password-file /var/www/html/ANSIBLE/secrets.pass --key-file ~/.ssh/ansible_worker -i /var/www/html/ANSIBLE/inventory $provisionFile";
|
||||
//// log_message('critical', $shellCommand);
|
||||
////
|
||||
//// $output = shell_exec($shellCommand );
|
||||
//// $output = shell_exec($shellCommand );
|
||||
//// log_message('critical', "***** ***** Provision :: runAnsibleShell(output) AFTER SHELL RUN ".$output);
|
||||
// } catch ( \Exception $e){
|
||||
// log_message('critical', "***** ***** Provision Error:: runAnsibleShell() ".$e->getMessage());
|
||||
// }
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
public function directProvision()
|
||||
public function directProvision(): int
|
||||
{
|
||||
|
||||
$mysql = "SELECT id AS plan_id, uid, provision_id, play_file from provision_plans ORDER BY updated ASC LIMIT 1 ";
|
||||
@@ -1038,8 +970,6 @@ class Provision extends BaseController
|
||||
log_message('critical', "***** ***** Provision Error:: runAnsibleShell() " . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user