Example #1
0
File: Ec2.php Project: mheydt/scalr
 public function xListElbAction()
 {
     $aws = $this->getEnvironment()->aws($this->getParam('cloudLocation'));
     $response = $aws->elb->describeLoadBalancers();
     $data = array();
     /* @var $elb \Scalr\Service\Aws\Elb\DataType\LoadBalancerDescriptionData */
     foreach ($response as $elb) {
         $info = array('name' => $elb->loadBalancerName, 'hostname' => $elb->dnsName);
         $farmRoleService = CloudResource::findPk($elb->loadBalancerName, CloudResource::TYPE_AWS_ELB, $this->environment->id, \SERVER_PLATFORMS::EC2, $this->getParam('cloudLocation'));
         if ($farmRoleService) {
             $dbFarmRole = DBFarmRole::LoadByID($farmRoleService->farmRoleId);
             $info['used'] = true;
             $info['farmRoleId'] = $dbFarmRole->ID;
             $info['farmId'] = $dbFarmRole->FarmID;
             $info['roleName'] = $dbFarmRole->GetRoleObject()->name;
             $info['farmName'] = $dbFarmRole->GetFarmObject()->Name;
         }
         //OLD notation
         try {
             $farmRoleId = $this->db->GetOne("SELECT farm_roleid FROM farm_role_settings WHERE name='lb.name' AND value=? LIMIT 1", array($elb->loadBalancerName));
             if ($farmRoleId) {
                 $dbFarmRole = DBFarmRole::LoadByID($farmRoleId);
                 $info['used'] = true;
                 $info['farmRoleId'] = $dbFarmRole->ID;
                 $info['farmId'] = $dbFarmRole->FarmID;
                 $info['roleName'] = $dbFarmRole->GetRoleObject()->name;
                 $info['farmName'] = $dbFarmRole->GetFarmObject()->Name;
             }
         } catch (Exception $e) {
         }
         $data[] = $info;
     }
     $this->response->data(array('data' => $data));
 }
Example #2
0
 /**
  * Get db instance details
  *
  * @param Aws                    $aws
  * @param DBInstanceData         $dbinstance
  * @param SecurityGroupList|null $vpcSglist      optional
  * @param DBClusterList|null     $clusters       optional
  * @return mixed
  * @throws Scalr_Exception_Core
  */
 private function getDbInstanceData(Aws $aws, DBInstanceData $dbinstance, $vpcSglist = null, $clusters = null)
 {
     $cloudLocation = $aws->getRegion();
     $createdTime = $dbinstance->instanceCreateTime;
     $dbinstance = $dbinstance->toArray(true);
     foreach ($dbinstance['VpcSecurityGroups'] as &$vpcSg) {
         $vpcSecurityGroupName = null;
         if (isset($vpcSglist)) {
             foreach ($vpcSglist as $vpcSqData) {
                 /* @var $vpcSqData \Scalr\Service\Aws\Ec2\DataType\SecurityGroupData */
                 if ($vpcSqData->groupId == $vpcSg['VpcSecurityGroupId']) {
                     $vpcSecurityGroupName = $vpcSqData->groupName;
                     $vpcId = $vpcSqData->vpcId;
                     break;
                 }
             }
         }
         $vpcSg = ['vpcSecurityGroupId' => $vpcSg['VpcSecurityGroupId'], 'vpcSecurityGroupName' => $vpcSecurityGroupName];
     }
     $dbinstance['VpcId'] = !empty($vpcId) ? $vpcId : null;
     $dbinstance['DBSubnetGroupName'] = isset($dbinstance['DBSubnetGroup']['DBSubnetGroupName']) ? $dbinstance['DBSubnetGroup']['DBSubnetGroupName'] : null;
     foreach ($dbinstance['DBSecurityGroups'] as &$dbSg) {
         $dbSg = $dbSg['DBSecurityGroupName'];
     }
     foreach ($dbinstance['OptionGroupMembership'] as &$member) {
         $dbinstance['OptionGroupName'] = $member['OptionGroupName'];
         break;
     }
     foreach ($dbinstance['DBParameterGroups'] as &$param) {
         $dbinstance['DBParameterGroup'] = $param['DBParameterGroupName'];
         break;
     }
     $dbinstance['Address'] = $dbinstance['Endpoint']['Address'];
     $dbinstance['Port'] = (string) $dbinstance['Endpoint']['Port'];
     $dbinstance['InstanceCreateTime'] = Scalr_Util_DateTime::convertTz($createdTime);
     $dbinstance['AllocatedStorage'] = (string) $dbinstance['AllocatedStorage'];
     if ($dbinstance['StorageEncrypted']) {
         /* @var $key Aws\Kms\DataType\AliasData */
         foreach ($aws->kms->alias->list() as $key) {
             if (str_replace($key->aliasName, "key/{$key->targetKeyId}", $key->aliasArn) == $dbinstance['KmsKeyId']) {
                 $dbinstance['KmsKeyId'] = $key->aliasName;
                 break;
             }
         }
     }
     if (!empty($dbinstance['DBClusterIdentifier']) && isset($clusters)) {
         foreach ($clusters as $cluster) {
             /* @var $cluster DBClusterData */
             if ($cluster->dBClusterIdentifier == $dbinstance['DBClusterIdentifier']) {
                 foreach ($cluster->dBClusterMembers as $member) {
                     /* @var $member ClusterMemberData */
                     if ($dbinstance['DBInstanceIdentifier'] == $member->dBInstanceIdentifier) {
                         $dbinstance['isReplica'] = !$member->isClusterWriter;
                         break;
                     }
                 }
                 $dbinstance['MultiAZ'] = true;
                 break;
             }
         }
     } else {
         $dbinstance['isReplica'] = !empty($dbinstance['ReadReplicaSourceDBInstanceIdentifier']) ? true : false;
         $dbinstance['MultiAZ'] = $dbinstance['MultiAZ'];
     }
     /* @var $cloudResource CloudResource */
     $cloudResource = CloudResource::findPk($dbinstance['DBInstanceIdentifier'], CloudResource::TYPE_AWS_RDS, $this->getEnvironmentId(), \SERVER_PLATFORMS::EC2, $cloudLocation);
     if ($cloudResource) {
         $dbinstance['farmId'] = $cloudResource->farmId;
         $dbinstance['farmName'] = $this->db->GetOne("SELECT name FROM farms WHERE id=? LIMIT 1", [$cloudResource->farmId]);
     }
     return $dbinstance;
 }
Example #3
0
 /**
  * xListInstancesAction
  *
  * @param string $cloudLocation  DB Instance region
  * @throws Scalr_Exception_Core
  */
 public function xListInstancesAction($cloudLocation)
 {
     $this->request->defineParams(['sort' => ['type' => 'json', 'default' => ['property' => 'id', 'direction' => 'ASC']]]);
     $aws = $this->getEnvironment()->aws($cloudLocation);
     $rows = $aws->rds->dbInstance->describe();
     $data = [];
     foreach ($rows as $dbInstance) {
         /* @var $dbInstance \Scalr\Service\Aws\Rds\DataType\DBInstanceData */
         $data[] = array('engine' => (string) $dbInstance->engine, 'status' => (string) $dbInstance->dBInstanceStatus, 'hostname' => isset($dbInstance->endpoint) ? (string) $dbInstance->endpoint->address : '', 'port' => isset($dbInstance->endpoint) ? (string) $dbInstance->endpoint->port : '', 'name' => (string) $dbInstance->dBInstanceIdentifier, 'username' => (string) $dbInstance->masterUsername, 'type' => (string) $dbInstance->dBInstanceClass, 'storage' => (string) $dbInstance->allocatedStorage, 'dtadded' => $dbInstance->instanceCreateTime, 'avail_zone' => (string) $dbInstance->availabilityZone, 'engineVersion' => $dbInstance->engineVersion, 'multiAz' => $dbInstance->multiAZ, 'isReplica' => !empty($dbInstance->readReplicaSourceDBInstanceIdentifier) ? 1 : 0);
     }
     $response = $this->buildResponseFromData($data, ['name']);
     foreach ($response['data'] as &$row) {
         $row['dtadded'] = $row['dtadded'] ? Scalr_Util_DateTime::convertTz($row['dtadded']) : '';
         $cloudResource = CloudResource::findPk($row['name'], $this->getEnvironmentId(), \SERVER_PLATFORMS::EC2, $cloudLocation);
         if ($cloudResource) {
             $row['farmId'] = $cloudResource->farmId;
             $row['farmName'] = $this->db->GetOne("SELECT name FROM farms WHERE id=? LIMIT 1", [$cloudResource->farmId]);
         }
     }
     $this->response->data($response);
 }
Example #4
0
File: Elb.php Project: mheydt/scalr
 /**
  * @param string    $cloudLocation      Ec2 region
  * @param string    $placement          optional Placement
  * @param int       $limit              optional Limit
  * @throws Exception
  * @throws Scalr_Exception_Core
  */
 public function xListElasticLoadBalancersAction($cloudLocation, $placement = null, $limit = null)
 {
     // We're using this method in dropdown in farm settings to get list of available ELBs
     // We need to ignore limit, because otherwise only first 20 ELBs are available in farm
     $ignoreLimit = !isset($limit) || !$limit ? true : false;
     $elb = $this->getEnvironment()->aws($cloudLocation)->elb;
     if ($placement == 'ec2') {
         $p = PlatformFactory::NewPlatform(SERVER_PLATFORMS::EC2);
         $defaultVpc = $p->getDefaultVpc($this->environment, $cloudLocation);
         if ($defaultVpc) {
             $placement = $defaultVpc;
         }
     }
     $rowz1 = [];
     /* @var $lb LoadBalancerDescriptionData */
     foreach ($elb->loadBalancer->describe() as $lb) {
         if ($placement) {
             if ($placement == 'ec2' && $lb->vpcId != null) {
                 continue;
             }
             if ($placement != 'ec2' && $lb->vpcId != $placement) {
                 continue;
             }
         }
         $info = ["name" => $lb->loadBalancerName, "dtcreated" => $lb->createdTime->format('c'), "dnsName" => $lb->dnsName, "availZones" => $lb->availabilityZones, "subnets" => $lb->subnets, "vpcId" => $lb->vpcId];
         $farmRoleService = CloudResource::findPk($lb->loadBalancerName, CloudResource::TYPE_AWS_ELB, $this->getEnvironmentId(), \SERVER_PLATFORMS::EC2, $cloudLocation);
         /* @var $farmRoleService CloudResource*/
         if ($farmRoleService) {
             $dbFarmRole = DBFarmRole::LoadByID($farmRoleService->farmRoleId);
             $info['used'] = true;
             $info['farmRoleId'] = $dbFarmRole->ID;
             $info['farmId'] = $dbFarmRole->FarmID;
             $info['roleName'] = $dbFarmRole->GetRoleObject()->name;
             $info['farmName'] = $dbFarmRole->GetFarmObject()->Name;
         }
         $rowz1[] = $info;
     }
     $response = $this->buildResponseFromData($rowz1, ['name', 'dnsname', 'farmName', 'roleName'], $ignoreLimit);
     foreach ($response['data'] as $k => $row) {
         $response['data'][$k]['dtcreated'] = Scalr_Util_DateTime::convertTz($row['dtcreated']);
     }
     $this->response->data($response);
 }
Example #5
0
 /**
  * xRestoreClusterAction
  *
  * @param string   $cloudLocation           Ec2 region
  * @param string   $DBClusterIdentifier     DBClusterIdentifier field
  * @param string   $DBSnapshotIdentifier    DBSnapshotIdentifier field
  * @param string   $Engine                  Aurora engine
  * @param string   $VpcId                   Vpc id
  * @param int      $Port                    Port value
  * @param string   $DBInstanceClass         Db instance class
  * @param bool     $PublicAccessible        True if instance is public accessible
  * @param RawData  $MasterUserPassword      DB Password
  * @param JsonData $SubnetIds               optional List of subnet ids
  * @param string   $OptionGroupName         optional Option group name
  * @param JsonData $AvailabilityZones       optional List of availability zones
  * @param string   $DBSubnetGroupName       optional Subnet group name
  * @param bool     $AutoMinorVersionUpgrade optional Auto minor version upgrade
  */
 public function xRestoreClusterAction($cloudLocation, $DBClusterIdentifier, $DBSnapshotIdentifier, $Engine, $VpcId, $Port, $DBInstanceClass, $PublicAccessible, RawData $MasterUserPassword, JsonData $SubnetIds = null, $OptionGroupName = null, JsonData $AvailabilityZones = null, $DBSubnetGroupName = null, $AutoMinorVersionUpgrade = null)
 {
     $this->request->restrictAccess(Acl::RESOURCE_AWS_RDS, Acl::PERM_AWS_RDS_MANAGE);
     $aws = $this->getAwsClient($cloudLocation);
     $request = new RestoreDBClusterFromSnapshotRequestData($DBClusterIdentifier, $DBSnapshotIdentifier);
     //NOTE: Options groups currently not supported for db clusters
     //        $optionList = $aws->rds->optionGroup->describe($Engine);
     //
     //        foreach ($optionList as $option) {
     //            /* @var $option OptionGroupData */
     //            if ($option->optionGroupName == $OptionGroupName) {
     //                $optionGroup = $option;
     //                break;
     //            }
     //        }
     //
     //        if (isset($optionGroup)) {
     //            $request->optionGroupName = $optionGroup->optionGroupName;
     //        }
     $request->port = $Port ?: null;
     $request->availabilityZones = count($AvailabilityZones) > 0 ? (array) $AvailabilityZones : null;
     $request->dBSubnetGroupName = $DBSubnetGroupName ?: null;
     $request->engine = $Engine;
     $result = self::loadController('Aws', 'Scalr_UI_Controller_Tools')->checkVpcPolicy($VpcId, $SubnetIds, $cloudLocation);
     if ($result === true) {
         $restoreResponse = $aws->rds->dbCluster->restoreFromSnapshot($request);
         try {
             $instance = $aws->rds->dbInstance->describe($DBClusterIdentifier)->get();
         } catch (Exception $e) {
             $instance = false;
         }
         if (!$instance) {
             $dbInstanceIdentifier = $DBClusterIdentifier;
         } else {
             $dbInstanceIdentifier = $DBClusterIdentifier . '-restored';
         }
         $createRequest = new CreateDBInstanceRequestData($dbInstanceIdentifier, $DBInstanceClass, $Engine);
         $createRequest->dBSubnetGroupName = $DBSubnetGroupName;
         $createRequest->publiclyAccessible = $PublicAccessible;
         $createRequest->licenseModel = 'general-public-license';
         $createRequest->engineVersion = $restoreResponse->engineVersion;
         $createRequest->storageType = 'aurora';
         $createRequest->setTags($this->environment->getAwsTags());
         $createRequest->autoMinorVersionUpgrade = $AutoMinorVersionUpgrade;
         $createRequest->dBClusterIdentifier = $restoreResponse->dBClusterIdentifier;
         $aws->rds->dbInstance->create($createRequest);
         CloudResource::deletePk($dbInstanceIdentifier, CloudResource::TYPE_AWS_RDS, $this->getEnvironmentId(), \SERVER_PLATFORMS::EC2, $cloudLocation);
         $this->response->success("DB Cluster has been successfully restored from Snapshot");
     } else {
         $this->response->failure($result);
     }
 }
Example #6
0
 public static function farmUpdateRoleSettings(DBFarmRole $DBFarmRole, $oldSettings, $newSettings)
 {
     //Conver OLD ELB settings into NEW ELB SETTINGS
     if ($newSettings[DBFarmRole::SETTING_BALANCING_USE_ELB] == 1 && !$newSettings[DBFarmRole::SETTING_AWS_ELB_ENABLED]) {
         $newSettings[DBFarmRole::SETTING_AWS_ELB_ENABLED] = 1;
         $newSettings[DBFarmRole::SETTING_AWS_ELB_ID] = $newSettings[DBFarmRole::SETTING_BALANCING_NAME];
         $DBFarmRole->SetSetting(DBFarmRole::SETTING_AWS_ELB_ENABLED, 1, DBFarmRole::TYPE_CFG);
         $DBFarmRole->SetSetting(DBFarmRole::SETTING_AWS_ELB_ID, $newSettings[DBFarmRole::SETTING_BALANCING_NAME], DBFarmRole::TYPE_LCL);
     }
     //NEW ELB:
     try {
         $DBFarm = $DBFarmRole->GetFarmObject();
         $elb = $DBFarm->GetEnvironmentObject()->aws($DBFarmRole)->elb;
         /*
          * aws.elb.enabled
          * aws.elb.id":"scalr-97f8a108ce4100-775",
          * aws.elb.remove
          */
         if ($newSettings[DBFarmRole::SETTING_AWS_ELB_ENABLED] && $newSettings[DBFarmRole::SETTING_AWS_ELB_ID]) {
             if ($oldSettings[DBFarmRole::SETTING_AWS_ELB_ID] == $newSettings[DBFarmRole::SETTING_AWS_ELB_ID]) {
                 return true;
             }
             $service = CloudResource::findPk($newSettings[DBFarmRole::SETTING_AWS_ELB_ID], $DBFarm->EnvID, \SERVER_PLATFORMS::EC2, $DBFarmRole->CloudLocation);
             if (!$service) {
                 // Setup new service
                 // ADD ELB to role_cloud_services
                 $service = new CloudResource();
                 $service->id = $newSettings[DBFarmRole::SETTING_AWS_ELB_ID];
                 $service->type = CloudResource::TYPE_AWS_ELB;
                 $service->platform = \SERVER_PLATFORMS::EC2;
                 $service->cloudLocation = $DBFarmRole->CloudLocation;
                 $service->envId = $DBFarm->EnvID;
                 $service->farmId = $DBFarmRole->FarmID;
                 $service->farmRoleId = $DBFarmRole->ID;
             } else {
                 if ($service->envId == $DBFarmRole->GetFarmObject()->EnvID) {
                     $service->farmRoleId = $DBFarmRole->ID;
                     $service->farmId = $DBFarmRole->FarmID;
                 } else {
                     $DBFarmRole->SetSetting(DBFarmRole::SETTING_AWS_ELB_ID, $oldSettings[DBFarmRole::SETTING_AWS_ELB_ID]);
                     throw new \Exception("ELB already used on another scalr account/environment");
                 }
             }
             $service->save();
             // Add running instances to ELB
             $servers = $DBFarmRole->GetServersByFilter(array('status' => \SERVER_STATUS::RUNNING));
             $newInstances = array();
             foreach ($servers as $DBServer) {
                 $newInstances[] = $DBServer->GetProperty(\EC2_SERVER_PROPERTIES::INSTANCE_ID);
             }
             try {
                 if (count($newInstances) > 0) {
                     $elb->loadBalancer->registerInstances($newSettings[DBFarmRole::SETTING_AWS_ELB_ID], $newInstances);
                 }
             } catch (\Exception $e) {
             }
             try {
                 //Check and deregister old instances instances
                 $list = $elb->loadBalancer->describeInstanceHealth($newSettings[DBFarmRole::SETTING_AWS_ELB_ID], array());
                 /* @var $instance \Scalr\Service\Aws\Elb\DataType\InstanceStateData */
                 $instances = array();
                 foreach ($list as $instance) {
                     if (!in_array($instance->instanceId, $newInstances)) {
                         array_push($instances, $instance->instanceId);
                     }
                 }
                 if (count($instances) > 0) {
                     $elb->loadBalancer->deregisterInstances($newSettings[DBFarmRole::SETTING_AWS_ELB_ID], $instances);
                 }
             } catch (\Exception $e) {
             }
         } else {
             $clearSettings = true;
         }
         // Remove OLD ELB
         if ($oldSettings[DBFarmRole::SETTING_AWS_ELB_ID]) {
             $oldService = CloudResource::findPk($oldSettings[DBFarmRole::SETTING_AWS_ELB_ID], $DBFarm->EnvID, \SERVER_PLATFORMS::EC2, $DBFarmRole->CloudLocation);
             if ($oldService && $oldService->farmRoleId == $DBFarmRole->ID) {
                 $oldService->delete();
             }
             if ($newSettings['aws.elb.remove']) {
                 $elb->loadBalancer->delete($oldSettings[DBFarmRole::SETTING_AWS_ELB_ID]);
             }
         }
         if ($clearSettings) {
             $DBFarmRole->ClearSettings("aws.elb.");
         }
         // Check and remove OLD ELB settings
         if ($newSettings['aws.elb.enabled'] && $DBFarmRole->GetSetting(DBFarmRole::SETTING_BALANCING_HOSTNAME)) {
             $DBFarmRole->SetSetting(DBFarmRole::SETTING_BALANCING_NAME, null, DBFarmRole::TYPE_LCL);
             $DBFarmRole->SetSetting(DBFarmRole::SETTING_BALANCING_HOSTNAME, null, DBFarmRole::TYPE_LCL);
             $DBFarmRole->SetSetting(DBFarmRole::SETTING_BALANCING_USE_ELB, null, DBFarmRole::TYPE_LCL);
             $DBFarmRole->SetSetting(DBFarmRole::SETTING_BALANCING_HC_HASH, null, DBFarmRole::TYPE_LCL);
             $DBFarmRole->ClearSettings("lb.avail_zone");
             $DBFarmRole->ClearSettings("lb.healthcheck");
             $DBFarmRole->ClearSettings("lb.role.listener");
         }
     } catch (\Exception $e) {
         throw new \Exception("Error with ELB on Role '{$DBFarmRole->GetRoleObject()->name}': {$e->getMessage()}");
     }
 }
Example #7
0
 public function xListElasticLoadBalancersAction()
 {
     $this->request->defineParams(array('filters' => array('type' => 'json')));
     // We're using this method in dropdown in farm settings to get list of available ELBs
     // We need to ignore limit, because otherwise only first 20 ELBs are available in farm
     $ignoreLimit = !$this->getParam('limit') ? true : false;
     $filters = (array) $this->getParam('filters');
     $placement = $this->getParam('placement');
     $vpcId = $this->getParam('vpcId');
     $elb = $this->getEnvironment()->aws($this->getParam('cloudLocation'))->elb;
     if (empty($filters['vpcId']) && array_key_exists('vpcId', $filters)) {
         $p = PlatformFactory::NewPlatform(SERVER_PLATFORMS::EC2);
         $defaultVpc = $p->getDefaultVpc($this->environment, $this->getParam('cloudLocation'));
         if ($defaultVpc) {
             $placement = $defaultVpc;
         }
     }
     if (!empty($vpcId)) {
         $placement = $vpcId;
     }
     $rowz1 = array();
     /* @var $lb LoadBalancerDescriptionData */
     foreach ($elb->loadBalancer->describe() as $lb) {
         if ($vpcId && $vpcId != $lb->vpcId) {
             continue;
         }
         if ($placement) {
             if ($placement == 'ec2' && $lb->vpcId != null) {
                 continue;
             }
             if ($placement != 'ec2' && $lb->vpcId != $placement) {
                 continue;
             }
         }
         $roleid = $this->db->GetOne("SELECT farm_roleid FROM farm_role_settings WHERE name=? AND value=? LIMIT 1", array(DBFarmRole::SETTING_AWS_ELB_ID, $lb->dnsName));
         $farmId = false;
         $farmRoleId = false;
         $farmName = false;
         $roleName = false;
         if ($roleid) {
             try {
                 $DBFarmRole = DBFarmRole::LoadByID($roleid);
                 if ($DBFarmRole instanceof \DBFarmRole && !$this->user->getPermissions()->check($DBFarmRole)) {
                     continue;
                 }
                 $farmId = $DBFarmRole->FarmID;
                 $farmRoleId = $roleid;
                 $farmName = $DBFarmRole->GetFarmObject()->Name;
                 $roleName = $DBFarmRole->GetRoleObject()->name;
             } catch (Exception $e) {
             }
         }
         $info = array("name" => $lb->loadBalancerName, "dtcreated" => $lb->createdTime->format('c'), "dnsName" => $lb->dnsName, "availZones" => $lb->availabilityZones, "subnets" => $lb->subnets, "vpcId" => $lb->vpcId);
         $farmRoleService = CloudResource::findPk($lb->loadBalancerName, $this->getEnvironmentId(), \SERVER_PLATFORMS::EC2, $this->getParam('cloudLocation'));
         if ($farmRoleService) {
             $dbFarmRole = DBFarmRole::LoadByID($farmRoleService->farmRoleId);
             $info['used'] = true;
             $info['farmRoleId'] = $dbFarmRole->ID;
             $info['farmId'] = $dbFarmRole->FarmID;
             $info['roleName'] = $dbFarmRole->GetRoleObject()->name;
             $info['farmName'] = $dbFarmRole->GetFarmObject()->Name;
         }
         $rowz1[] = $info;
     }
     $response = $this->buildResponseFromData($rowz1, array('name', 'dnsname', 'farmName', 'roleName'), $ignoreLimit);
     foreach ($response['data'] as $k => $row) {
         $response['data'][$k]['dtcreated'] = Scalr_Util_DateTime::convertTz($row['dtcreated']);
     }
     $this->response->data($response);
 }
Example #8
0
File: Elb.php Project: scalr/scalr
 /**
  * @param string    $cloudLocation      Ec2 region
  * @param string    $placement          optional Placement
  * @param int       $limit              optional Limit
  * @throws Exception
  * @throws Scalr_Exception_Core
  */
 public function getElasticLoadBalancersList($cloudLocation, $placement = null)
 {
     $elb = $this->getEnvironment()->aws($cloudLocation)->elb;
     if ($placement == 'ec2') {
         $p = PlatformFactory::NewPlatform(SERVER_PLATFORMS::EC2);
         $defaultVpc = $p->getDefaultVpc($this->environment, $cloudLocation);
         if ($defaultVpc) {
             $placement = $defaultVpc;
         }
     }
     $rowz1 = [];
     /* @var $lb LoadBalancerDescriptionData */
     foreach ($elb->loadBalancer->describe() as $lb) {
         if ($placement) {
             if ($placement == 'ec2' && $lb->vpcId != null) {
                 continue;
             }
             if ($placement != 'ec2' && $lb->vpcId != $placement) {
                 continue;
             }
         }
         $info = ["name" => $lb->loadBalancerName, "dtcreated" => Scalr_Util_DateTime::convertTz($lb->createdTime->format('c')), "dnsName" => $lb->dnsName, "availZones" => $lb->availabilityZones, "subnets" => $lb->subnets, "vpcId" => $lb->vpcId];
         $farmRoleService = CloudResource::findPk($lb->loadBalancerName, CloudResource::TYPE_AWS_ELB, $this->getEnvironmentId(), \SERVER_PLATFORMS::EC2, $cloudLocation);
         /* @var $farmRoleService CloudResource*/
         if ($farmRoleService) {
             $dbFarmRole = DBFarmRole::LoadByID($farmRoleService->farmRoleId);
             $info['used'] = true;
             $info['farmRoleId'] = $dbFarmRole->ID;
             $info['farmId'] = $dbFarmRole->FarmID;
             $info['roleName'] = $dbFarmRole->GetRoleObject()->name;
             $info['farmName'] = $dbFarmRole->GetFarmObject()->Name;
             $info['farmRoleAlias'] = $dbFarmRole->Alias;
         }
         $rowz1[] = $info;
     }
     return $rowz1;
 }