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;
}
}
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;
}
}
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());
}
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();
}
}
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;
}
Aggregations