package com.rayo.server.jmx;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.springframework.jmx.export.annotation.ManagedOperation;
import org.springframework.jmx.export.annotation.ManagedResource;
import com.rayo.server.admin.RayoAdminService;
import com.voxeo.logging.Loggerf;
@ManagedResource(objectName = "com.rayo:Type=Admin,name=Admin", description = "Admin Interface")
public class Admin implements AdminMXBean {
private Loggerf log = Loggerf.getLogger(Admin.class);
private RayoAdminService adminService;
@Override
@ManagedOperation(description = "Disable Quiesce Mode")
public void disableQuiesce() {
if (adminService.isQuiesceMode()) {
adminService.disableQuiesce();
}
}
@Override
@ManagedOperation(description = "Enable Quiesce Mode")
public void enableQuiesce() {
if (!adminService.isQuiesceMode()) {
adminService.enableQuiesce();
}
}
@Override
@ManagedAttribute(description = "Quiesce Mode")
public boolean getQuiesceMode() {
return adminService.getQuiesceMode();
}
@Override
@ManagedOperation(description = "Sets Rayo Node Weight")
public void weight(String weight) {
adminService.setWeight(weight);
}
@Override
@ManagedOperation(description = "Sets Rayo Node Priority")
public void priority(String priority) {
adminService.setPriority(priority);
}
@Override
@ManagedOperation(description = "Sets Rayo Node Platform")
public void platform(String platform) {
adminService.setPlatform(platform);
}
@Override
@ManagedOperation(description = "Sets if a Rayo Node can receive dial requests or not")
public void allowOutgoingCalls(boolean outgoingCallsAllowed) {
adminService.setOutgoingCallsAllowed(outgoingCallsAllowed);
}
@Override
@ManagedOperation(description = "Change Log Level")
public void setLogLevel(String loggerName, String level) {
Logger logger = Logger.getLogger(loggerName);
if (logger != null) {
log.info("Updating Logger %s with log level %s", loggerName, level);
if ("debug".equalsIgnoreCase(level)) {
Logger.getLogger(loggerName).setLevel(Level.DEBUG);
} else if ("info".equalsIgnoreCase(level)) {
Logger.getLogger(loggerName).setLevel(Level.INFO);
} else if ("error".equalsIgnoreCase(level)) {
Logger.getLogger(loggerName).setLevel(Level.ERROR);
} else if ("fatal".equalsIgnoreCase(level)) {
Logger.getLogger(loggerName).setLevel(Level.FATAL);
} else if ("warn".equalsIgnoreCase(level)) {
Logger.getLogger(loggerName).setLevel(Level.WARN);
} else {
log.warn("Unknown log level %s.", level);
}
} else {
log.warn("Logger %s not found", loggerName);
}
}
@Override
@ManagedAttribute(description = "Server Name")
public String getServerName() {
return adminService.getServerName();
}
public void setAdminService(RayoAdminService adminService) {
this.adminService = adminService;
}
}