- if(siteConfiguration != SiteConfiguration.GEO) {
- int healthyODLs = 0;
- SitesBuilder builder = new SitesBuilder();
- for(Map.Entry<String, ClusterActor> entry : memberMap.entrySet()) {
- ClusterActor clusterActor = entry.getValue();
- if(clusterActor.isUp() && !clusterActor.isUnreachable()) {
- healthyODLs++;
- }
- }
- if(siteConfiguration != SiteConfiguration.SOLO) {
- builder.setHealth(HEALTHY);
- builder.setRole("ACTIVE");
- builder.setId(siteIdentifier);
- }
- else {
- builder = getSitesBuilder(healthyODLs, true, HEALTHY.equals(adminHealth), HEALTHY.equals(databaseHealth), siteIdentifier);
- }
- outputBuilder.getSites().add(builder.build());
- }
- else {
- int site1HealthyODLs = 0;
- int site2HealthyODLs = 0;
- boolean site1Voting = false;
- boolean site2Voting = false;
- boolean performedCrossSiteHealthCheck = false;
- boolean crossSiteAdminHealthy = false;
- boolean crossSiteDbHealthy = false;
- String crossSiteIdentifier = "UNKNOWN_SITE";
- String port = "true".equals(properties.getProperty(PropertyKeys.CONTROLLER_USE_SSL)) ? properties.getProperty(PropertyKeys.CONTROLLER_PORT_SSL) : properties.getProperty(PropertyKeys.CONTROLLER_PORT_HTTP);
- if(isSite1()) {
- // Make calls over to site 2 healthchecks
- for(Map.Entry<String, ClusterActor> entry : memberMap.entrySet()) {
- ClusterActor clusterActor = entry.getValue();
- if(clusterActor.isUp() && !clusterActor.isUnreachable()) {
- if(ClusterActor.SITE_1.equals(clusterActor.getSite())) {
- site1HealthyODLs++;
- if(clusterActor.isVoting()) {
- site1Voting = true;
- }
- }
- else {
- site2HealthyODLs++;
- if(clusterActor.isVoting()) {
- site2Voting = true;
- }
- if(!performedCrossSiteHealthCheck) {
- try {
- String content = getRequestContent(httpProtocol + clusterActor.getNode() + ":" + port + "/restconf/operations/gr-toolkit:site-identifier", HttpMethod.POST);
- crossSiteIdentifier = new JSONObject(content).getJSONObject(OUTPUT).getString("id");
- crossSiteDbHealthy = crossSiteHealthRequest(httpProtocol + clusterActor.getNode() + ":" + port + "/restconf/operations/gr-toolkit:database-health");
- crossSiteAdminHealthy = crossSiteHealthRequest(httpProtocol + clusterActor.getNode() + ":" + port + "/restconf/operations/gr-toolkit:admin-health");
- performedCrossSiteHealthCheck = true;
- } catch(Exception e) {
- log.info("Cannot get cross site health from {}", clusterActor.getNode());
- log.info("siteIdentifier: {} | dbHealth: {} | adminHealth: {}", crossSiteIdentifier, crossSiteDbHealthy, crossSiteAdminHealthy);
- log.error("Site Health Error", e);
- }
- }
- }
- }
- }
- SitesBuilder builder = getSitesBuilder(site1HealthyODLs, site1Voting, HEALTHY.equals(adminHealth), HEALTHY.equals(databaseHealth), siteIdentifier);
- outputBuilder.getSites().add(builder.build());
- builder = getSitesBuilder(site2HealthyODLs, site2Voting, crossSiteAdminHealthy, crossSiteDbHealthy, crossSiteIdentifier);
- outputBuilder.getSites().add(builder.build());
- log.info("{}:site-health: Site 1 ({}) | hasVotingMembers?: {} | Healthy ODLs: {} | ADM isHealthy?: {} | DB isHealthy?: {}", APP_NAME, siteIdentifier, site1Voting, site1HealthyODLs, HEALTHY.equals(adminHealth), HEALTHY.equals(databaseHealth));
- log.info("{}:site-health: Site 2 ({}) | hasVotingMembers?: {} | Healthy ODLs: {} | ADM isHealthy?: {} | DB isHealthy?: {}", APP_NAME, crossSiteIdentifier, site2Voting, site2HealthyODLs, crossSiteAdminHealthy, crossSiteDbHealthy);
- }
- else {
- // Make calls over to site 1 healthchecks
- for(Map.Entry<String, ClusterActor> entry : memberMap.entrySet()) {
- ClusterActor clusterActor = entry.getValue();
- if(clusterActor.isUp() && !clusterActor.isUnreachable()) {
- if(ClusterActor.SITE_1.equals(clusterActor.getSite())) {
- site1HealthyODLs++;
- if(clusterActor.isVoting()) {
- site1Voting = true;
- }
- if(!performedCrossSiteHealthCheck) {
- try {
- String content = getRequestContent(httpProtocol + clusterActor.getNode() + ":" + port + "/restconf/operations/gr-toolkit:site-identifier", HttpMethod.POST);
- crossSiteIdentifier = new JSONObject(content).getJSONObject(OUTPUT).getString("id");
- crossSiteDbHealthy = crossSiteHealthRequest(httpProtocol + clusterActor.getNode() + ":" + port + "/restconf/operations/gr-toolkit:database-health");
- crossSiteAdminHealthy = crossSiteHealthRequest(httpProtocol + clusterActor.getNode() + ":" + port + "/restconf/operations/gr-toolkit:admin-health");
- performedCrossSiteHealthCheck = true;
- } catch(Exception e) {
- log.info("Cannot get cross site health from {}", clusterActor.getNode());
- log.info("siteIdentifier: {} | dbHealth: {} | adminHealth: {}", crossSiteIdentifier, crossSiteDbHealthy, crossSiteAdminHealthy);
- log.error("Site Health Error", e);
- }
- }
- }
- else {
- site2HealthyODLs++;
- if(clusterActor.isVoting()) {
- site2Voting = true;
- }
- }
- }
- }
- // Build Output
- SitesBuilder builder = getSitesBuilder(site1HealthyODLs, site1Voting, crossSiteAdminHealthy, crossSiteDbHealthy, crossSiteIdentifier);
- outputBuilder.getSites().add(builder.build());
- builder = getSitesBuilder(site2HealthyODLs, site2Voting, HEALTHY.equals(adminHealth), HEALTHY.equals(databaseHealth), siteIdentifier);
- outputBuilder.getSites().add(builder.build());
- log.info("{}:site-health: Site 1 ({}) | hasVotingMembers?: {} | Healthy ODLs: {} | ADM isHealthy?: {} | DB isHealthy?: {}", APP_NAME, siteIdentifier, site1Voting, site1HealthyODLs, HEALTHY.equals(adminHealth), HEALTHY.equals(databaseHealth));
- log.info("{}:site-health: Site 2 ({}) | hasVotingMembers?: {} | Healthy ODLs: {} | ADM isHealthy?: {} | DB isHealthy?: {}", APP_NAME, crossSiteIdentifier, site2Voting, site2HealthyODLs, crossSiteAdminHealthy, crossSiteDbHealthy);
- }