code review changes to cluster monitors Signed-off-by: sajhak <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/31056109 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/31056109 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/31056109 Branch: refs/heads/container-autoscaling Commit: 31056109c27256e0fc84319e428390eef09f28cf Parents: 7d61649 Author: R-Rajkumar <[email protected]> Authored: Sun Oct 5 15:04:57 2014 +0530 Committer: sajhak <[email protected]> Committed: Mon Oct 6 23:11:29 2014 +0530 ---------------------------------------------------------------------- .../stratos/autoscaler/AutoscalerContext.java | 36 +- .../autoscaler/KubernetesClusterContext.java | 863 ++++++++-------- .../stratos/autoscaler/MemberStatsContext.java | 29 +- .../AutoscalerHealthStatEventReceiver.java | 991 +++++-------------- .../AutoscalerTopologyEventReceiver.java | 458 ++------- .../monitor/AbstractClusterMonitor.java | 307 +++--- .../monitor/ClusterMonitorFactory.java | 250 ++--- .../monitor/ContainerClusterMonitor.java | 59 -- .../monitor/DockerServiceClusterMonitor.java | 176 ---- .../monitor/KubernetesClusterMonitor.java | 427 ++++++++ .../KubernetesServiceClusterMonitor.java | 181 ++++ .../autoscaler/monitor/VMClusterMonitor.java | 597 ++++++++++- .../autoscaler/monitor/VMLbClusterMonitor.java | 87 +- .../monitor/VMServiceClusterMonitor.java | 73 +- .../stratos/autoscaler/util/AutoscalerUtil.java | 391 +------- .../stratos/common/enums/ClusterType.java | 5 - 16 files changed, 2440 insertions(+), 2490 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/31056109/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java index 581d633..2d10954 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java @@ -33,6 +33,8 @@ import org.apache.stratos.autoscaler.monitor.AbstractClusterMonitor; public class AutoscalerContext { private static final Log log = LogFactory.getLog(AutoscalerContext.class); + private static final AutoscalerContext INSTANCE = new AutoscalerContext(); + private AutoscalerContext() { try { setClusterMonitors(new HashMap<String, AbstractClusterMonitor>()); @@ -40,17 +42,13 @@ public class AutoscalerContext { log.error("Rule evaluateMinCheck error", e); } } - + // Map<ClusterId, AbstractClusterMonitor> private Map<String, AbstractClusterMonitor> clusterMonitors; - private static class Holder { - private static final AutoscalerContext INSTANCE = new AutoscalerContext(); - } - - public static AutoscalerContext getInstance() { - return Holder.INSTANCE; - } + public static AutoscalerContext getInstance() { + return INSTANCE; + } public void addClusterMonitor(AbstractClusterMonitor clusterMonitor) { clusterMonitors.put(clusterMonitor.getClusterId(), clusterMonitor); @@ -59,11 +57,7 @@ public class AutoscalerContext { public AbstractClusterMonitor getClusterMonitor(String clusterId) { return clusterMonitors.get(clusterId); } - - public boolean clusterMonitorExist(String clusterId) { - return clusterMonitors.containsKey(clusterId); - } - + public Map<String, AbstractClusterMonitor> getClusterMonitors() { return clusterMonitors; } @@ -71,13 +65,15 @@ public class AutoscalerContext { public void setClusterMonitors(Map<String, AbstractClusterMonitor> clusterMonitors) { this.clusterMonitors = clusterMonitors; } - + public AbstractClusterMonitor removeClusterMonitor(String clusterId) { - if(!clusterMonitorExist(clusterId)) { - log.fatal("ClusterMonitor not found for cluster id: "+clusterId); - return null; - } - log.info("Removed ClusterMonitor [cluster id]: " + clusterId); - return clusterMonitors.remove(clusterId); + + AbstractClusterMonitor monitor = clusterMonitors.remove(clusterId); + if (monitor == null) { + log.fatal("ClusterMonitor not found for cluster id: " + clusterId); + } else { + log.info("Removed ClusterMonitor [cluster id]: " + clusterId); + } + return monitor; } } http://git-wip-us.apache.org/repos/asf/stratos/blob/31056109/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java index 16bc653..c8b6e39 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/KubernetesClusterContext.java @@ -40,474 +40,475 @@ import org.apache.stratos.cloud.controller.stub.pojo.MemberContext; /* * It holds the runtime data of a kubernetes cluster */ -public class KubernetesClusterContext implements Serializable{ - - private static final long serialVersionUID = 808741789615481596L; - private static final Log log = LogFactory.getLog(KubernetesClusterContext.class); - - private String kubernetesClusterId; - private String serviceName; - +public class KubernetesClusterContext implements Serializable { + + private static final long serialVersionUID = 808741789615481596L; + private static final Log log = LogFactory.getLog(KubernetesClusterContext.class); + + private String kubernetesClusterId; + private String serviceName; + private int minReplicas; private int maxReplicas; private int currentReplicas = 0; - + // properties private Properties properties; - + // 15 mints as the default private long expiryTime; // pending members private List<MemberContext> pendingMembers; - + // active members private List<MemberContext> activeMembers; //Keep statistics come from CEP private Map<String, MemberStatsContext> memberStatsContexts; - + //Following information will keep events details private RequestsInFlight requestsInFlight; private MemoryConsumption memoryConsumption; private LoadAverage loadAverage; - + // cluster id private String clusterId; - + //boolean values to keep whether the requests in flight parameters are reset or not - private boolean rifReset = false, averageRifReset = false, - gradientRifReset = false, secondDerivativeRifRest = false; + private boolean rifReset = false, averageRifReset = false, + gradientRifReset = false, secondDerivativeRifRest = false; //boolean values to keep whether the memory consumption parameters are reset or not private boolean memoryConsumptionReset = false, averageMemoryConsumptionReset = false, gradientMemoryConsumptionReset = false, secondDerivativeMemoryConsumptionRest = false; //boolean values to keep whether the load average parameters are reset or not - private boolean loadAverageReset = false, averageLoadAverageReset = false, - gradientLoadAverageReset = false, secondDerivativeLoadAverageRest = false; - - public KubernetesClusterContext(String kubernetesClusterId, String clusterId){ - this.kubernetesClusterId = kubernetesClusterId; - this.clusterId = clusterId; + private boolean loadAverageReset = false, averageLoadAverageReset = false, + gradientLoadAverageReset = false, secondDerivativeLoadAverageRest = false; + + public KubernetesClusterContext(String kubernetesClusterId, String clusterId) { + this.kubernetesClusterId = kubernetesClusterId; + this.clusterId = clusterId; this.pendingMembers = new ArrayList<MemberContext>(); this.activeMembers = new ArrayList<MemberContext>(); this.memberStatsContexts = new ConcurrentHashMap<String, MemberStatsContext>(); this.requestsInFlight = new RequestsInFlight(); this.loadAverage = new LoadAverage(); this.memoryConsumption = new MemoryConsumption(); - + // check if a different value has been set for expiryTime XMLConfiguration conf = ConfUtil.getInstance(null).getConfiguration(); expiryTime = conf.getLong("autoscaler.member.expiryTimeout", 300000); if (log.isDebugEnabled()) { log.debug("Member expiry time is set to: " + expiryTime); } - + Thread th = new Thread(new PendingMemberWatcher(this)); th.start(); - } - - public String getKubernetesClusterID() { - return kubernetesClusterId; - } - public void setKubernetesClusterID(String kubernetesClusterId) { - this.kubernetesClusterId = kubernetesClusterId; - } - - public List<MemberContext> getPendingMembers() { - return pendingMembers; - } - - public void setPendingMembers(List<MemberContext> pendingMembers) { - this.pendingMembers = pendingMembers; - } - - public int getActiveMemberCount() { - return activeMembers.size(); - } - - public void setActiveMembers(List<MemberContext> activeMembers) { - this.activeMembers = activeMembers; - } - - public int getMinReplicas() { - return minReplicas; - } - - public void setMinReplicas(int minReplicas) { - this.minReplicas = minReplicas; - } - - public int getMaxReplicas() { - return maxReplicas; - } - - public void setMaxReplicas(int maxReplicas) { - this.maxReplicas = maxReplicas; - } - - public int getCurrentReplicas() { - return currentReplicas; - } - - public void setCurrentReplicas(int currentReplicas) { - this.currentReplicas = currentReplicas; - } - - public void addPendingMember(MemberContext ctxt) { - this.pendingMembers.add(ctxt); - } - - public boolean removePendingMember(String id) { - if (id == null) { - return false; - } - for (Iterator<MemberContext> iterator = pendingMembers.iterator(); iterator.hasNext();) { - MemberContext pendingMember = (MemberContext) iterator.next(); - if (id.equals(pendingMember.getMemberId())) { - iterator.remove(); - return true; - } - - } - - return false; - } - - public void movePendingMemberToActiveMembers(String memberId) { - if (memberId == null) { - return; - } - Iterator<MemberContext> iterator = pendingMembers.listIterator(); - while (iterator.hasNext()) { - MemberContext pendingMember = iterator.next(); - if (pendingMember == null) { - iterator.remove(); - continue; - } - if (memberId.equals(pendingMember.getMemberId())) { - // member is activated - // remove from pending list - iterator.remove(); - // add to the activated list - this.activeMembers.add(pendingMember); - if (log.isDebugEnabled()) { - log.debug(String.format( - "Pending member is removed and added to the " - + "activated member list. [Member Id] %s", - memberId)); - } - break; - } - } - } - - public void addActiveMember(MemberContext ctxt) { - this.activeMembers.add(ctxt); - } - - public void removeActiveMember(MemberContext ctxt) { - this.activeMembers.remove(ctxt); - } - - public long getExpiryTime() { - return expiryTime; - } - - public void setExpiryTime(long expiryTime) { - this.expiryTime = expiryTime; - } - - public Map<String, MemberStatsContext> getMemberStatsContexts() { - return memberStatsContexts; - } - - public MemberStatsContext getMemberStatsContext(String memberId) { - return memberStatsContexts.get(memberId); - } - - public void addMemberStatsContext(MemberStatsContext ctxt) { - this.memberStatsContexts.put(ctxt.getMemberId(), ctxt); - } - - public void removeMemberStatsContext(String memberId) { - this.memberStatsContexts.remove(memberId); - } - - public Properties getProperties() { - return properties; - } - - public void setProperties(Properties properties) { - this.properties = properties; - } - - public String getServiceName() { - return serviceName; - } - - public void setServiceName(String serviceName) { - this.serviceName = serviceName; - } - - public List<MemberContext> getActiveMembers() { - return activeMembers; - } - - public boolean removeActiveMemberById(String memberId) { - boolean removeActiveMember = false; - synchronized (activeMembers) { - Iterator<MemberContext> iterator = activeMembers.listIterator(); - while (iterator.hasNext()) { - MemberContext memberContext = iterator.next(); - if (memberId.equals(memberContext.getMemberId())) { - iterator.remove(); - removeActiveMember = true; - - break; - } - } - } - return removeActiveMember; - } - - public boolean activeMemberExist(String memberId) { - - for (MemberContext memberContext : activeMembers) { - if (memberId.equals(memberContext.getMemberId())) { - return true; - } - } - return false; - } - - private class PendingMemberWatcher implements Runnable { - private KubernetesClusterContext ctxt; - - public PendingMemberWatcher(KubernetesClusterContext ctxt) { - this.ctxt = ctxt; - } - - @Override - public void run() { - - while (true) { - long expiryTime = ctxt.getExpiryTime(); - List<MemberContext> pendingMembers = ctxt.getPendingMembers(); - - synchronized (pendingMembers) { - Iterator<MemberContext> iterator = pendingMembers - .listIterator(); - while (iterator.hasNext()) { - MemberContext pendingMember = iterator.next(); - - if (pendingMember == null) { - continue; - } - long pendingTime = System.currentTimeMillis() - - pendingMember.getInitTime(); - if (pendingTime >= expiryTime) { - - // terminate all containers of this cluster - try { - CloudControllerClient.getInstance().terminateAllContainers(clusterId); - iterator.remove(); - } catch (TerminationException e) { - log.error(e.getMessage(), e); - } - - } - } - } - - try { - // TODO find a constant - Thread.sleep(15000); - } catch (InterruptedException ignore) { - } - } - } - - } - - public float getAverageRequestsInFlight() { - return requestsInFlight.getAverage(); - } - - public void setAverageRequestsInFlight(float averageRequestsInFlight) { - requestsInFlight.setAverage(averageRequestsInFlight); - averageRifReset = true; - if (secondDerivativeRifRest && gradientRifReset) { - rifReset = true; - if (log.isDebugEnabled()) { - log.debug(String.format("Requests in flights stats are reset, " - + "ready to do scale check [kub cluster] %s", this.kubernetesClusterId)); - } - } - } - - public float getRequestsInFlightSecondDerivative() { - return requestsInFlight.getSecondDerivative(); - } - - public void setRequestsInFlightSecondDerivative( - float requestsInFlightSecondDerivative) { - requestsInFlight.setSecondDerivative(requestsInFlightSecondDerivative); - secondDerivativeRifRest = true; - if (averageRifReset && gradientRifReset) { - rifReset = true; - if (log.isDebugEnabled()) { - log.debug(String.format("Requests in flights stats are reset, ready to do scale check " - + "[kub cluster] %s", this.kubernetesClusterId)); - } - } - } - - public float getRequestsInFlightGradient() { - return requestsInFlight.getGradient(); - } - - public void setRequestsInFlightGradient(float requestsInFlightGradient) { - requestsInFlight.setGradient(requestsInFlightGradient); - gradientRifReset = true; - if (secondDerivativeRifRest && averageRifReset) { - rifReset = true; - if (log.isDebugEnabled()) { - log.debug(String.format("Requests in flights stats are reset, ready to do scale check " - + "[kub cluster] %s", this.kubernetesClusterId)); - } - } - } - - public boolean isRifReset() { - return rifReset; - } - - public void setRifReset(boolean rifReset) { - this.rifReset = rifReset; - this.averageRifReset = rifReset; - this.gradientRifReset = rifReset; - this.secondDerivativeRifRest = rifReset; - } - - public float getAverageMemoryConsumption() { - return memoryConsumption.getAverage(); - } - - public void setAverageMemoryConsumption(float averageMemoryConsumption) { - memoryConsumption.setAverage(averageMemoryConsumption); - averageMemoryConsumptionReset = true; - if (secondDerivativeMemoryConsumptionRest - && gradientMemoryConsumptionReset) { - memoryConsumptionReset = true; - if (log.isDebugEnabled()) { - log.debug(String.format("Memory consumption stats are reset, ready to do scale check " - + "[kub cluster] %s", this.kubernetesClusterId)); - } - } - } - - public float getMemoryConsumptionSecondDerivative() { - return memoryConsumption.getSecondDerivative(); - } - - public void setMemoryConsumptionSecondDerivative( - float memoryConsumptionSecondDerivative) { - memoryConsumption - .setSecondDerivative(memoryConsumptionSecondDerivative); - secondDerivativeMemoryConsumptionRest = true; - if (averageMemoryConsumptionReset && gradientMemoryConsumptionReset) { - memoryConsumptionReset = true; - if (log.isDebugEnabled()) { - log.debug(String.format("Memory consumption stats are reset, ready to do scale check " - + "[kub cluster] %s", this.kubernetesClusterId)); - } - } - } - - public float getMemoryConsumptionGradient() { - return memoryConsumption.getGradient(); - } - - public void setMemoryConsumptionGradient(float memoryConsumptionGradient) { - memoryConsumption.setGradient(memoryConsumptionGradient); - gradientMemoryConsumptionReset = true; - if (secondDerivativeMemoryConsumptionRest - && averageMemoryConsumptionReset) { - memoryConsumptionReset = true; - if (log.isDebugEnabled()) { - log.debug(String.format("Memory consumption stats are reset, ready to do scale check " - + "[kub cluster] %s", this.kubernetesClusterId)); - } - } - } - - public boolean isMemoryConsumptionReset() { - return memoryConsumptionReset; - } - - public void setMemoryConsumptionReset(boolean memoryConsumptionReset) { - this.memoryConsumptionReset = memoryConsumptionReset; - this.averageMemoryConsumptionReset = memoryConsumptionReset; - this.gradientMemoryConsumptionReset = memoryConsumptionReset; - this.secondDerivativeMemoryConsumptionRest = memoryConsumptionReset; - } - - - public float getAverageLoadAverage() { - return loadAverage.getAverage(); - } - - public void setAverageLoadAverage(float averageLoadAverage) { - loadAverage.setAverage(averageLoadAverage); - averageLoadAverageReset = true; - if (secondDerivativeLoadAverageRest && gradientLoadAverageReset) { - loadAverageReset = true; - if (log.isDebugEnabled()) { - log.debug(String.format("Load average stats are reset, ready to do scale check " - + "[kub cluster] %s", this.kubernetesClusterId)); - } - } - } - - public float getLoadAverageSecondDerivative() { - return loadAverage.getSecondDerivative(); - } - - public void setLoadAverageSecondDerivative(float loadAverageSecondDerivative) { - loadAverage.setSecondDerivative(loadAverageSecondDerivative); - secondDerivativeLoadAverageRest = true; - if (averageLoadAverageReset && gradientLoadAverageReset) { - loadAverageReset = true; - if (log.isDebugEnabled()) { - log.debug(String.format("Load average stats are reset, ready to do scale check " - + "[kub cluster] %s", this.kubernetesClusterId)); - } - } - } - - public float getLoadAverageGradient() { - return loadAverage.getGradient(); - } - - public void setLoadAverageGradient(float loadAverageGradient) { - loadAverage.setGradient(loadAverageGradient); - gradientLoadAverageReset = true; - if (secondDerivativeLoadAverageRest && averageLoadAverageReset) { - loadAverageReset = true; - if (log.isDebugEnabled()) { - log.debug(String.format("Load average stats are reset, ready to do scale check " - + "[kub cluster] %s", this.kubernetesClusterId)); - } - } - } - - public boolean isLoadAverageReset() { - return loadAverageReset; - } - - public void setLoadAverageReset(boolean loadAverageReset) { - this.loadAverageReset = loadAverageReset; - this.averageLoadAverageReset = loadAverageReset; - this.gradientLoadAverageReset = loadAverageReset; - this.secondDerivativeLoadAverageRest = loadAverageReset; - } + } + + public String getKubernetesClusterID() { + return kubernetesClusterId; + } + + public void setKubernetesClusterID(String kubernetesClusterId) { + this.kubernetesClusterId = kubernetesClusterId; + } + + public List<MemberContext> getPendingMembers() { + return pendingMembers; + } + + public void setPendingMembers(List<MemberContext> pendingMembers) { + this.pendingMembers = pendingMembers; + } + + public int getActiveMemberCount() { + return activeMembers.size(); + } + + public void setActiveMembers(List<MemberContext> activeMembers) { + this.activeMembers = activeMembers; + } + + public int getMinReplicas() { + return minReplicas; + } + + public void setMinReplicas(int minReplicas) { + this.minReplicas = minReplicas; + } + + public int getMaxReplicas() { + return maxReplicas; + } + + public void setMaxReplicas(int maxReplicas) { + this.maxReplicas = maxReplicas; + } + + public int getCurrentReplicas() { + return currentReplicas; + } + + public void setCurrentReplicas(int currentReplicas) { + this.currentReplicas = currentReplicas; + } + + public void addPendingMember(MemberContext ctxt) { + this.pendingMembers.add(ctxt); + } + + public boolean removePendingMember(String id) { + if (id == null) { + return false; + } + for (Iterator<MemberContext> iterator = pendingMembers.iterator(); iterator.hasNext(); ) { + MemberContext pendingMember = (MemberContext) iterator.next(); + if (id.equals(pendingMember.getMemberId())) { + iterator.remove(); + return true; + } + + } + + return false; + } + + public void movePendingMemberToActiveMembers(String memberId) { + if (memberId == null) { + return; + } + Iterator<MemberContext> iterator = pendingMembers.listIterator(); + while (iterator.hasNext()) { + MemberContext pendingMember = iterator.next(); + if (pendingMember == null) { + iterator.remove(); + continue; + } + if (memberId.equals(pendingMember.getMemberId())) { + // member is activated + // remove from pending list + iterator.remove(); + // add to the activated list + this.activeMembers.add(pendingMember); + if (log.isDebugEnabled()) { + log.debug(String.format( + "Pending member is removed and added to the " + + "activated member list. [Member Id] %s", + memberId)); + } + break; + } + } + } + + public void addActiveMember(MemberContext ctxt) { + this.activeMembers.add(ctxt); + } + + public void removeActiveMember(MemberContext ctxt) { + this.activeMembers.remove(ctxt); + } + + public long getExpiryTime() { + return expiryTime; + } + + public void setExpiryTime(long expiryTime) { + this.expiryTime = expiryTime; + } + + public Map<String, MemberStatsContext> getMemberStatsContexts() { + return memberStatsContexts; + } + + public MemberStatsContext getMemberStatsContext(String memberId) { + return memberStatsContexts.get(memberId); + } + + public void addMemberStatsContext(MemberStatsContext ctxt) { + this.memberStatsContexts.put(ctxt.getMemberId(), ctxt); + } + + public void removeMemberStatsContext(String memberId) { + this.memberStatsContexts.remove(memberId); + } + + public Properties getProperties() { + return properties; + } + + public void setProperties(Properties properties) { + this.properties = properties; + } + + public String getServiceName() { + return serviceName; + } + + public void setServiceName(String serviceName) { + this.serviceName = serviceName; + } + + public List<MemberContext> getActiveMembers() { + return activeMembers; + } + + public boolean removeActiveMemberById(String memberId) { + boolean removeActiveMember = false; + synchronized (activeMembers) { + Iterator<MemberContext> iterator = activeMembers.listIterator(); + while (iterator.hasNext()) { + MemberContext memberContext = iterator.next(); + if (memberId.equals(memberContext.getMemberId())) { + iterator.remove(); + removeActiveMember = true; + + break; + } + } + } + return removeActiveMember; + } + + public boolean activeMemberExist(String memberId) { + + for (MemberContext memberContext : activeMembers) { + if (memberId.equals(memberContext.getMemberId())) { + return true; + } + } + return false; + } + + private class PendingMemberWatcher implements Runnable { + private KubernetesClusterContext ctxt; + + public PendingMemberWatcher(KubernetesClusterContext ctxt) { + this.ctxt = ctxt; + } + + @Override + public void run() { + + while (true) { + long expiryTime = ctxt.getExpiryTime(); + List<MemberContext> pendingMembers = ctxt.getPendingMembers(); + + synchronized (pendingMembers) { + Iterator<MemberContext> iterator = pendingMembers + .listIterator(); + while (iterator.hasNext()) { + MemberContext pendingMember = iterator.next(); + + if (pendingMember == null) { + continue; + } + long pendingTime = System.currentTimeMillis() + - pendingMember.getInitTime(); + if (pendingTime >= expiryTime) { + + // terminate all containers of this cluster + try { + CloudControllerClient.getInstance().terminateAllContainers(clusterId); + iterator.remove(); + } catch (TerminationException e) { + log.error(e.getMessage(), e); + } + + } + } + } + + try { + // TODO find a constant + Thread.sleep(15000); + } catch (InterruptedException ignore) { + } + } + } + + } + + public float getAverageRequestsInFlight() { + return requestsInFlight.getAverage(); + } + + public void setAverageRequestsInFlight(float averageRequestsInFlight) { + requestsInFlight.setAverage(averageRequestsInFlight); + averageRifReset = true; + if (secondDerivativeRifRest && gradientRifReset) { + rifReset = true; + if (log.isDebugEnabled()) { + log.debug(String.format("Requests in flights stats are reset, " + + "ready to do scale check [kub cluster] %s", this.kubernetesClusterId)); + } + } + } + + public float getRequestsInFlightSecondDerivative() { + return requestsInFlight.getSecondDerivative(); + } + + public void setRequestsInFlightSecondDerivative( + float requestsInFlightSecondDerivative) { + requestsInFlight.setSecondDerivative(requestsInFlightSecondDerivative); + secondDerivativeRifRest = true; + if (averageRifReset && gradientRifReset) { + rifReset = true; + if (log.isDebugEnabled()) { + log.debug(String.format("Requests in flights stats are reset, ready to do scale check " + + "[kub cluster] %s", this.kubernetesClusterId)); + } + } + } + + public float getRequestsInFlightGradient() { + return requestsInFlight.getGradient(); + } + + public void setRequestsInFlightGradient(float requestsInFlightGradient) { + requestsInFlight.setGradient(requestsInFlightGradient); + gradientRifReset = true; + if (secondDerivativeRifRest && averageRifReset) { + rifReset = true; + if (log.isDebugEnabled()) { + log.debug(String.format("Requests in flights stats are reset, ready to do scale check " + + "[kub cluster] %s", this.kubernetesClusterId)); + } + } + } + + public boolean isRifReset() { + return rifReset; + } + + public void setRifReset(boolean rifReset) { + this.rifReset = rifReset; + this.averageRifReset = rifReset; + this.gradientRifReset = rifReset; + this.secondDerivativeRifRest = rifReset; + } + + public float getAverageMemoryConsumption() { + return memoryConsumption.getAverage(); + } + + public void setAverageMemoryConsumption(float averageMemoryConsumption) { + memoryConsumption.setAverage(averageMemoryConsumption); + averageMemoryConsumptionReset = true; + if (secondDerivativeMemoryConsumptionRest + && gradientMemoryConsumptionReset) { + memoryConsumptionReset = true; + if (log.isDebugEnabled()) { + log.debug(String.format("Memory consumption stats are reset, ready to do scale check " + + "[kub cluster] %s", this.kubernetesClusterId)); + } + } + } + + public float getMemoryConsumptionSecondDerivative() { + return memoryConsumption.getSecondDerivative(); + } + + public void setMemoryConsumptionSecondDerivative( + float memoryConsumptionSecondDerivative) { + memoryConsumption + .setSecondDerivative(memoryConsumptionSecondDerivative); + secondDerivativeMemoryConsumptionRest = true; + if (averageMemoryConsumptionReset && gradientMemoryConsumptionReset) { + memoryConsumptionReset = true; + if (log.isDebugEnabled()) { + log.debug(String.format("Memory consumption stats are reset, ready to do scale check " + + "[kub cluster] %s", this.kubernetesClusterId)); + } + } + } + + public float getMemoryConsumptionGradient() { + return memoryConsumption.getGradient(); + } + + public void setMemoryConsumptionGradient(float memoryConsumptionGradient) { + memoryConsumption.setGradient(memoryConsumptionGradient); + gradientMemoryConsumptionReset = true; + if (secondDerivativeMemoryConsumptionRest + && averageMemoryConsumptionReset) { + memoryConsumptionReset = true; + if (log.isDebugEnabled()) { + log.debug(String.format("Memory consumption stats are reset, ready to do scale check " + + "[kub cluster] %s", this.kubernetesClusterId)); + } + } + } + + public boolean isMemoryConsumptionReset() { + return memoryConsumptionReset; + } + + public void setMemoryConsumptionReset(boolean memoryConsumptionReset) { + this.memoryConsumptionReset = memoryConsumptionReset; + this.averageMemoryConsumptionReset = memoryConsumptionReset; + this.gradientMemoryConsumptionReset = memoryConsumptionReset; + this.secondDerivativeMemoryConsumptionRest = memoryConsumptionReset; + } + + + public float getAverageLoadAverage() { + return loadAverage.getAverage(); + } + + public void setAverageLoadAverage(float averageLoadAverage) { + loadAverage.setAverage(averageLoadAverage); + averageLoadAverageReset = true; + if (secondDerivativeLoadAverageRest && gradientLoadAverageReset) { + loadAverageReset = true; + if (log.isDebugEnabled()) { + log.debug(String.format("Load average stats are reset, ready to do scale check " + + "[kub cluster] %s", this.kubernetesClusterId)); + } + } + } + + public float getLoadAverageSecondDerivative() { + return loadAverage.getSecondDerivative(); + } + + public void setLoadAverageSecondDerivative(float loadAverageSecondDerivative) { + loadAverage.setSecondDerivative(loadAverageSecondDerivative); + secondDerivativeLoadAverageRest = true; + if (averageLoadAverageReset && gradientLoadAverageReset) { + loadAverageReset = true; + if (log.isDebugEnabled()) { + log.debug(String.format("Load average stats are reset, ready to do scale check " + + "[kub cluster] %s", this.kubernetesClusterId)); + } + } + } + + public float getLoadAverageGradient() { + return loadAverage.getGradient(); + } + + public void setLoadAverageGradient(float loadAverageGradient) { + loadAverage.setGradient(loadAverageGradient); + gradientLoadAverageReset = true; + if (secondDerivativeLoadAverageRest && averageLoadAverageReset) { + loadAverageReset = true; + if (log.isDebugEnabled()) { + log.debug(String.format("Load average stats are reset, ready to do scale check " + + "[kub cluster] %s", this.kubernetesClusterId)); + } + } + } + + public boolean isLoadAverageReset() { + return loadAverageReset; + } + + public void setLoadAverageReset(boolean loadAverageReset) { + this.loadAverageReset = loadAverageReset; + this.averageLoadAverageReset = loadAverageReset; + this.gradientLoadAverageReset = loadAverageReset; + this.secondDerivativeLoadAverageRest = loadAverageReset; + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/31056109/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/MemberStatsContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/MemberStatsContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/MemberStatsContext.java index ac8b61a..bd3a6c3 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/MemberStatsContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/MemberStatsContext.java @@ -31,10 +31,10 @@ public class MemberStatsContext { private MemoryConsumption memoryConsumption; private String memberId; - public MemberStatsContext(String memberId){ + public MemberStatsContext(String memberId) { this.memberId = memberId; memoryConsumption = new MemoryConsumption(); - loadAverage = new LoadAverage(); + loadAverage = new LoadAverage(); } public String getMemberId() { @@ -52,4 +52,29 @@ public class MemberStatsContext { public MemoryConsumption getMemoryConsumption() { return memoryConsumption; } + + public void setAverageLoadAverage(float value) { + loadAverage.setAverage(value); + } + + public void setAverageMemoryConsumption(float value) { + memoryConsumption.setAverage(value); + } + + public void setGradientOfLoadAverage(float value) { + loadAverage.setGradient(value); + } + + public void setGradientOfMemoryConsumption(float value) { + memoryConsumption.setGradient(value); + } + + public void setSecondDerivativeOfLoadAverage(float value) { + loadAverage.setSecondDerivative(value); + } + + public void setSecondDerivativeOfMemoryConsumption(float value) { + memoryConsumption.setSecondDerivative(value); + } + }
