Search in sources :

Example 21 with Site

use of com.emc.storageos.coordinator.client.model.Site in project coprhd-controller by CoprHD.

the class DrUtil method isAllSyssvcUp.

/**
 * Check if all syssvc is up and running for specified site
 * @param siteId
 * @return true if all syssvc is running
 */
public boolean isAllSyssvcUp(String siteId) {
    // Get service beacons for given site - - assume syssvc on all sites share same service name in beacon
    try {
        String syssvcName = ((CoordinatorClientImpl) coordinator).getSysSvcName();
        String syssvcVersion = ((CoordinatorClientImpl) coordinator).getSysSvcVersion();
        List<Service> svcs = coordinator.locateAllServices(siteId, syssvcName, syssvcVersion, null, null);
        Site site = this.getSiteFromLocalVdc(siteId);
        log.info("Node count is {}, running syssvc count is", site.getNodeCount(), svcs.size());
        return svcs.size() == site.getNodeCount();
    } catch (CoordinatorException ex) {
        return false;
    }
}
Also used : CoordinatorClientImpl(com.emc.storageos.coordinator.client.service.impl.CoordinatorClientImpl) Site(com.emc.storageos.coordinator.client.model.Site) RetryableCoordinatorException(com.emc.storageos.coordinator.exceptions.RetryableCoordinatorException) CoordinatorException(com.emc.storageos.coordinator.exceptions.CoordinatorException) Service(com.emc.storageos.coordinator.common.Service)

Example 22 with Site

use of com.emc.storageos.coordinator.client.model.Site in project coprhd-controller by CoprHD.

the class CoordinatorClientImpl method isDatabaseServiceUp.

private Boolean isDatabaseServiceUp(String serviceName) {
    try {
        String siteId = _zkConnection.getSiteId();
        List<Service> services = locateAllServices(siteId, serviceName, dbVersionInfo.getSchemaVersion(), null, null);
        DrUtil drUtil = new DrUtil(this);
        Site site = drUtil.getSiteFromLocalVdc(siteId);
        log.info("Node count is {}, running {} count is {}", site.getNodeCount(), serviceName, services.size());
        return services.size() == site.getNodeCount();
    } catch (CoordinatorException e) {
        return false;
    }
}
Also used : Site(com.emc.storageos.coordinator.client.model.Site) CoordinatorException(com.emc.storageos.coordinator.exceptions.CoordinatorException) RetryableCoordinatorException(com.emc.storageos.coordinator.exceptions.RetryableCoordinatorException) DrUtil(com.emc.storageos.coordinator.client.service.DrUtil) Service(com.emc.storageos.coordinator.common.Service) ExecutorService(java.util.concurrent.ExecutorService) PropertyInfoMapper.decodeFromString(com.emc.storageos.coordinator.mapper.PropertyInfoMapper.decodeFromString)

Example 23 with Site

use of com.emc.storageos.coordinator.client.model.Site in project coprhd-controller by CoprHD.

the class CoordinatorClientImpl method createSiteSpecificSection.

private void createSiteSpecificSection() throws Exception {
    // create VDC parent ZNode for site config in ZK
    ConfigurationImpl vdcConfig = new ConfigurationImpl();
    vdcConfig.setKind(Site.CONFIG_KIND);
    vdcConfig.setId(vdcShortId);
    persistServiceConfiguration(vdcConfig);
    // insert DR active site info to ZK
    Site site = new Site();
    site.setUuid(getSiteId());
    site.setName("Default Site");
    site.setVdcShortId(vdcShortId);
    site.setSiteShortId(Constants.CONFIG_DR_FIRST_SITE_SHORT_ID);
    site.setState(SiteState.ACTIVE);
    site.setCreationTime(System.currentTimeMillis());
    if (StringUtils.isBlank(vip)) {
        site.setVip(PropertyConstants.IPV4_ADDR_DEFAULT);
    } else {
        site.setVip(vip);
    }
    if (StringUtils.isBlank(vip6)) {
        site.setVip6(PropertyConstants.IPV6_ADDR_DEFAULT);
    } else {
        site.setVip6(DualInetAddress.normalizeInet6Address(vip6));
    }
    site.setNodeCount(getNodeCount());
    Map<String, DualInetAddress> controlNodes = getInetAddessLookupMap().getControllerNodeIPLookupMap();
    Map<String, String> ipv4Addresses = new HashMap<>();
    Map<String, String> ipv6Addresses = new HashMap<>();
    String nodeId;
    int nodeIndex = 1;
    for (Map.Entry<String, DualInetAddress> cnode : controlNodes.entrySet()) {
        nodeId = VDC_NODE_PREFIX + nodeIndex++;
        DualInetAddress addr = cnode.getValue();
        if (addr.hasInet4()) {
            ipv4Addresses.put(nodeId, addr.getInet4());
        } else {
            ipv4Addresses.put(nodeId, PropertyConstants.IPV4_ADDR_DEFAULT);
        }
        if (addr.hasInet6()) {
            ipv6Addresses.put(nodeId, DualInetAddress.normalizeInet6Address(addr.getInet6()));
        } else {
            ipv6Addresses.put(nodeId, PropertyConstants.IPV6_ADDR_DEFAULT);
        }
    }
    site.setHostIPv4AddressMap(ipv4Addresses);
    site.setHostIPv6AddressMap(ipv6Addresses);
    persistServiceConfiguration(site.toConfiguration());
    new DrUtil(this).setLocalVdcShortId(vdcShortId);
    // update Site version in ZK
    SiteInfo siteInfo = new SiteInfo(System.currentTimeMillis(), SiteInfo.NONE);
    setTargetInfo(siteInfo);
    addSite(site.getUuid());
    log.info("Create site specific section for {} successfully", site.getUuid());
}
Also used : Site(com.emc.storageos.coordinator.client.model.Site) SiteInfo(com.emc.storageos.coordinator.client.model.SiteInfo) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) DrUtil(com.emc.storageos.coordinator.client.service.DrUtil) PropertyInfoMapper.decodeFromString(com.emc.storageos.coordinator.mapper.PropertyInfoMapper.decodeFromString) ConfigurationImpl(com.emc.storageos.coordinator.common.impl.ConfigurationImpl) Map(java.util.Map) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) ConcurrentMap(java.util.concurrent.ConcurrentMap)

Example 24 with Site

use of com.emc.storageos.coordinator.client.model.Site in project coprhd-controller by CoprHD.

the class DrUpgradeVoter method isOKForUpgrade.

@Override
public void isOKForUpgrade(String currentVersion, String targetVersion) {
    List<Site> standbySites = drUtil.listStandbySites();
    if (standbySites.isEmpty()) {
        log.info("Not a DR configuration, skipping all DR pre-checks");
        return;
    }
    InterProcessLock lock = null;
    try {
        lock = drUtil.getDROperationLock();
    } finally {
        if (lock != null) {
            try {
                lock.release();
            } catch (Exception e) {
                log.error("Failed to release the DR lock", e);
            }
        }
    }
    List<Site> pausedSites = drUtil.listSitesInState(SiteState.STANDBY_PAUSED);
    if (pausedSites.isEmpty()) {
        log.error("There's no paused standby site for DR Upgrade");
        throw APIException.internalServerErrors.upgradeNotAllowedWithoutPausedSite();
    }
}
Also used : Site(com.emc.storageos.coordinator.client.model.Site) InterProcessLock(org.apache.curator.framework.recipes.locks.InterProcessLock) APIException(com.emc.storageos.svcs.errorhandling.resources.APIException)

Example 25 with Site

use of com.emc.storageos.coordinator.client.model.Site in project coprhd-controller by CoprHD.

the class CoordinatorClientExt method isActiveSiteHealthy.

/**
 * Check if DR active site is stable and there is ZK leader in active site
 *
 * @return true for stable, otherwise false
 */
public boolean isActiveSiteHealthy() {
    DrUtil drUtil = new DrUtil(_coordinator);
    String activeSiteId = drUtil.getActiveSite().getUuid();
    boolean isActiveSiteLeaderAlive = false;
    boolean isActiveSiteStable = false;
    SiteInfo siteInfo = _coordinator.getTargetInfo(SiteInfo.class);
    if (StringUtils.isEmpty(activeSiteId) && SiteInfo.DR_OP_SWITCHOVER.equals(siteInfo.getActionRequired())) {
        activeSiteId = siteInfo.getTargetSiteUUID();
    }
    if (StringUtils.isEmpty(activeSiteId) || drUtil.getLocalSite().getUuid().equals(activeSiteId)) {
        _log.info("Can't find active site id or local site is active, set active healthy as false");
    } else {
        Site activeSite = drUtil.getSiteFromLocalVdc(activeSiteId);
        isActiveSiteLeaderAlive = isZKLeaderAlive(activeSite);
        isActiveSiteStable = isActiveSiteStable(activeSite);
        _log.info("Active site ZK is alive: {}, active site stable is :{}", isActiveSiteLeaderAlive, isActiveSiteStable);
    }
    return isActiveSiteLeaderAlive && isActiveSiteStable;
}
Also used : Site(com.emc.storageos.coordinator.client.model.Site) SiteInfo(com.emc.storageos.coordinator.client.model.SiteInfo) DrUtil(com.emc.storageos.coordinator.client.service.DrUtil)

Aggregations

Site (com.emc.storageos.coordinator.client.model.Site)79 RetryableCoordinatorException (com.emc.storageos.coordinator.exceptions.RetryableCoordinatorException)21 APIException (com.emc.storageos.svcs.errorhandling.resources.APIException)21 CoordinatorException (com.emc.storageos.coordinator.exceptions.CoordinatorException)20 UnknownHostException (java.net.UnknownHostException)18 Produces (javax.ws.rs.Produces)17 InternalServerErrorException (com.emc.storageos.svcs.errorhandling.resources.InternalServerErrorException)16 Path (javax.ws.rs.Path)15 ZkPath (com.emc.storageos.coordinator.common.impl.ZkPath)14 ArrayList (java.util.ArrayList)14 DrUtil (com.emc.storageos.coordinator.client.service.DrUtil)11 CheckPermission (com.emc.storageos.security.authorization.CheckPermission)11 InterProcessLock (org.apache.curator.framework.recipes.locks.InterProcessLock)11 SiteInfo (com.emc.storageos.coordinator.client.model.SiteInfo)10 POST (javax.ws.rs.POST)10 SiteState (com.emc.storageos.coordinator.client.model.SiteState)9 Configuration (com.emc.storageos.coordinator.common.Configuration)8 VirtualDataCenter (com.emc.storageos.db.client.model.VirtualDataCenter)8 Consumes (javax.ws.rs.Consumes)8 ClusterInfo (com.emc.vipr.model.sys.ClusterInfo)6