LoadByFarmRoleIDAndIndex() public static method

public static LoadByFarmRoleIDAndIndex ( integer $farm_roleid, integer $index ) : DBServer
$farm_roleid integer
$index integer
return DBServer
Esempio n. 1
0
 public function xListTasksAction()
 {
     $this->request->defineParams(array('sort' => array('type' => 'json')));
     $sql = 'SELECT id, name, type, comments, target_id as targetId, target_server_index as targetServerIndex, target_type as targetType, start_time as startTime,
         end_time as endTime, last_start_time as lastStartTime, restart_every as restartEvery, config, order_index as orderIndex,
         status, timezone FROM `scheduler` WHERE `env_id` = ? AND :FILTER:';
     $response = $this->buildResponseFromSql2($sql, array('id', 'name', 'type', 'startTime', 'endTime', 'lastStartTime', 'timezone', 'orderIndex', 'status', 'timezone'), array('id', 'name'), array($this->getEnvironmentId()));
     foreach ($response['data'] as &$row) {
         switch ($row['targetType']) {
             case Scalr_SchedulerTask::TARGET_FARM:
                 try {
                     $DBFarm = DBFarm::LoadByID($row['targetId']);
                     $row['targetName'] = $DBFarm->Name;
                 } catch (Exception $e) {
                 }
                 break;
             case Scalr_SchedulerTask::TARGET_ROLE:
                 try {
                     $DBFarmRole = DBFarmRole::LoadByID($row['targetId']);
                     $row['targetName'] = $DBFarmRole->GetRoleObject()->name;
                     $row['targetFarmId'] = $DBFarmRole->FarmID;
                     $row['targetFarmName'] = $DBFarmRole->GetFarmObject()->Name;
                 } catch (Exception $e) {
                 }
                 break;
             case Scalr_SchedulerTask::TARGET_INSTANCE:
                 try {
                     $DBServer = DBServer::LoadByFarmRoleIDAndIndex($row['targetId'], $row['targetServerIndex']);
                     $row['targetName'] = "({$DBServer->remoteIp})";
                     $DBFarmRole = $DBServer->GetFarmRoleObject();
                     $row['targetFarmId'] = $DBServer->farmId;
                     $row['targetFarmName'] = $DBFarmRole->GetFarmObject()->Name;
                     $row['targetRoleId'] = $DBServer->farmRoleId;
                     $row['targetRoleName'] = $DBFarmRole->GetRoleObject()->name;
                 } catch (Exception $e) {
                 }
                 break;
             default:
                 break;
         }
         $row['type'] = Scalr_SchedulerTask::getTypeByName($row['type']);
         $row['startTime'] = $row['startTime'] ? Scalr_Util_DateTime::convertDateTime($row['startTime'], $row['timezone']) : 'Now';
         $row['endTime'] = $row['endTime'] ? Scalr_Util_DateTime::convertDateTime($row['endTime'], $row['timezone']) : 'Never';
         $row['lastStartTime'] = $row['lastStartTime'] ? Scalr_Util_DateTime::convertDateTime($row['lastStartTime'], $row['timezone']) : '';
         $row['config'] = unserialize($row['config']);
         $script = Script::findPk($row['config']['scriptId']);
         if ($script) {
             $row['config']['scriptName'] = $script->name;
         }
     }
     $this->response->data($response);
 }
Esempio n. 2
0
 public static function farmUpdateRoleSettings(DBFarmRole $dbFarmRole, $oldSettings, $newSettings)
 {
     $db = \Scalr::getDb();
     $dbFarm = $dbFarmRole->GetFarmObject();
     if ($newSettings[Entity\FarmRoleSetting::CLOUDSTACK_NETWORK_ID] == 'SCALR_MANUAL') {
         return true;
     }
     $dbFarmRole->SetSetting(Entity\FarmRoleSetting::CLOUDSTACK_STATIC_NAT_MAP, null, Entity\FarmRoleSetting::TYPE_LCL);
     $cs = $dbFarm->GetEnvironmentObject()->cloudstack($dbFarmRole->Platform);
     // Disassociate IP addresses if checkbox was unchecked
     if (!$newSettings[Entity\FarmRoleSetting::CLOUDSTACK_USE_STATIC_NAT] && $oldSettings[Entity\FarmRoleSetting::CLOUDSTACK_USE_STATIC_NAT]) {
         $eips = $db->Execute("\n                SELECT * FROM elastic_ips WHERE farm_roleid = ?\n            ", array($dbFarmRole->ID));
         while ($eip = $eips->FetchRow()) {
             try {
                 $cs->disassociateIpAddress($eip['allocation_id']);
             } catch (Exception $e) {
             }
         }
         $db->Execute("DELETE FROM elastic_ips WHERE farm_roleid = ?", array($dbFarmRole->ID));
     }
     //TODO: Handle situation when tab was not opened, but max instances setting was changed.
     if ($newSettings[Entity\FarmRoleSetting::CLOUDSTACK_STATIC_NAT_MAP] && $newSettings[Entity\FarmRoleSetting::CLOUDSTACK_USE_STATIC_NAT]) {
         $map = explode(";", $newSettings[Entity\FarmRoleSetting::CLOUDSTACK_STATIC_NAT_MAP]);
         foreach ($map as $ipconfig) {
             list($serverIndex, $ipAddress) = explode("=", $ipconfig);
             if (!$serverIndex) {
                 continue;
             }
             $dbServer = false;
             try {
                 $dbServer = \DBServer::LoadByFarmRoleIDAndIndex($dbFarmRole->ID, $serverIndex);
                 if ($dbServer->remoteIp == $ipAddress) {
                     continue;
                 }
                 // Remove old association
                 $db->Execute("\n                        DELETE FROM elastic_ips WHERE farm_roleid = ? AND instance_index=?\n                    ", array($dbFarmRole->ID, $serverIndex));
             } catch (Exception $e) {
             }
             // Allocate new IP if needed
             if ($ipAddress == "" || $ipAddress == '0.0.0.0') {
                 if ($dbServer) {
                     $ipAddress = self::setStaticNatForServer($dbServer);
                 } else {
                     continue;
                 }
             } else {
                 //Remove old IP association
                 $db->Execute("\n                        DELETE FROM elastic_ips WHERE ipaddress=?\n                    ", array($ipAddress));
                 $requestObject = new ListIpAddressesData();
                 $requestObject->ipaddress = $ipAddress;
                 $info = $cs->listPublicIpAddresses($requestObject);
                 $info = count($info > 0) ? $info[0] : null;
                 // Associate IP with server in our db
                 $db->Execute("INSERT INTO elastic_ips SET\n                        env_id=?,\n                        farmid=?,\n                        farm_roleid=?,\n                        ipaddress=?,\n                        state='0',\n                        instance_id='',\n                        clientid=?,\n                        instance_index=?,\n                        allocation_id=?\n                    ", array($dbFarm->EnvID, $dbFarmRole->FarmID, $dbFarmRole->ID, $ipAddress, $dbFarm->ClientID, $serverIndex, $info->id));
             }
             $ipInfo = $db->GetRow("SELECT allocation_id FROM elastic_ips WHERE ipaddress = ? LIMIT 1", array($ipAddress));
             // Associate IP on AWS with running server
             if ($dbServer) {
                 try {
                     $db->Execute("UPDATE elastic_ips SET state='1', server_id = ? WHERE ipaddress = ?", array($dbServer->serverId, $ipAddress));
                     if ($dbServer->remoteIp != $ipAddress) {
                         if ($dbServer && $dbServer->status == \SERVER_STATUS::RUNNING) {
                             $fireEvent = self::associateIpAddress($dbServer, $ipAddress, $ipInfo['allocation_id']);
                         }
                     }
                     if ($fireEvent) {
                         $event = new \IPAddressChangedEvent($dbServer, $ipAddress, $dbServer->localIp);
                         \Scalr::FireEvent($dbServer->farmId, $event);
                     }
                 } catch (Exception $e) {
                 }
             }
         }
     }
 }
Esempio n. 3
0
File: Eip.php Progetto: recipe/scalr
 public static function farmUpdateRoleSettings(DBFarmRole $DBFarmRole, $oldSettings, $newSettings)
 {
     $db = \Scalr::getDb();
     $DBFarm = $DBFarmRole->GetFarmObject();
     $DBFarmRole->SetSetting(DBFarmRole::SETTING_AWS_ELASIC_IPS_MAP, null, DBFarmRole::TYPE_LCL);
     $isVPC = $DBFarm->GetSetting(DBFarm::SETTING_EC2_VPC_ID);
     $aws = $DBFarm->GetEnvironmentObject()->aws($DBFarmRole->CloudLocation);
     // Disassociate IP addresses if checkbox was unchecked
     if (!$newSettings[DBFarmRole::SETTING_AWS_USE_ELASIC_IPS] && $oldSettings[DBFarmRole::SETTING_AWS_USE_ELASIC_IPS]) {
         $eips = $db->Execute("\n                SELECT * FROM elastic_ips WHERE farm_roleid = ?\n            ", array($DBFarmRole->ID));
         while ($eip = $eips->FetchRow()) {
             try {
                 $aws->ec2->address->disassociate($eip['ipaddress']);
             } catch (Exception $e) {
             }
         }
         $db->Execute("\n                DELETE FROM elastic_ips\n                WHERE farm_roleid = ?\n            ", array($DBFarmRole->ID));
     }
     //TODO: Handle situation when tab was not opened, but max instances setting was changed.
     if ($newSettings[DBFarmRole::SETTING_AWS_ELASIC_IPS_MAP] && $newSettings[DBFarmRole::SETTING_AWS_USE_ELASIC_IPS]) {
         $map = explode(";", $newSettings[DBFarmRole::SETTING_AWS_ELASIC_IPS_MAP]);
         foreach ($map as $ipconfig) {
             list($serverIndex, $ipAddress) = explode("=", $ipconfig);
             if (!$serverIndex) {
                 continue;
             }
             try {
                 $dbServer = DBServer::LoadByFarmRoleIDAndIndex($DBFarmRole->ID, $serverIndex);
             } catch (Exception $e) {
             }
             // Allocate new IP if needed
             if (!$ipAddress || $ipAddress == '0.0.0.0') {
                 if ($dbServer) {
                     $domain = $isVPC ? 'vpc' : null;
                     $address = $aws->ec2->address->allocate($domain);
                     $ipAddress = $address->publicIp;
                     $allocationId = $address->allocationId;
                 } else {
                     continue;
                 }
             }
             // Remove old association
             $db->Execute("\n                    DELETE FROM elastic_ips\n                    WHERE farm_roleid = ? AND instance_index=?\n                ", array($DBFarmRole->ID, $serverIndex));
             if ($ipAddress) {
                 //Remove old IP association
                 $db->Execute("\n                        DELETE FROM elastic_ips\n                        WHERE ipaddress=?\n                    ", array($ipAddress));
                 if (!$allocationId && $isVPC) {
                     $allocationId = $aws->ec2->address->describe($ipAddress)->get(0)->allocationId;
                 }
                 // Associate IP with server in our db
                 $db->Execute("\n                        INSERT INTO elastic_ips\n                        SET env_id=?,\n                            farmid=?,\n                            farm_roleid=?,\n                            ipaddress=?,\n                            state='0',\n                            instance_id='',\n                            clientid=?,\n                            instance_index=?,\n                            allocation_id=?\n                    ", array($DBFarm->EnvID, $DBFarmRole->FarmID, $DBFarmRole->ID, $ipAddress, $DBFarm->ClientID, $serverIndex, $allocationId));
                 // Associate IP on AWS with running server
                 try {
                     $dbServer = DBServer::LoadByFarmRoleIDAndIndex($DBFarmRole->ID, $serverIndex);
                     $db->Execute("\n                            UPDATE elastic_ips\n                            SET state='1',\n                                server_id = ?\n                            WHERE ipaddress = ?\n                        ", array($dbServer->serverId, $ipAddress));
                     $update = false;
                     if ($dbServer->remoteIp != $ipAddress) {
                         if ($dbServer && $dbServer->status == SERVER_STATUS::RUNNING) {
                             $fireEvent = self::associateIpAddress($dbServer, $ipAddress, $isVPC ? $allocationId : null);
                         }
                     }
                     if ($fireEvent) {
                         $event = new IPAddressChangedEvent($dbServer, $ipAddress, $dbServer->localIp);
                         Scalr::FireEvent($dbServer->farmId, $event);
                     }
                 } catch (Exception $e) {
                 }
             } else {
                 Logger::getLogger(LOG_CATEGORY::FARM)->fatal(sprintf(_("Cannot allocate elastic ip address for instance %s on farm %s (2)"), $dbServer->serverId, $DBFarm->Name));
             }
         }
     }
 }
Esempio n. 4
0
 public function xListAction()
 {
     $sql = "SELECT `id`, `name`, `type`, `comments`, `target_id` as `targetId`, `target_server_index` as `targetServerIndex`, `target_type` as `targetType`, `start_time` as `startTime`,\n            `last_start_time` as `lastStartTime`, `restart_every` as `restartEvery`, `config`, `status`, `timezone` FROM `scheduler` WHERE `env_id` = ? AND :FILTER:";
     $response = $this->buildResponseFromSql2($sql, ['id', 'name', 'type', 'startTime', 'lastStartTime', 'timezone', 'status'], ['name'], [$this->getEnvironmentId()]);
     foreach ($response['data'] as &$row) {
         switch ($row['targetType']) {
             case Scalr_SchedulerTask::TARGET_FARM:
                 try {
                     $DBFarm = DBFarm::LoadByID($row['targetId']);
                     $row['targetName'] = $DBFarm->Name;
                 } catch (Exception $e) {
                 }
                 break;
             case Scalr_SchedulerTask::TARGET_ROLE:
                 try {
                     $DBFarmRole = DBFarmRole::LoadByID($row['targetId']);
                     $row['targetName'] = $DBFarmRole->GetRoleObject()->name;
                     $row['targetFarmId'] = $DBFarmRole->FarmID;
                     $row['targetFarmName'] = $DBFarmRole->GetFarmObject()->Name;
                 } catch (Exception $e) {
                 }
                 break;
             case Scalr_SchedulerTask::TARGET_INSTANCE:
                 try {
                     $DBServer = DBServer::LoadByFarmRoleIDAndIndex($row['targetId'], $row['targetServerIndex']);
                     $row['targetName'] = "({$DBServer->remoteIp})";
                     $DBFarmRole = $DBServer->GetFarmRoleObject();
                     $row['targetFarmId'] = $DBServer->farmId;
                     $row['targetFarmName'] = $DBFarmRole->GetFarmObject()->Name;
                     $row['targetRoleId'] = $DBServer->farmRoleId;
                     $row['targetRoleName'] = $DBFarmRole->GetRoleObject()->name;
                 } catch (Exception $e) {
                 }
                 break;
             default:
                 break;
         }
         //$row['type'] = Scalr_SchedulerTask::getTypeByName($row['type']);
         $row['startTime'] = $row['startTime'] ? Scalr_Util_DateTime::convertDateTime($row['startTime'], $row['timezone']) : 'Now';
         $row['lastStartTime'] = $row['lastStartTime'] ? Scalr_Util_DateTime::convertDateTime($row['lastStartTime'], $row['timezone']) : '';
         $row['config'] = unserialize($row['config']);
         $script = Script::findPk($row['config']['scriptId']);
         if (!empty($script)) {
             $row['config']['scriptName'] = $script->name;
         }
     }
     $this->response->data($response);
 }
Esempio n. 5
0
 public function xTransferAction()
 {
     foreach ($this->db->GetAll('SELECT * FROM scheduler_tasks WHERE client_id = ?', array($this->user->getAccountId())) as $taskOld) {
         $task = Scalr_SchedulerTask::init();
         $task->name = $taskOld['task_name'];
         $task->type = $taskOld['task_type'];
         $task->targetId = $taskOld['target_id'];
         $task->targetType = $taskOld['target_type'];
         $task->timezone = $taskOld['timezone'];
         $timezone = new DateTimeZone($taskOld['timezone']);
         $startTm = new DateTime($taskOld['start_time_date']);
         $endTm = new DateTime($taskOld['end_time_date']);
         $lastStartTm = new DateTime($taskOld['last_start_time']);
         // old time in timezone (from record) to server time (timezone leave for UI)
         Scalr_Util_DateTime::convertDateTime($startTm, null, $timezone);
         Scalr_Util_DateTime::convertDateTime($endTm, null, $timezone);
         Scalr_Util_DateTime::convertDateTime($lastStartTm, null, $timezone);
         $task->startTime = $startTm->format('Y-m-d H:i:s');
         $task->endTime = $endTm->format('Y-m-d H:i:s');
         $task->lastStartTime = $taskOld['last_start_time'] ? $lastStartTm->format('Y-m-d H:i:s') : NULL;
         switch ($taskOld['target_type']) {
             case SCRIPTING_TARGET::FARM:
                 try {
                     $DBFarm = DBFarm::LoadByID($taskOld['target_id']);
                 } catch (Exception $e) {
                     continue 2;
                 }
                 break;
             case SCRIPTING_TARGET::ROLE:
                 try {
                     $DBFarmRole = DBFarmRole::LoadByID($taskOld['target_id']);
                     $a = $DBFarmRole->GetRoleObject()->name;
                     $a = $DBFarmRole->FarmID;
                     $a = $DBFarmRole->GetFarmObject()->Name;
                 } catch (Exception $e) {
                     continue 2;
                 }
                 break;
             case SCRIPTING_TARGET::INSTANCE:
                 $serverArgs = explode(':', $taskOld['target_id']);
                 try {
                     $DBServer = DBServer::LoadByFarmRoleIDAndIndex($serverArgs[0], $serverArgs[1]);
                     $a = "({$DBServer->remoteIp})";
                     $DBFarmRole = $DBServer->GetFarmRoleObject();
                     $a = $DBServer->farmId;
                     $a = $DBFarmRole->GetFarmObject()->Name;
                     $a = $DBServer->farmRoleId;
                     $a = $DBFarmRole->GetRoleObject()->name;
                 } catch (Exception $e) {
                     continue 2;
                 }
                 break;
         }
         $config = unserialize($taskOld['task_config']);
         $r = array();
         switch ($task->type) {
             case Scalr_SchedulerTask::SCRIPT_EXEC:
                 $r['scriptId'] = (string) $config['script_id'];
                 unset($config['script_id']);
                 $r['scriptIsSync'] = (string) $config['issync'];
                 unset($config['issync']);
                 $r['scriptTimeout'] = (string) $config['timeout'];
                 unset($config['timeout']);
                 $r['scriptVersion'] = (string) $config['revision'];
                 unset($config['revision']);
                 $r['scriptOptions'] = $config;
                 break;
             case Scalr_SchedulerTask::LAUNCH_FARM:
                 break;
             case Scalr_SchedulerTask::TERMINATE_FARM:
                 $r['deleteDNSZones'] = $config['deleteDNS'];
                 $r['deleteCloudObjects'] = $config['keep_elastic_ips'] == '1' || $config['keep_ebs'] == '1' ? NULL : '1';
                 break;
         }
         $task->config = $r;
         $task->restartEvery = $taskOld['restart_every'];
         $task->orderIndex = $taskOld['order_index'];
         $task->status = $taskOld['status'];
         $task->accountId = $taskOld['client_id'];
         $task->envId = $taskOld['env_id'];
         $task->save();
     }
     $this->db->Execute('DELETE FROM scheduler_tasks WHERE client_id = ?', array($this->user->getAccountId()));
     $this->response->success('All tasks transfered successfully');
 }
Esempio n. 6
0
 public function getFarm2($farmId)
 {
     $dbFarm = DBFarm::LoadByID($farmId);
     $this->user->getPermissions()->validate($dbFarm);
     $farmRoles = array();
     $variables = new Scalr_Scripting_GlobalVariables($this->user->getAccountId(), $this->getEnvironmentId(), Scalr_Scripting_GlobalVariables::SCOPE_FARM);
     $farmRoleVariables = new Scalr_Scripting_GlobalVariables($this->user->getAccountId(), $this->getEnvironmentId(), Scalr_Scripting_GlobalVariables::SCOPE_FARMROLE);
     foreach ($dbFarm->GetFarmRoles() as $dbFarmRole) {
         $scripts = $this->db->GetAll("\n                SELECT farm_role_scripts.*, scripts.name, scripts.os\n                FROM farm_role_scripts\n                LEFT JOIN scripts ON scripts.id = farm_role_scripts.scriptid\n                WHERE farm_roleid=? AND issystem='1'\n            ", array($dbFarmRole->ID));
         $scriptsObject = array();
         foreach ($scripts as $script) {
             if (!empty($script['scriptid']) && $script['script_type'] == Scalr_Scripting_Manager::ORCHESTRATION_SCRIPT_TYPE_SCALR || !empty($script['script_path']) && $script['script_type'] == Scalr_Scripting_Manager::ORCHESTRATION_SCRIPT_TYPE_LOCAL || !empty($script['params']) && $script['script_type'] == Scalr_Scripting_Manager::ORCHESTRATION_SCRIPT_TYPE_CHEF) {
                 $s = array('script_type' => $script['script_type'], 'script_id' => (int) $script['scriptid'], 'script' => $script['name'], 'os' => $script['os'], 'params' => unserialize($script['params']), 'target' => $script['target'], 'version' => (int) $script['version'], 'timeout' => $script['timeout'], 'isSync' => (int) $script['issync'], 'order_index' => $script['order_index'], 'event' => $script['event_name'], 'script_path' => $script['script_path'], 'run_as' => $script['run_as']);
                 if ($script['target'] == Script::TARGET_BEHAVIORS || $script['target'] == Script::TARGET_ROLES || $script['target'] == Script::TARGET_FARMROLES) {
                     switch ($script['target']) {
                         case $script['target'] == Script::TARGET_ROLES:
                             $varName = 'target_roles';
                             break;
                         case $script['target'] == Script::TARGET_FARMROLES:
                             $varName = 'target_farmroles';
                             break;
                         case $script['target'] == Script::TARGET_BEHAVIORS:
                             $varName = 'target_behaviors';
                             break;
                     }
                     $s[$varName] = array();
                     $r = $this->db->GetAll("SELECT `target` FROM farm_role_scripting_targets WHERE farm_role_script_id = ?", array($script['id']));
                     foreach ($r as $v) {
                         array_push($s[$varName], $v['target']);
                     }
                 }
                 $scriptsObject[] = $s;
             }
         }
         //Scripting params
         $scriptingParams = $this->db->Execute("\n                SELECT * FROM farm_role_scripting_params\n                WHERE farm_role_id = ? AND farm_role_script_id = '0'\n            ", array($dbFarmRole->ID));
         $sParams = array();
         while ($p = $scriptingParams->FetchRow()) {
             $sParams[] = array('hash' => $p['hash'], 'role_script_id' => $p['role_script_id'], 'params' => unserialize($p['params']));
         }
         $scalingManager = new Scalr_Scaling_Manager($dbFarmRole);
         $scaling = array();
         foreach ($scalingManager->getFarmRoleMetrics() as $farmRoleMetric) {
             $scaling[$farmRoleMetric->metricId] = $farmRoleMetric->getSettings();
         }
         $dbPresets = $this->db->GetAll("SELECT * FROM farm_role_service_config_presets WHERE farm_roleid=?", array($dbFarmRole->ID));
         $presets = array();
         foreach ($dbPresets as $preset) {
             $presets[$preset['behavior']] = $preset['preset_id'];
         }
         if ($dbFarmRole->NewRoleID) {
             $roleName = DBRole::loadById($dbFarmRole->NewRoleID)->name;
             $isBundling = true;
         } else {
             $roleName = $dbFarmRole->GetRoleObject()->name;
             $isBundling = false;
         }
         $storages = array('configs' => $dbFarmRole->getStorage()->getConfigs());
         foreach ($dbFarmRole->getStorage()->getVolumes() as $configKey => $config) {
             $storages['devices'][$configKey] = array();
             foreach ($config as $device) {
                 $info = array('farmRoleId' => $device->farmRoleId, 'placement' => $device->placement, 'serverIndex' => $device->serverIndex, 'storageId' => $device->storageId, 'storageConfigId' => $device->storageConfigId, 'status' => $device->status);
                 try {
                     $server = DBServer::LoadByFarmRoleIDAndIndex($device->farmRoleId, $device->serverIndex);
                     if ($server->status != SERVER_STATUS::TERMINATED && $server->status != SERVER_STATUS::TROUBLESHOOTING) {
                         $info['serverId'] = $server->serverId;
                         $info['serverInstanceId'] = $server->GetProperty(EC2_SERVER_PROPERTIES::INSTANCE_ID);
                     }
                 } catch (Exception $e) {
                     $this->response->debugException($e);
                 }
                 $storages['devices'][$configKey][] = $info;
             }
         }
         $image = $dbFarmRole->GetRoleObject()->__getNewRoleObject()->getImage($dbFarmRole->Platform, $dbFarmRole->CloudLocation);
         $securityGroups = $this->getInitialSecurityGroupsList($dbFarmRole);
         $farmRoles[] = array('farm_role_id' => $dbFarmRole->ID, 'alias' => $dbFarmRole->Alias ? $dbFarmRole->Alias : $dbFarmRole->GetRoleObject()->name, 'role_id' => $dbFarmRole->RoleID, 'platform' => $dbFarmRole->Platform, 'os' => $dbFarmRole->GetRoleObject()->getOs()->name, 'os_family' => $dbFarmRole->GetRoleObject()->getOs()->family, 'os_generation' => $dbFarmRole->GetRoleObject()->getOs()->generation, 'os_version' => $dbFarmRole->GetRoleObject()->getOs()->version, 'osId' => $dbFarmRole->GetRoleObject()->getOs()->id, 'generation' => $dbFarmRole->GetRoleObject()->generation, 'group' => $dbFarmRole->GetRoleObject()->getCategoryName(), 'cat_id' => $dbFarmRole->GetRoleObject()->catId, 'name' => $roleName, 'is_bundle_running' => $isBundling, 'behaviors' => implode(",", $dbFarmRole->GetRoleObject()->getBehaviors()), 'scripting' => $scriptsObject, 'scripting_params' => $sParams, 'settings' => $dbFarmRole->GetAllSettings(), 'cloud_location' => $dbFarmRole->CloudLocation, 'launch_index' => (int) $dbFarmRole->LaunchIndex, 'scaling' => $scaling, 'config_presets' => $presets, 'image' => $image->getImage(), 'storages' => $storages, 'variables' => $farmRoleVariables->getValues($dbFarmRole->GetRoleID(), $dbFarm->ID, $dbFarmRole->ID), 'running_servers' => $dbFarmRole->GetRunningInstancesCount(), 'suspended_servers' => $dbFarmRole->GetSuspendedInstancesCount(), 'security_groups' => $securityGroups, 'hourly_rate' => $this->getInstanceTypeHourlyRate($dbFarmRole->Platform, $dbFarmRole->CloudLocation, $dbFarmRole->getInstanceType(), $dbFarmRole->GetRoleObject()->osFamily));
     }
     $vpc = array();
     if ($dbFarm->GetSetting(DBFarm::SETTING_EC2_VPC_ID)) {
         $vpc = array('id' => $dbFarm->GetSetting(DBFarm::SETTING_EC2_VPC_ID), 'region' => $dbFarm->GetSetting(DBFarm::SETTING_EC2_VPC_REGION));
     }
     $farmOwnerEditable = $dbFarm->createdByUserId == $this->user->getId() || $this->user->isAccountOwner() || $this->request->isFarmAllowed($dbFarm, Acl::PERM_FARMS_CHANGE_OWNERSHIP);
     return array('farm' => array('name' => $dbFarm->Name, 'description' => $dbFarm->Comments, 'rolesLaunchOrder' => $dbFarm->RolesLaunchOrder, 'timezone' => $dbFarm->GetSetting(DBFarm::SETTING_TIMEZONE), 'variables' => $variables->getValues(0, $dbFarm->ID), 'vpc' => $vpc, 'status' => $dbFarm->Status, 'hash' => $dbFarm->Hash, 'owner' => $farmOwnerEditable ? $dbFarm->createdByUserId : $dbFarm->createdByUserEmail, 'ownerEditable' => $farmOwnerEditable, 'teamOwner' => $farmOwnerEditable ? $dbFarm->teamId : ($dbFarm->teamId ? (new Scalr_Account_Team())->loadById($dbFarm->teamId)->name : ''), 'teamOwnerEditable' => $farmOwnerEditable, 'launchPermission' => $this->request->isFarmAllowed($dbFarm, Acl::PERM_FARMS_LAUNCH_TERMINATE), DBFarm::SETTING_SZR_UPD_REPOSITORY => $dbFarm->GetSetting(DBFarm::SETTING_SZR_UPD_REPOSITORY), DBFarm::SETTING_SZR_UPD_SCHEDULE => $dbFarm->GetSetting(DBFarm::SETTING_SZR_UPD_SCHEDULE)), 'roles' => $farmRoles, 'lock' => $dbFarm->isLocked(false), 'changed' => $dbFarm->changedTime);
 }
Esempio n. 7
0
 public function getFarm2($farmId)
 {
     $dbFarm = DBFarm::LoadByID($farmId);
     $this->user->getPermissions()->validate($dbFarm);
     $farmRoleId = $this->getParam('farmRoleId');
     $farmRoles = array();
     $variables = new Scalr_Scripting_GlobalVariables($this->getEnvironmentId(), Scalr_Scripting_GlobalVariables::SCOPE_FARM);
     $farmRoleVariables = new Scalr_Scripting_GlobalVariables($this->getEnvironmentId(), Scalr_Scripting_GlobalVariables::SCOPE_FARMROLE);
     foreach ($dbFarm->GetFarmRoles() as $dbFarmRole) {
         if ($farmRoleId && $farmRoleId != $dbFarmRole->ID) {
             continue;
         }
         $scripts = $this->db->GetAll("\n                SELECT farm_role_scripts.*, scripts.name\n                FROM farm_role_scripts\n                LEFT JOIN scripts ON scripts.id = farm_role_scripts.scriptid\n                WHERE farm_roleid=? AND issystem='1'\n            ", array($dbFarmRole->ID));
         $scriptsObject = array();
         foreach ($scripts as $script) {
             if (!empty($script['scriptid']) || !empty($script['script_path'])) {
                 $s = array('script_id' => $script['scriptid'], 'script' => $script['name'], 'params' => unserialize($script['params']), 'target' => $script['target'], 'version' => $script['version'], 'timeout' => $script['timeout'], 'issync' => $script['issync'], 'order_index' => $script['order_index'], 'event' => $script['event_name'], 'script_path' => $script['script_path'], 'run_as' => $script['run_as']);
             }
             if ($script['target'] == Scalr_Script::TARGET_BEHAVIORS || $script['target'] == Scalr_Script::TARGET_ROLES) {
                 $varName = $script['target'] == Scalr_Script::TARGET_ROLES ? 'target_roles' : 'target_behaviors';
                 $s[$varName] = array();
                 $r = $this->db->GetAll("SELECT `target` FROM farm_role_scripting_targets WHERE farm_role_script_id = ?", array($script['id']));
                 foreach ($r as $v) {
                     array_push($s[$varName], $v['target']);
                 }
             }
             $scriptsObject[] = $s;
         }
         //Scripting params
         $scriptingParams = $this->db->Execute("\n                SELECT * FROM farm_role_scripting_params\n                WHERE farm_role_id = ? AND farm_role_script_id = '0'\n            ", array($dbFarmRole->ID));
         $sParams = array();
         while ($p = $scriptingParams->FetchRow()) {
             $sParams[] = array('hash' => $p['hash'], 'role_script_id' => $p['role_script_id'], 'params' => unserialize($p['params']));
         }
         $scalingManager = new Scalr_Scaling_Manager($dbFarmRole);
         $scaling = array();
         foreach ($scalingManager->getFarmRoleMetrics() as $farmRoleMetric) {
             $scaling[$farmRoleMetric->metricId] = $farmRoleMetric->getSettings();
         }
         $dbPresets = $this->db->GetAll("SELECT * FROM farm_role_service_config_presets WHERE farm_roleid=?", array($dbFarmRole->ID));
         $presets = array();
         foreach ($dbPresets as $preset) {
             $presets[$preset['behavior']] = $preset['preset_id'];
         }
         if ($dbFarmRole->NewRoleID) {
             $roleName = DBRole::loadById($dbFarmRole->NewRoleID)->name;
             $isBundling = true;
         } else {
             $roleName = $dbFarmRole->GetRoleObject()->name;
             $isBundling = false;
         }
         $imageDetails = $dbFarmRole->GetRoleObject()->getImageDetails($dbFarmRole->Platform, $dbFarmRole->CloudLocation);
         $storages = array('configs' => $dbFarmRole->getStorage()->getConfigs());
         foreach ($dbFarmRole->getStorage()->getVolumes() as $configKey => $config) {
             $storages['devices'][$configKey] = array();
             foreach ($config as $device) {
                 $info = array('farmRoleId' => $device->farmRoleId, 'placement' => $device->placement, 'serverIndex' => $device->serverIndex, 'storageId' => $device->storageId, 'storageConfigId' => $device->storageConfigId, 'status' => $device->status);
                 try {
                     $server = DBServer::LoadByFarmRoleIDAndIndex($device->farmRoleId, $device->serverIndex);
                     if ($server->status != SERVER_STATUS::TERMINATED && $server->status != SERVER_STATUS::TROUBLESHOOTING) {
                         $info['serverId'] = $server->serverId;
                         $info['serverInstanceId'] = $server->GetProperty(EC2_SERVER_PROPERTIES::INSTANCE_ID);
                     }
                 } catch (Exception $e) {
                     $this->response->varDump($e->getMessage());
                     $this->response->varDump($e->getTraceAsString());
                 }
                 $storages['devices'][$configKey][] = $info;
             }
         }
         $imageInfo = $dbFarmRole->GetRoleObject()->getImageDetails($dbFarmRole->Platform, $dbFarmRole->CloudLocation);
         $architecture = $imageInfo['architecture'];
         $securityGroups = $this->getInitialSecurityGroupsList($dbFarmRole);
         $farmRoles[] = array('farm_role_id' => $dbFarmRole->ID, 'alias' => $dbFarmRole->Alias ? $dbFarmRole->Alias : $dbFarmRole->GetRoleObject()->name, 'role_id' => $dbFarmRole->RoleID, 'platform' => $dbFarmRole->Platform, 'os' => $dbFarmRole->GetRoleObject()->os, 'os_family' => $dbFarmRole->GetRoleObject()->osFamily, 'os_generation' => $dbFarmRole->GetRoleObject()->osGeneration, 'os_version' => $dbFarmRole->GetRoleObject()->osVersion, 'generation' => $dbFarmRole->GetRoleObject()->generation, 'group' => $dbFarmRole->GetRoleObject()->getCategoryName(), 'cat_id' => $dbFarmRole->GetRoleObject()->catId, 'arch' => $architecture, 'name' => $roleName, 'is_bundle_running' => $isBundling, 'behaviors' => implode(",", $dbFarmRole->GetRoleObject()->getBehaviors()), 'scripting' => $scriptsObject, 'scripting_params' => $sParams, 'settings' => $dbFarmRole->GetAllSettings(), 'cloud_location' => $dbFarmRole->CloudLocation, 'launch_index' => (int) $dbFarmRole->LaunchIndex, 'scaling' => $scaling, 'config_presets' => $presets, 'tags' => $dbFarmRole->GetRoleObject()->getTags(), 'storages' => $storages, 'variables' => $farmRoleVariables->getValues($dbFarmRole->GetRoleID(), $dbFarm->ID, $dbFarmRole->ID), 'running_servers' => $dbFarmRole->GetRunningInstancesCount(), 'security_groups' => $securityGroups);
     }
     $vpc = array();
     if ($dbFarm->GetSetting(DBFarm::SETTING_EC2_VPC_ID)) {
         $vpc = array('id' => $dbFarm->GetSetting(DBFarm::SETTING_EC2_VPC_ID), 'region' => $dbFarm->GetSetting(DBFarm::SETTING_EC2_VPC_REGION));
     }
     return array('farm' => array('name' => $dbFarm->Name, 'description' => $dbFarm->Comments, 'rolesLaunchOrder' => $dbFarm->RolesLaunchOrder, 'timezone' => $dbFarm->GetSetting(DBFarm::SETTING_TIMEZONE), 'variables' => $variables->getValues(0, $dbFarm->ID), 'vpc' => $vpc, 'status' => $dbFarm->Status), 'roles' => $farmRoles, 'lock' => $dbFarm->isLocked(false), 'changed' => $dbFarm->changedTime);
 }
Esempio n. 8
0
 public static function farmUpdateRoleSettings(DBFarmRole $dbFarmRole, $oldSettings, $newSettings)
 {
     $db = \Scalr::getDb();
     $dbFarm = $dbFarmRole->GetFarmObject();
     $dbFarmRole->SetSetting(DBFarmRole::SETIING_CLOUDSTACK_STATIC_NAT_MAP, null, DBFarmRole::TYPE_LCL);
     $platform = PlatformFactory::NewPlatform($dbFarmRole->Platform);
     $cs = Scalr_Service_Cloud_Cloudstack::newCloudstack($platform->getConfigVariable(Modules_Platforms_Cloudstack::API_URL, $dbFarm->GetEnvironmentObject()), $platform->getConfigVariable(Modules_Platforms_Cloudstack::API_KEY, $dbFarm->GetEnvironmentObject()), $platform->getConfigVariable(Modules_Platforms_Cloudstack::SECRET_KEY, $dbFarm->GetEnvironmentObject()), $dbFarmRole->Platform);
     // Disassociate IP addresses if checkbox was unchecked
     if (!$newSettings[DBFarmRole::SETIING_CLOUDSTACK_USE_STATIC_NAT] && $oldSettings[DBFarmRole::SETIING_CLOUDSTACK_USE_STATIC_NAT]) {
         $eips = $db->Execute("\n                    SELECT * FROM elastic_ips WHERE farm_roleid = ?\n                ", array($dbFarmRole->ID));
         while ($eip = $eips->FetchRow()) {
             try {
                 $cs->disassociateIpAddress($eip['allocation_id']);
             } catch (Exception $e) {
             }
         }
         $db->Execute("DELETE FROM elastic_ips WHERE farm_roleid = ?", array($dbFarmRole->ID));
     }
     //TODO: Handle situation when tab was not opened, but max instances setting was changed.
     if ($newSettings[DBFarmRole::SETIING_CLOUDSTACK_STATIC_NAT_MAP] && $newSettings[DBFarmRole::SETIING_CLOUDSTACK_USE_STATIC_NAT]) {
         $map = explode(";", $newSettings[DBFarmRole::SETIING_CLOUDSTACK_STATIC_NAT_MAP]);
         foreach ($map as $ipconfig) {
             list($serverIndex, $ipAddress) = explode("=", $ipconfig);
             if (!$serverIndex) {
                 continue;
             }
             $dbServer = false;
             try {
                 $dbServer = DBServer::LoadByFarmRoleIDAndIndex($dbFarmRole->ID, $serverIndex);
                 if ($dbServer->remoteIp == $ipAddress) {
                     continue;
                 }
                 // Remove old association
                 $db->Execute("\n                            DELETE FROM elastic_ips WHERE farm_roleid = ? AND instance_index=?\n                        ", array($dbFarmRole->ID, $serverIndex));
             } catch (Exception $e) {
             }
             // Allocate new IP if needed
             if (!$ipAddress || $ipAddress == '0.0.0.0') {
                 if ($dbServer) {
                     $ipAddress = self::setStaticNatForServer($dbServer);
                 } else {
                     continue;
                 }
             } else {
                 //Remove old IP association
                 $db->Execute("\n                            DELETE FROM elastic_ips WHERE ipaddress=?\n                        ", array($ipAddress));
                 $info = $cs->listPublicIpAddresses(null, null, null, null, null, $ipAddress);
                 $info = $info->publicipaddress[0];
                 // Associate IP with server in our db
                 $db->Execute("INSERT INTO elastic_ips SET\n                            env_id=?,\n                            farmid=?,\n                            farm_roleid=?,\n                            ipaddress=?,\n                            state='0',\n                            instance_id='',\n                            clientid=?,\n                            instance_index=?,\n                            allocation_id=?\n                        ", array($dbFarm->EnvID, $dbFarmRole->FarmID, $dbFarmRole->ID, $ipAddress, $dbFarm->ClientID, $serverIndex, $info->id));
             }
             $ipInfo = $db->GetRow("SELECT allocation_id FROM elastic_ips WHERE ipaddress = ? LIMIT 1", $ipAddress);
             // Associate IP on AWS with running server
             if ($dbServer) {
                 try {
                     $db->Execute("UPDATE elastic_ips SET state='1', server_id = ? WHERE ipaddress = ?", array($dbServer->serverId, $ipAddress));
                     $update = false;
                     if ($dbServer->remoteIp != $ipAddress) {
                         if ($dbServer && $dbServer->status == SERVER_STATUS::RUNNING) {
                             $fireEvent = self::associateIpAddress($dbServer, $ipAddress, $ipInfo['allocation_id']);
                         }
                     }
                     if ($fireEvent) {
                         $event = new IPAddressChangedEvent($dbServer, $ipAddress, $dbServer->localIp);
                         Scalr::FireEvent($dbServer->farmId, $event);
                     }
                 } catch (Exception $e) {
                 }
             }
         }
     }
 }
Esempio n. 9
0
 public function xListAction()
 {
     $data = $this->db->GetAll('SELECT id, name, type, comments, target_id as targetId, target_server_index as targetServerIndex, target_type as targetType, start_time as startTime,
         end_time as endTime, last_start_time as lastStartTime, restart_every as restartEvery, config,
         status, timezone FROM `scheduler` WHERE `env_id` = ?', [$this->getEnvironmentId()]);
     foreach ($data as &$row) {
         switch ($row['targetType']) {
             case Scalr_SchedulerTask::TARGET_FARM:
                 try {
                     $DBFarm = DBFarm::LoadByID($row['targetId']);
                     $row['targetName'] = $DBFarm->Name;
                 } catch (Exception $e) {
                 }
                 break;
             case Scalr_SchedulerTask::TARGET_ROLE:
                 try {
                     $DBFarmRole = DBFarmRole::LoadByID($row['targetId']);
                     $row['targetName'] = $DBFarmRole->GetRoleObject()->name;
                     $row['targetFarmId'] = $DBFarmRole->FarmID;
                     $row['targetFarmName'] = $DBFarmRole->GetFarmObject()->Name;
                 } catch (Exception $e) {
                 }
                 break;
             case Scalr_SchedulerTask::TARGET_INSTANCE:
                 try {
                     $DBServer = DBServer::LoadByFarmRoleIDAndIndex($row['targetId'], $row['targetServerIndex']);
                     $row['targetName'] = "({$DBServer->remoteIp})";
                     $DBFarmRole = $DBServer->GetFarmRoleObject();
                     $row['targetFarmId'] = $DBServer->farmId;
                     $row['targetFarmName'] = $DBFarmRole->GetFarmObject()->Name;
                     $row['targetRoleId'] = $DBServer->farmRoleId;
                     $row['targetRoleName'] = $DBFarmRole->GetRoleObject()->name;
                 } catch (Exception $e) {
                 }
                 break;
             default:
                 break;
         }
         //$row['type'] = Scalr_SchedulerTask::getTypeByName($row['type']);
         $row['startTime'] = $row['startTime'] ? Scalr_Util_DateTime::convertDateTime($row['startTime'], $row['timezone']) : 'Now';
         $row['endTime'] = $row['endTime'] ? Scalr_Util_DateTime::convertDateTime($row['endTime'], $row['timezone']) : 'Never';
         $row['lastStartTime'] = $row['lastStartTime'] ? Scalr_Util_DateTime::convertDateTime($row['lastStartTime'], $row['timezone']) : '';
         $row['config'] = unserialize($row['config']);
         $script = Script::findPk($row['config']['scriptId']);
         if ($script) {
             $row['config']['scriptName'] = $script->name;
         }
     }
     $this->response->data(['data' => $data]);
 }
Esempio n. 10
0
 function Run()
 {
     global $db;
     $time = microtime(true);
     $db->Execute("\r\n\t\t\t\tCREATE TABLE IF NOT EXISTS `scheduler` (\r\n\t\t\t\t  `id` int(11) NOT NULL AUTO_INCREMENT,\r\n\t\t\t\t  `name` varchar(255) DEFAULT NULL,\r\n\t\t\t\t  `type` varchar(255) DEFAULT NULL,\r\n\t\t\t\t  `target_id` varchar(255) DEFAULT NULL COMMENT 'id of farm, farm_role or farm_role:index from other tables',\r\n\t\t\t\t  `target_type` varchar(255) DEFAULT NULL COMMENT 'farm, role or instance type',\r\n\t\t\t\t  `start_time` datetime DEFAULT NULL COMMENT 'start task''s time',\r\n\t\t\t\t  `end_time` datetime DEFAULT NULL COMMENT 'end task by this time',\r\n\t\t\t\t  `last_start_time` datetime DEFAULT NULL COMMENT 'the last time task was started',\r\n\t\t\t\t  `restart_every` int(11) DEFAULT '0' COMMENT 'restart task every N minutes',\r\n\t\t\t\t  `config` text COMMENT 'arguments for action',\r\n\t\t\t\t  `order_index` int(11) DEFAULT NULL COMMENT 'task order',\r\n\t\t\t\t  `timezone` varchar(100) DEFAULT NULL,\r\n\t\t\t\t  `status` varchar(11) DEFAULT NULL COMMENT 'active, suspended, finished',\r\n\t\t\t\t  `account_id` int(11) DEFAULT NULL COMMENT 'Task belongs to selected account',\r\n\t\t\t\t  `env_id` int(11) DEFAULT NULL,\r\n\t\t\t\t  PRIMARY KEY (`id`),\r\n\t\t\t\t  KEY `index` (`name`,`type`,`start_time`,`end_time`,`last_start_time`,`restart_every`,`order_index`,`status`,`account_id`,`env_id`)\r\n\t\t\t\t) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;\r\n\t\t\t");
     $cnt = 0;
     foreach ($db->GetAll('SELECT * FROM scheduler_tasks') as $taskOld) {
         $task = Scalr_SchedulerTask::init();
         $task->name = $taskOld['task_name'];
         $task->type = $taskOld['task_type'];
         $task->targetId = $taskOld['target_id'];
         $task->targetType = $taskOld['target_type'];
         $task->timezone = $taskOld['timezone'];
         $timezone = new DateTimeZone($taskOld['timezone']);
         $startTm = new DateTime($taskOld['start_time_date']);
         $endTm = new DateTime($taskOld['end_time_date']);
         $lastStartTm = new DateTime($taskOld['last_start_time']);
         // old time in timezone (from record) to server time (timezone leave for UI)
         Scalr_Util_DateTime::convertDateTime($startTm, null, $timezone);
         Scalr_Util_DateTime::convertDateTime($endTm, null, $timezone);
         Scalr_Util_DateTime::convertDateTime($lastStartTm, null, $timezone);
         $task->startTime = $startTm->format('Y-m-d H:i:s');
         $task->endTime = $endTm->format('Y-m-d H:i:s');
         $task->lastStartTime = $taskOld['last_start_time'] ? $lastStartTm->format('Y-m-d H:i:s') : NULL;
         switch ($taskOld['target_type']) {
             case SCRIPTING_TARGET::FARM:
                 try {
                     $DBFarm = DBFarm::LoadByID($taskOld['target_id']);
                 } catch (Exception $e) {
                     continue 2;
                 }
                 break;
             case SCRIPTING_TARGET::ROLE:
                 try {
                     $DBFarmRole = DBFarmRole::LoadByID($taskOld['target_id']);
                     $a = $DBFarmRole->GetRoleObject()->name;
                     $a = $DBFarmRole->FarmID;
                     $a = $DBFarmRole->GetFarmObject()->Name;
                 } catch (Exception $e) {
                     continue 2;
                 }
                 break;
             case SCRIPTING_TARGET::INSTANCE:
                 $serverArgs = explode(':', $taskOld['target_id']);
                 try {
                     $DBServer = DBServer::LoadByFarmRoleIDAndIndex($serverArgs[0], $serverArgs[1]);
                     $a = "({$DBServer->remoteIp})";
                     $DBFarmRole = $DBServer->GetFarmRoleObject();
                     $a = $DBServer->farmId;
                     $a = $DBFarmRole->GetFarmObject()->Name;
                     $a = $DBServer->farmRoleId;
                     $a = $DBFarmRole->GetRoleObject()->name;
                 } catch (Exception $e) {
                     continue 2;
                 }
                 break;
         }
         $config = unserialize($taskOld['task_config']);
         $r = array();
         switch ($task->type) {
             case Scalr_SchedulerTask::SCRIPT_EXEC:
                 $r['scriptId'] = (string) $config['script_id'];
                 unset($config['script_id']);
                 $r['scriptIsSync'] = (string) $config['issync'];
                 unset($config['issync']);
                 $r['scriptTimeout'] = (string) $config['timeout'];
                 unset($config['timeout']);
                 $r['scriptVersion'] = (string) $config['revision'];
                 unset($config['revision']);
                 $r['scriptOptions'] = $config;
                 break;
             case Scalr_SchedulerTask::LAUNCH_FARM:
                 break;
             case Scalr_SchedulerTask::TERMINATE_FARM:
                 $r['deleteDNSZones'] = $config['deleteDNS'];
                 $r['deleteCloudObjects'] = $config['keep_elastic_ips'] == '1' || $config['keep_ebs'] == '1' ? NULL : '1';
                 break;
         }
         $task->config = $r;
         $task->restartEvery = $taskOld['restart_every'];
         $task->orderIndex = $taskOld['order_index'];
         $task->status = $taskOld['status'];
         $task->accountId = $taskOld['client_id'];
         $task->envId = $taskOld['env_id'];
         $task->save();
     }
     print "Done.\n";
     $t = round(microtime(true) - $time, 2);
     print "Upgrade process took {$t} seconds\n\n\n";
 }