in uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java [1056:1356]
private void handleServletClassicServices(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response)
throws IOException, ServletException
{
String methodName = "handleServletClassicServices";
duccLogger.trace(methodName, jobid, messages.fetch("enter"));
StringBuffer sb = new StringBuffer();
if(dh.is_ducc_head_backup()) {
sb.append("<tr>");
sb.append("<td>");
sb.append(messages.fetch("no data - not master"));
sb.append("</td>");
sb.append("</tr>");
}
else {
ServicesSortCache servicesSortCache = ServicesSortCache.getInstance();
Collection<IServiceAdapter> servicesSortedCollection = servicesSortCache.getSortedCollection();
if(!servicesSortedCollection.isEmpty()) {
int maxRecords = getServicesMax(request);
ArrayList<String> users = getServicesUsers(request);
int counter = 0;
for(IServiceAdapter service : servicesSortedCollection) {
boolean list = DuccWebUtil.isListable(request, users, maxRecords, counter, service);
if(!list) {
continue;
}
counter++;
// Row Begin
sb.append("<tr>");
int sid = service.getId();
String user = service.getUser();
long deployments = service.getDeployments();
long instances = service.getInstances();
// Enable
sb.append("<td valign=\"bottom\" class=\"ducc-col-start\">");
if(service.isRegistered()) {
if(buttonsEnabled) {
if(service.isDisabled()) {
sb.append("<input type=\"button\" onclick=\"ducc_confirm_service_enable("+sid+")\" value=\"Enable\" "+getDisabledWithHover(request,user,service)+"/>");
}
}
}
sb.append("</td>");
// Stop
sb.append("<td valign=\"bottom\" class=\"ducc-col-stop\">");
if(service.isRegistered()) {
if(buttonsEnabled) {
if(service.isPingOnly()) {
if(service.isPingActive()) {
sb.append("<input type=\"button\" onclick=\"ducc_confirm_service_stop("+sid+")\" value=\"Stop\" "+getDisabledWithHover(request,user,service)+"/>");
}
}
else {
if(deployments != 0) {
sb.append("<input type=\"button\" onclick=\"ducc_confirm_service_stop("+sid+")\" value=\"Stop\" "+getDisabledWithHover(request,user,service)+"/>");
}
}
}
}
sb.append("</td>");
// Id
String name = service.getName();
sb.append("<td align=\"right\">");
String id = "<a href=\"service.details.html?name="+name+"\">"+sid+"</a>";
sb.append(""+id);
sb.append("</td>");
// Name
sb.append("<td>");
sb.append(name);
sb.append("</td>");
// State
sb.append("<td>");
String state = service.getState();
boolean alert = service.isAlert();
boolean available = service.isStateAvailable();
if(alert) {
state += "+Alert";
}
String style = "class=\"health_black\";";
if(alert) {
style = "class=\"health_red\"";
}
else if(available) {
style = "class=\"health_green\"";
}
String stateHover = ServicesHelper.getInstance().getStateHover(service);
if(stateHover.length() > 0) {
stateHover = "title="+"\""+stateHover+"\"";
}
sb.append("<span "+style+" "+stateHover+">");
sb.append(state);
sb.append("</span>");
sb.append("</td>");
// Last Use
sb.append("<td>");
long lastUse = service.getLastUse();
if(lastUse > 0) {
sb.append(getTimeStamp(request, jobid, ""+lastUse));
}
sb.append("</td>");
// Instances
sb.append("<td align=\"right\">");
sb.append(instances);
sb.append("</td>");
// Deployments
sb.append("<td align=\"right\">");
sb.append(deployments);
sb.append("</td>");
// Start-State
StartState startState = service.getStartState();
sb.append("<td align=\"right\">");
sb.append("<span>");
sb.append(startState.name());
if(service.isDisabled()) {
sb.append("<br>");
String health = "class=\"health_red\"";
String reason = "title=\""+service.getDisableReason()+"\"";
sb.append("<span "+health+" "+reason+">");
sb.append("Disabled");
sb.append("</span>");
}
sb.append("</span>");
sb.append("</td>");
// User
sb.append("<td>");
sb.append(user);
sb.append("</td>");
// Share Class (or Type)
sb.append("<td>");
if(service.isPingOnly()) {
String schedulingClass = service.getSchedulingClass();
sb.append("<span title=\""+schedulingClass+"\">");
String serviceType = "ping-only";
sb.append("<span>");
sb.append(serviceType);
}
else {
String schedulingClass = service.getSchedulingClass();
sb.append(schedulingClass);
}
sb.append("</td>");
// PgIn
sb.append("<td align=\"right\">");
long faults = 0;
try {
faults = service.getPgIn();
}
catch(Exception e) {
}
int ifaults = (int)faults;
switch(ifaults) {
case -3: // (some do and some don't have cgroups) but retVal would have been > 0
sb.append("<span title=\"incomplete\" class=\"health_red\""+">");
sb.append(inc);
break;
case -2: // (some do and some don't have cgroups) but retVal would have been == 0
sb.append("<span title=\"incomplete\" class=\"health_black\""+">");
sb.append(inc);
break;
case -1: // (none have cgroups)
sb.append("<span title=\"not available\" class=\"health_black\""+">");
sb.append(notAvailable);
break;
default: // (all have cgroups)
double swapping = service.getSwap();
if((swapping * faults) > 0) {
sb.append("<span class=\"health_red\""+">");
}
else {
sb.append("<span class=\"health_black\""+">");
}
sb.append(faults);
break;
}
sb.append("</span>");
sb.append("</td>");
// Swap
sb.append("<td align=\"right\">");
String swapSizeDisplay = "";
String swapSizeHover = "";
String title = "";
double swap = service.getSwap();
int iswap = (int)swap;
switch(iswap) {
case -3: // (some do and some don't have cgroups) but retVal would have been > 0
sb.append("<span title=\"incomplete\" class=\"health_red\""+">");
sb.append(inc);
break;
case -2: // (some do and some don't have cgroups) but retVal would have been == 0
sb.append("<span title=\"incomplete\" class=\"health_black\""+">");
sb.append(inc);
break;
case -1: // (none have cgroups)
sb.append("<span title=\"not available\" class=\"health_black\""+">");
sb.append(notAvailable);
break;
default: // (all have cgroups)
double swapBytes = swap;
swapSizeDisplay = DuccHandlerUtils.getSwapSizeDisplay(swapBytes);
swapSizeHover = DuccHandlerUtils.getSwapSizeHover(swapBytes);
title = "title="+"\""+swapSizeHover+"\"";
if(swapBytes > 0) {
sb.append("<span "+title+" "+"class=\"health_red\""+">");
}
else {
sb.append("<span "+title+" "+"class=\"health_black\""+">");
}
sb.append(swapSizeDisplay);
break;
}
sb.append("</span>");
sb.append("</td>");
// Size
sb.append("<td align=\"right\">");
long size = service.getSize();
if(size < 0) {
size = 0;
}
sb.append(size);
sb.append("</td>");
// Jobs
sb.append("<td align=\"right\">");
ArrayList<String> dependentJobs = service.getDependentJobs();
int countDependentJobs = dependentJobs.size();
String titleJobs = "";
if(countDependentJobs > 0) {
StringBuffer idList = new StringBuffer();
for(String duccId : dependentJobs) {
if(idList.length() > 0) {
idList.append(",");
}
idList.append(duccId);
}
titleJobs = "dependent Job Id list: "+idList;
}
String jobs = "<span title=\""+titleJobs+"\">"+countDependentJobs+"</span>";
sb.append(jobs);
sb.append("</td>");
// Services
sb.append("<td align=\"right\">");
ArrayList<String> dependentServices = service.getDependentServices();
int countDependentServices = dependentServices.size();
String titleServices = "";
if(countDependentServices > 0) {
StringBuffer idList = new StringBuffer();
for(String duccId : dependentServices) {
if(idList.length() > 0) {
idList.append(",");
}
idList.append(duccId);
}
titleServices = "dependent Service Name list: "+idList;
}
String services = "<span title=\""+titleServices+"\">"+countDependentServices+"</span>";
sb.append(services);
sb.append("</td>");
// Reservations
sb.append("<td align=\"right\">");
ArrayList<String> dependentReservations = service.getDependentReservations();
int countDependentReservations = dependentReservations.size();
String titleReservations = "";
if(countDependentReservations > 0) {
StringBuffer idList = new StringBuffer();
for(String duccId : dependentReservations) {
if(idList.length() > 0) {
idList.append(",");
}
idList.append(duccId);
}
titleReservations = "dependent Reservation Id list: "+idList;
}
String reservations = "<span title=\""+titleReservations+"\">"+countDependentReservations+"</span>";
sb.append(reservations);
sb.append("</td>");
// Description
sb.append("<td>");
String description = service.getDescription();
sb.append(description);
sb.append("</td>");
// Row End
sb.append("</tr>");
}
}
else {
sb.append("<tr>");
sb.append("<td>");
if(DuccData.getInstance().isPublished()) {
sb.append(messages.fetch("no services"));
}
else {
sb.append(messages.fetch("no data"));
}
sb.append("</td>");
sb.append("</tr>");
}
}
duccLogger.debug(methodName, jobid, sb);
response.getWriter().println(sb);
duccLogger.trace(methodName, jobid, messages.fetch("exit"));
}