refresh actions

This commit is contained in:
CHIEFSOFT\ameye
2025-07-24 22:32:18 -04:00
parent b2274cf30a
commit 6adfa9d559
+119 -1
View File
@@ -32,6 +32,9 @@ class Provision extends BaseController
log_message('critical', "***** ***** prepareProvision :: Populate HAPROXY for URL ");
$this->configureURL();
log_message('critical', "***** ***** scheduleRefreshAction :: Refresh Requested Sites ");
$this->scheduleRefreshAction();
return 0;
}
@@ -193,8 +196,123 @@ class Provision extends BaseController
$this->registerProvision($subscriptionId,$prov_name);
$this->provisionActions($memberID, $provisionUID, "Auto Configuration Started");
}
return 0;
}
return view('welcome_message');
private function scheduleRefreshAction(){
$mysql = "SELECT * FROM member_product_refresh WHERE product_id IN ('A000001','A0000012') 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;
$this->refreshProvision($subscriptionUId);
}
}
private function refreshProvision($subscriptionUId){
log_message('critical', "***** ***** refreshProvision :: Execute Refresh Provisioning() ");
$rsyncPass = "******noNEDD****";
// $remote_composer_path = "chiefsoft@10.0.0.32:/home/chiefsoft/MermsProvision/ANSIBLE/parts/";
// $partMachineLocal = "/home/chiefsoft/MermsProvision/ANSIBLE/parts/";
$remote_composer_path = $_ENV['REMOTE_COMPOSER_PATH']; // "chiefsoft@10.0.0.32:/home/chiefsoft/MermsProvision/ANSIBLE/parts/";
$partMachineLocal = $_ENV['PATH_MACHINE_LOCAL']; // "/home/chiefsoft/MermsProvision/ANSIBLE/parts/";
$ansibleToken = $this->ansibleLogin();
$mysql ="SELECT pp.uid AS prov_uid, p.id AS mpid,
p.product_id, pp.id AS plan_id, pp.uid ,
pp.provision_id, pp.play_file,
p.uid AS member_product_uid ,
p.member_id AS member_id ,
p.internal_url ,
p.provision_port,
p.provision_status
FROM provision_plans pp
LEFT JOIN members_products p ON p.id =pp.provision_id
WHERE p.uid = '$subscriptionUId' ";
$query = $this->db->query($mysql);
$provision_list = $query->getResult();
foreach ($provision_list as $pr) {
$playFile = $pr->play_file;
$planId = $pr->plan_id;
$provisionId = $pr->provision_id;
$productId = $pr->product_id;
$productUid = $pr->member_product_uid;
$playbook = $pr->product_id.".yml";
$provisionUID = $pr->prov_uid;
$member_id = $pr->member_id;
$internal_url = $pr->internal_url;
$provision_port = $pr->provision_port;
$members_product_id = $pr->mpid;
log_message('critical', "Members Product ID ***** ".$pr->mpid." Provision_Status == ". $pr->provision_status);
$this->updateToNow($productUid); // increase count not to repeat
$ansible_host = $productId . "_SERVER";
$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_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 = $productUid; // $ContainerName;
// let us make sure all we promise are availale
//"WHAT_PART_LOCAL
// Remember this is in a CONTAINER so the path follows
$this_composer_part_location = "/var/www/html/ANSIBLE/parts/". $productUid;
if (!is_dir( $this_composer_part_location )) {
mkdir($this_composer_part_location , 0700);
}
// make sure we compose the docker compose to use
$this->prepareDockerComposer(
$members_product_id,
$provision_port,
$productId,
$productUid,
$member_id,
$internal_url
);
$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"=> 2,
"debug"=> false,
"dry_run"=> false,
"playbook"=> $playbook,
"environment"=> "{
\"WHAT_HOST_IN_USE\":\"$ansible_host\",
\"DESTINATION_FOLDER\":\"$destinationHomeFolder\",
\"WHAT_PART_LOCAL\":\"$composer_template_path_local\",
\"WHAT_PART_REMOTE\":\"$composer_template_path_remote\",
\"ANSIBLE_TRANSPORT_PATH\":\"$ansible_transport_path\",
\"RSYNC_PASSWORD\":\"$rsyncPass\",
\"CONTAINER_NAME\":\"$ContainerName\"
}"
];
$ansibleReturn = $this->ansibleProvision($ansibleToken, $params);
log_message('critical', "ANSIBLE RETURN ***** ".$ansibleReturn);
if ( $ansibleReturn === 200 ){
log_message('critical', "Calling update_To_Completed ***** ".$ansibleReturn);
$this->update_To_Completed($productUid);
}
else{
log_message('critical', "Calling WHY PATH update_To_Completed ***** ".$ansibleReturn);
$this->update_To_Completed($productUid);
}
}
return 0;
}
private function prepareDockerComposer(