use of com.emc.storageos.coordinator.client.model.Site in project coprhd-controller by CoprHD.
the class VdcConfigMigration method migrateVdcConfigToZk.
/**
* We store vdc ip addresses in local db(VirtualDataCenter CF) in pre-yoda. Since yoda, we move it
* to zookeeper. We move all vdcs config to zk
*/
private void migrateVdcConfigToZk() {
List<URI> vdcIds = dbClient.queryByType(VirtualDataCenter.class, true);
for (URI vdcId : vdcIds) {
VirtualDataCenter vdc = dbClient.queryObject(VirtualDataCenter.class, vdcId);
if (vdc.getLocal()) {
continue;
}
// Insert vdc info
ConfigurationImpl vdcConfig = new ConfigurationImpl();
vdcConfig.setKind(Site.CONFIG_KIND);
vdcConfig.setId(vdc.getShortId());
coordinatorClient.persistServiceConfiguration(vdcConfig);
// insert DR active site info to ZK
Site site = new Site();
// TODO - we have no way to know site uuid in remote vdc during upgrade
// no harm for now. We don't care site uuid in remote vdc at all
site.setUuid(UUID.randomUUID().toString());
site.setName("Default Active Site");
site.setVdcShortId(vdc.getShortId());
site.setSiteShortId(Constants.CONFIG_DR_FIRST_SITE_SHORT_ID);
site.setHostIPv4AddressMap(vdc.getHostIPv4AddressesMap());
site.setHostIPv6AddressMap(vdc.getHostIPv6AddressesMap());
site.setState(SiteState.ACTIVE);
site.setCreationTime(System.currentTimeMillis());
site.setVip(vdc.getApiEndpoint());
site.setNodeCount(vdc.getHostCount());
coordinatorClient.persistServiceConfiguration(site.toConfiguration());
// update Site version in ZK
SiteInfo siteInfo = new SiteInfo(System.currentTimeMillis(), SiteInfo.NONE);
coordinatorClient.setTargetInfo(siteInfo);
}
log.info("Migrated vdc config from db to zk");
}
use of com.emc.storageos.coordinator.client.model.Site in project coprhd-controller by CoprHD.
the class VdcConfigUtil method genSiteProperties.
private void genSiteProperties(Map<String, String> vdcConfig, String vdcShortId, List<Site> sites) {
String activeSiteId = null;
try {
activeSiteId = drUtil.getActiveSite().getUuid();
} catch (RetryableCoordinatorException e) {
log.warn("Failed to find active site id from ZK, go on since it maybe switchover case");
}
SiteInfo siteInfo = coordinator.getTargetInfo(SiteInfo.class);
Site localSite = drUtil.getLocalSite();
if (StringUtils.isEmpty(activeSiteId) && SiteInfo.DR_OP_SWITCHOVER.equals(siteInfo.getActionRequired())) {
activeSiteId = drUtil.getSiteFromLocalVdc(siteInfo.getTargetSiteUUID()).getUuid();
}
Collections.sort(sites, new Comparator<Site>() {
@Override
public int compare(Site a, Site b) {
return (int) (a.getCreationTime() - b.getCreationTime());
}
});
List<String> shortIds = new ArrayList<>();
for (Site site : sites) {
if (shouldExcludeFromConfig(site)) {
log.info("Ignore site {} of vdc {}", site.getSiteShortId(), site.getVdcShortId());
continue;
}
// this will make it easier to resume the data replication.
if (!drUtil.isLocalSite(site) && (site.getState().equals(SiteState.STANDBY_PAUSING) || site.getState().equals(SiteState.STANDBY_PAUSED) || site.getState().equals(SiteState.STANDBY_REMOVING) || site.getState().equals(SiteState.ACTIVE_FAILING_OVER) || site.getState().equals(SiteState.ACTIVE_DEGRADED))) {
continue;
}
int siteNodeCnt = 0;
Map<String, String> siteIPv4Addrs = site.getHostIPv4AddressMap();
Map<String, String> siteIPv6Addrs = site.getHostIPv6AddressMap();
List<String> siteHosts = getHostsFromIPAddrMap(siteIPv4Addrs, siteIPv6Addrs);
String siteShortId = site.getSiteShortId();
// sort the host names as vipr1, vipr2 ...
Collections.sort(siteHosts);
for (String hostName : siteHosts) {
siteNodeCnt++;
String address = siteIPv4Addrs.get(hostName);
vdcConfig.put(String.format(VDC_SITE_IPADDR_PTN, vdcShortId, siteShortId, siteNodeCnt), address == null ? "" : address);
address = siteIPv6Addrs.get(hostName);
vdcConfig.put(String.format(VDC_SITE_IPADDR6_PTN, vdcShortId, siteShortId, siteNodeCnt), address == null ? "" : address);
}
vdcConfig.put(String.format(VDC_SITE_NODE_COUNT_PTN, vdcShortId, siteShortId), String.valueOf(siteNodeCnt));
vdcConfig.put(String.format(VDC_SITE_VIP_PTN, vdcShortId, siteShortId), site.getVip());
vdcConfig.put(String.format(VDC_SITE_VIP6_PTN, vdcShortId, siteShortId), site.getVip6());
if (drUtil.isLocalSite(site)) {
vdcConfig.put(SITE_MYID, siteShortId);
vdcConfig.put(SITE_MY_UUID, site.getUuid());
}
shortIds.add(siteShortId);
}
Collections.sort(shortIds);
if (drUtil.getLocalVdcShortId().equals(vdcShortId)) {
// right now we assume that SITE_IDS and SITE_IS_STANDBY only makes sense for local VDC
// moving forward this may or may not be the case.
vdcConfig.put(SITE_IDS, StringUtils.join(shortIds, ','));
vdcConfig.put(SITE_IS_STANDBY, String.valueOf(!localSite.getUuid().equals(activeSiteId)));
vdcConfig.put(SITE_ACTIVE_ID, StringUtils.isEmpty(activeSiteId) ? DEFAULT_ACTIVE_SITE_ID : drUtil.getSiteFromLocalVdc(activeSiteId).getSiteShortId());
}
vdcConfig.put(String.format(VDC_SITE_IDS, vdcShortId), StringUtils.join(shortIds, ','));
}
use of com.emc.storageos.coordinator.client.model.Site in project coprhd-controller by CoprHD.
the class DrUtil method listStandbySites.
/**
* List all standby sites in current vdc
*
* @return list of standby sites
*/
public List<Site> listStandbySites() {
Site activeSite = getActiveSite();
List<Site> result = new ArrayList<>();
for (Site site : listSites()) {
if (!site.getUuid().equals(activeSite.getUuid())) {
result.add(site);
}
}
return result;
}
use of com.emc.storageos.coordinator.client.model.Site in project coprhd-controller by CoprHD.
the class DrUtil method getVdcSiteMap.
/**
* Get a map of all sites of all vdcs.
* The keys are VDC short ids, the values are lists of sites within each vdc
*
* @return map of vdc -> list of sites
*/
public Map<String, List<Site>> getVdcSiteMap() {
Map<String, List<Site>> vdcSiteMap = new HashMap<>();
for (Configuration vdcConfig : coordinator.queryAllConfiguration(Site.CONFIG_KIND)) {
String siteKind = String.format("%s/%s", Site.CONFIG_KIND, vdcConfig.getId());
List<Site> sites = new ArrayList<>();
for (Configuration siteConfig : coordinator.queryAllConfiguration(siteKind)) {
sites.add(new Site(siteConfig));
}
if (sites.size() > 0) {
vdcSiteMap.put(vdcConfig.getId(), sites);
}
}
return vdcSiteMap;
}
use of com.emc.storageos.coordinator.client.model.Site in project coprhd-controller by CoprHD.
the class DrUtil method getSiteFromLocalVdc.
/**
* Load site information from local vdc
*
* @param siteId
* @return
*/
public Site getSiteFromLocalVdc(String siteId) {
String siteKind = String.format("%s/%s", Site.CONFIG_KIND, getLocalVdcShortId());
Configuration config = coordinator.queryConfiguration(siteKind, siteId);
if (config != null) {
return new Site(config);
}
throw CoordinatorException.retryables.cannotFindSite(siteId);
}
Aggregations