Provision Socket Calls
This commit is contained in:
+37
-107
@@ -188,7 +188,7 @@ class Provision extends BaseController
|
|||||||
|
|
||||||
|
|
||||||
$this->registerProvision($subscriptionId, $prov_name);
|
$this->registerProvision($subscriptionId, $prov_name);
|
||||||
$this->provisionActions($memberID, $subscriptionUId, "Auto Configuration Started");
|
$this->create_provision_action($memberID, $subscriptionUId, "Auto Configuration Started", false);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -436,8 +436,8 @@ class Provision extends BaseController
|
|||||||
$provision_list = $query->getResult();
|
$provision_list = $query->getResult();
|
||||||
//$provision_list =[];
|
//$provision_list =[];
|
||||||
foreach ($provision_list as $pr) {
|
foreach ($provision_list as $pr) {
|
||||||
$this->db->query("UPDATE member_product_refresh SET status = status + 1 WHERE id = " . $pr->id);
|
|
||||||
$subscriptionUId = $pr->subscription_uid;
|
$subscriptionUId = $pr->subscription_uid;
|
||||||
|
$this->db->query("UPDATE member_product_refresh SET status = status + 1 WHERE id = " . $pr->id);
|
||||||
$this->auditProvisionPlans($subscriptionUId);
|
$this->auditProvisionPlans($subscriptionUId);
|
||||||
if ($this->refreshProvision($subscriptionUId) == 100) {
|
if ($this->refreshProvision($subscriptionUId) == 100) {
|
||||||
log_message('critical', "***** ***** scheduleRefreshAction Started:: () ");
|
log_message('critical', "***** ***** scheduleRefreshAction Started:: () ");
|
||||||
@@ -523,7 +523,7 @@ class Provision extends BaseController
|
|||||||
$members_product_id = $pr->mpid;
|
$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);
|
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
|
// make sure we compose the docker compose to use
|
||||||
$this->prepareDockerComposer(
|
$this->prepare_provision_docker_composer(
|
||||||
$members_product_id,
|
$members_product_id,
|
||||||
$provision_port,
|
$provision_port,
|
||||||
$productId,
|
$productId,
|
||||||
@@ -581,17 +581,17 @@ class Provision extends BaseController
|
|||||||
log_message('critical', "ANSIBLE RETURN ***** " . $ansibleReturn);
|
log_message('critical', "ANSIBLE RETURN ***** " . $ansibleReturn);
|
||||||
if ($ansibleReturn === 200) {
|
if ($ansibleReturn === 200) {
|
||||||
log_message('critical', "Calling update_To_Completed ***** " . $ansibleReturn);
|
log_message('critical', "Calling update_To_Completed ***** " . $ansibleReturn);
|
||||||
$this->update_To_Completed($productUid);
|
$this->update_provision_to_completed($productUid);
|
||||||
} else {
|
} else {
|
||||||
log_message('critical', "Calling WHY PATH update_To_Completed ***** " . $ansibleReturn);
|
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;
|
return 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function prepareDockerComposer(
|
private function prepare_provision_docker_composer(
|
||||||
$members_product_id,
|
$members_product_id,
|
||||||
$members_product_port,
|
$members_product_port,
|
||||||
$product_id,
|
$product_id,
|
||||||
@@ -638,74 +638,20 @@ class Provision extends BaseController
|
|||||||
$destinationHomeFolder = $_ENV['DESTINATION_HOME_FOLDER'] . $ContainerName;
|
$destinationHomeFolder = $_ENV['DESTINATION_HOME_FOLDER'] . $ContainerName;
|
||||||
$composer_template_contents = file_get_contents($composer_template_path);
|
$composer_template_contents = file_get_contents($composer_template_path);
|
||||||
// Do the processing
|
// 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);
|
$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 {
|
try {
|
||||||
$mysql = "INSERT INTO provision_plans (provision_id,play_file) VALUES($subscriptionId,'$prov_name')";
|
$mysql = "INSERT INTO provision_plans (provision_id,play_file) VALUES($subscriptionId,'$prov_name')";
|
||||||
$query = $this->db->query($mysql);
|
$query = $this->db->query($mysql);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
log_message('critical', "***** ***** registerProvision Error:: registerProvision() " . $e->getMessage());
|
log_message('critical', "***** ***** registerProvision Error:: registerProvision() " . $e->getMessage());
|
||||||
}
|
}
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function allocatePortNo()
|
private function allocatePortNo(): void
|
||||||
{
|
{
|
||||||
$list_limit = 2;
|
$list_limit = 2;
|
||||||
$mysql = "SELECT id, member_id, uid, internal_url,product_id,status,provision_port,updated
|
$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";
|
$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);
|
$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
|
//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) ");
|
log_message('critical', "***** ***** Provision :: provisionActions($memberID, $provisionUID,$actionText) ");
|
||||||
try {
|
try {
|
||||||
$mysql = "INSERT INTO provision_actions (member_id,product_uid,action) VALUES ($memberID,'$provisionUID','$actionText')";
|
if ($completedAction) {
|
||||||
log_message('critical', "***** ***** Provision :: provisionActions(QUERY) :: " . $mysql);
|
$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);
|
$query = $this->db->query($mysql);
|
||||||
|
|
||||||
// TELL THE SOCKET TO REFRESH PAGE
|
// TELL THE SOCKET TO REFRESH PAGE
|
||||||
@@ -854,26 +814,17 @@ class Provision extends BaseController
|
|||||||
$data["provision_action"] = urlencode($actionText);
|
$data["provision_action"] = urlencode($actionText);
|
||||||
|
|
||||||
$SOCKET_SERVER_LOCATION = $_ENV['SOCKET_SERVER_LOCATION'];
|
$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);
|
$this->APIcall("GET", $SOCKET_SERVER_LOCATION . '/broadcast/provisioning', $data);
|
||||||
|
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
log_message('critical', "***** ***** Provision Error:: provisionActions() " . $e->getMessage());
|
log_message('critical', "***** ***** Provision Error:: provisionActions() " . $e->getMessage());
|
||||||
}
|
}
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
public function releaseProvision(): int
|
||||||
// $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() ");
|
log_message('info', "***** ***** ReleaseProvision :: Execute Actual Provisioning() ");
|
||||||
$PROCESS_LIMIT = 2;
|
$PROCESS_LIMIT = 2;
|
||||||
$rsyncPass = "******noNEDD****";
|
$rsyncPass = "******noNEDD****";
|
||||||
// $remote_composer_path = "chiefsoft@10.0.0.32:/home/chiefsoft/MermsProvision/ANSIBLE/parts/";
|
// $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;
|
$provision_port = $pr->provision_port;
|
||||||
$members_product_id = $pr->mpid;
|
$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
|
$this->updateToNow($productUid); // increase count not to repeat
|
||||||
|
|
||||||
$ansible_host = $productId . "_SERVER";
|
$ansible_host = $productId . "_SERVER";
|
||||||
@@ -935,7 +886,7 @@ class Provision extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
// make sure we compose the docker compose to use
|
// make sure we compose the docker compose to use
|
||||||
$this->prepareDockerComposer(
|
$this->prepare_provision_docker_composer(
|
||||||
$members_product_id,
|
$members_product_id,
|
||||||
$provision_port,
|
$provision_port,
|
||||||
$productId,
|
$productId,
|
||||||
@@ -967,16 +918,16 @@ class Provision extends BaseController
|
|||||||
log_message('critical', "ANSIBLE RETURN ***** " . $ansibleReturn);
|
log_message('critical', "ANSIBLE RETURN ***** " . $ansibleReturn);
|
||||||
if ($ansibleReturn === 200) {
|
if ($ansibleReturn === 200) {
|
||||||
log_message('critical', "Calling update_To_Completed ***** " . $ansibleReturn);
|
log_message('critical', "Calling update_To_Completed ***** " . $ansibleReturn);
|
||||||
$this->update_To_Completed($productUid);
|
$this->update_provision_to_completed($productUid);
|
||||||
} else {
|
} else {
|
||||||
log_message('critical', "Calling WHY PATH update_To_Completed ***** " . $ansibleReturn);
|
log_message('critical', "Calling WHY PATH update_To_Completed ***** " . $ansibleReturn);
|
||||||
$this->update_To_Completed($productUid);
|
$this->update_provision_to_completed($productUid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function update_To_Completed($provisionUID)
|
private function update_provision_to_completed($provisionUID): void
|
||||||
{
|
{
|
||||||
log_message('critical', "update_To_Completed ******** ***** " . $provisionUID);
|
log_message('critical', "update_To_Completed ******** ***** " . $provisionUID);
|
||||||
try {
|
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 ";
|
$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());
|
log_message('critical', "***** ***** Provision Error:: runAnsibleShell() " . $e->getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user