Merge branch 'container-autoscaling' of https://git-wip-us.apache.org/repos/asf/stratos into container-autoscaling
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/31daf2f3 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/31daf2f3 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/31daf2f3 Branch: refs/heads/container-autoscaling Commit: 31daf2f328e4a9abe988d926a3fe32d2556f7693 Parents: fce7322 30e08c8 Author: R-Rajkumar <[email protected]> Authored: Thu Oct 9 11:09:31 2014 +0530 Committer: R-Rajkumar <[email protected]> Committed: Thu Oct 9 11:09:31 2014 +0530 ---------------------------------------------------------------------- .../cloud/controller/CloudControllerClient.java | 14 +- .../KubernetesServiceClusterMonitor.java | 61 +- ...inerClusterContextToKubernetesContainer.java | 141 +++ ...tainerClusterContextToKubernetesService.java | 64 ++ ...erClusterContextToReplicationController.java | 90 ++ .../MemberContextToKubernetesContainer.java | 147 --- .../MemberContextToKubernetesService.java | 65 -- .../MemberContextToReplicationController.java | 90 -- .../functions/PodToMemberContext.java | 46 + .../impl/CloudControllerServiceImpl.java | 209 +++-- .../interfaces/CloudControllerService.java | 8 +- .../pojo/ContainerClusterContext.java | 87 ++ .../cloud/controller/pojo/MemberContext.java | 29 +- .../pom.xml | 2 +- .../kubernetes/client/KubernetesApiClient.java | 202 +++-- .../KubernetesAPIClientInterface.java | 8 + .../client/rest/KubernetesResponse.java | 56 ++ .../client/rest/KubernetesResponseHandler.java | 71 ++ .../kubernetes/client/rest/RestClient.java | 88 +- .../pom.xml | 19 + .../modules/distribution/src/assembly/bin.xml | 6 +- .../main/resources/CloudControllerService.wsdl | 898 ++++++++++--------- 22 files changed, 1393 insertions(+), 1008 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/31daf2f3/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java index 65035d0,eaa80c4..b7a476a --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java @@@ -33,14 -31,9 +33,15 @@@ import org.apache.stratos.autoscaler.ex import org.apache.stratos.autoscaler.exception.TerminationException; import org.apache.stratos.autoscaler.kubernetes.KubernetesManager; import org.apache.stratos.autoscaler.util.ConfUtil; -import org.apache.stratos.cloud.controller.stub.*; +import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidCartridgeTypeExceptionException; +import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidClusterExceptionException; +import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidIaasProviderExceptionException; +import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidMemberExceptionException; +import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidPartitionExceptionException; +import org.apache.stratos.cloud.controller.stub.CloudControllerServiceStub; +import org.apache.stratos.cloud.controller.stub.CloudControllerServiceUnregisteredCartridgeExceptionException; import org.apache.stratos.cloud.controller.stub.deployment.partition.Partition; + import org.apache.stratos.cloud.controller.stub.pojo.ContainerClusterContext; import org.apache.stratos.cloud.controller.stub.pojo.MemberContext; import org.apache.stratos.cloud.controller.stub.pojo.Properties; import org.apache.stratos.cloud.controller.stub.pojo.Property; http://git-wip-us.apache.org/repos/asf/stratos/blob/31daf2f3/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java ---------------------------------------------------------------------- diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java index 1688df1,6362fc4..d0d7668 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java @@@ -119,75 -125,28 +128,75 @@@ public final class KubernetesServiceClu log.debug("Returned member context is null, did not add to pending members"); } } - } catch (SpawningException spawningException) { - if (log.isDebugEnabled()) { - String message = "Cannot create containers, will retry in " - + (retryInterval / 1000) + "s"; - log.debug(message, spawningException); - } - } catch (Exception exception) { - if (log.isDebugEnabled()) { - String message = "Error while creating containers, will retry in " - + (retryInterval / 1000) + "s"; - log.debug(message, exception); - } } - try { - Thread.sleep(retryInterval); - } catch (InterruptedException ignored) { + } catch (SpawningException spawningException) { + if (log.isDebugEnabled()) { + String message = "Cannot create containers, will retry in " + + (retryInterval / 1000) + "s"; + log.debug(message, spawningException); + } + } catch (Exception exception) { + if (log.isDebugEnabled()) { + String message = "Error while creating containers, will retry in " + + (retryInterval / 1000) + "s"; + log.debug(message, exception); } } + try { + Thread.sleep(retryInterval); + } catch (InterruptedException ignored) { + } } + + minCheck(); + scaleCheck(); } - @Override + private void scaleCheck() { + boolean rifReset = getKubernetesClusterCtxt().isRifReset(); + boolean memoryConsumptionReset = getKubernetesClusterCtxt().isMemoryConsumptionReset(); + boolean loadAverageReset = getKubernetesClusterCtxt().isLoadAverageReset(); + if (log.isDebugEnabled()) { + log.debug("flag of rifReset : " + rifReset + + " flag of memoryConsumptionReset : " + + memoryConsumptionReset + " flag of loadAverageReset : " + + loadAverageReset); + } + String kubernetesClusterID = getKubernetesClusterCtxt().getKubernetesClusterID(); + String clusterId = getClusterId(); + if (rifReset || memoryConsumptionReset || loadAverageReset) { + getScaleCheckKnowledgeSession().setGlobal("clusterId", clusterId); + getScaleCheckKnowledgeSession().setGlobal("autoscalePolicy", autoscalePolicy); + getScaleCheckKnowledgeSession().setGlobal("rifReset", rifReset); + getScaleCheckKnowledgeSession().setGlobal("mcReset", memoryConsumptionReset); + getScaleCheckKnowledgeSession().setGlobal("laReset", loadAverageReset); + if (log.isDebugEnabled()) { + log.debug(String.format( + "Running scale check for kub-cluster %s ", kubernetesClusterID)); + } + scaleCheckFactHandle = AutoscalerRuleEvaluator.evaluateScaleCheck( + getScaleCheckKnowledgeSession(), scaleCheckFactHandle, getKubernetesClusterCtxt()); + getKubernetesClusterCtxt().setRifReset(false); + getKubernetesClusterCtxt().setMemoryConsumptionReset(false); + getKubernetesClusterCtxt().setLoadAverageReset(false); + } else if (log.isDebugEnabled()) { + log.debug(String.format("Scale check will not run since none of the statistics have not received yet for " + + "[kub-cluster] %s [cluster] %s", kubernetesClusterID, clusterId)); + } + } + + private void minCheck() { + getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId()); + if (log.isDebugEnabled()) { + log.debug(String.format("Running minimum check for cluster %s ", + getClusterId())); + } + minCheckFactHandle = AutoscalerRuleEvaluator.evaluateMinCheck( + getMinCheckKnowledgeSession(), minCheckFactHandle, + getKubernetesClusterCtxt()); + } + + @Override public void destroy() { getMinCheckKnowledgeSession().dispose(); getScaleCheckKnowledgeSession().dispose(); http://git-wip-us.apache.org/repos/asf/stratos/blob/31daf2f3/products/stratos/modules/distribution/src/assembly/bin.xml ----------------------------------------------------------------------
