Scalr\Modules\Platforms\Openstack\Helpers\OpenstackHelper::removeServerFloatingIp PHP Метод

removeServerFloatingIp() публичный статический Метод

public static removeServerFloatingIp ( DBServer $dbServer )
$dbServer DBServer
    public static function removeServerFloatingIp(\DBServer $dbServer)
    {
        try {
            if ($dbServer->GetProperty(\OPENSTACK_SERVER_PROPERTIES::FLOATING_IP)) {
                if ($dbServer->farmRoleId) {
                    if ($dbServer->GetFarmRoleObject()->GetSetting(Entity\FarmRoleSetting::OPENSTACK_KEEP_FIP_ON_SUSPEND)) {
                        if (in_array($dbServer->status, array(\SERVER_STATUS::PENDING_SUSPEND, \SERVER_STATUS::SUSPENDED)) || $dbServer->GetRealStatus()->isSuspended()) {
                            return false;
                        }
                    }
                }
                $environment = $dbServer->GetEnvironmentObject();
                $osClient = $environment->openstack($dbServer->platform, $dbServer->GetCloudLocation());
                $ipId = $dbServer->GetProperty(\OPENSTACK_SERVER_PROPERTIES::FLOATING_IP_ID);
                if ($osClient->hasService('network')) {
                    $osClient->network->floatingIps->delete($ipId);
                } else {
                    $osClient->servers->deleteFloatingIp($ipId);
                }
                $dbServer->SetProperties(array(\OPENSTACK_SERVER_PROPERTIES::FLOATING_IP => null, \OPENSTACK_SERVER_PROPERTIES::FLOATING_IP_ID => null));
            }
        } catch (Exception $e) {
            \Scalr::getContainer()->logger("OpenStackObserver")->fatal("OpenStackObserver observer failed: " . $e->getMessage());
        }
    }

Usage Example

Пример #1
0
 public function OnHostDown(\HostDownEvent $event)
 {
     if (!$event->DBServer->isOpenstack()) {
         return;
     }
     // DO NOT remove Floating IP from suspended server.
     // Consider make this configurable
     if ($event->isSuspended) {
         return;
     }
     OpenstackHelper::removeServerFloatingIp($event->DBServer);
 }
All Usage Examples Of Scalr\Modules\Platforms\Openstack\Helpers\OpenstackHelper::removeServerFloatingIp