Provision Socket Calls
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user