You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ra...@apache.org on 2015/09/23 16:23:03 UTC
[1/2] stratos git commit: Improve readability in
createKubernetesServices method
Repository: stratos
Updated Branches:
refs/heads/stratos-4.1.x a2adec321 -> 894aa4beb
Improve readability in createKubernetesServices method
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/46f278ca
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/46f278ca
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/46f278ca
Branch: refs/heads/stratos-4.1.x
Commit: 46f278cad6ca26c6a9467b907f48dac1c92db0d2
Parents: a2adec3
Author: Akila Perera <ra...@gmail.com>
Authored: Wed Sep 23 19:52:15 2015 +0530
Committer: Akila Perera <ra...@gmail.com>
Committed: Wed Sep 23 19:52:15 2015 +0530
----------------------------------------------------------------------
.../iaases/kubernetes/KubernetesIaas.java | 219 ++++++++++---------
1 file changed, 110 insertions(+), 109 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/46f278ca/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
index 9f42816..a47c61e 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
@@ -517,125 +517,127 @@ public class KubernetesIaas extends Iaas {
Collection<ClusterPortMapping> clusterPortMappings = CloudControllerContext.getInstance()
.getClusterPortMappings(clusterContext.getApplicationId(), clusterId);
- if (clusterPortMappings != null) {
- String serviceName = DigestUtils.md5Hex(clusterId);
- Collection<KubernetesService> kubernetesServices =
- clusterContext.getKubernetesServices(memberContext.getClusterInstanceId());
-
- for (ClusterPortMapping clusterPortMapping : clusterPortMappings) {
- // Skip if already created
- int containerPort = clusterPortMapping.getPort();
- KubernetesService existingService = findKubernetesService(kubernetesServices, containerPort);
- if ((existingService != null) && serviceExistsInCluster(
- existingService.getId(), kubernetesClusterContext,
- memberContext, clusterPortMapping.getName())) {
-
- if (log.isDebugEnabled()) {
- log.debug(String.format("Kubernetes service already exists: [kubernetes-cluster] %s " +
- "[cluster] %s [service-name] %s [container-port] %d ",
- kubernetesCluster.getClusterId(), clusterId, serviceName, containerPort));
- }
- continue;
- }
+ if (clusterPortMappings == null) {
+ log.info("No cluster port mappings found. Stratos will not attempt to create Kubernetes services");
+ return;
+ }
- // Find next available service sequence number
- long serviceSeqNo = kubernetesClusterContext.getNextServiceSeqNo();
- String serviceId =
- KubernetesIaasUtil.fixSpecialCharacters(prepareServiceName(serviceSeqNo));
- while (kubernetesApi.getService(serviceId) != null) {
- serviceSeqNo = kubernetesClusterContext.getNextServiceSeqNo();
- serviceId = KubernetesIaasUtil.fixSpecialCharacters(prepareServiceName(serviceSeqNo));
- }
+ String serviceName = DigestUtils.md5Hex(clusterId);
+ Collection<KubernetesService> kubernetesServices =
+ clusterContext.getKubernetesServices(memberContext.getClusterInstanceId());
- if (log.isInfoEnabled()) {
- log.info(String.format("Creating kubernetes service: [cluster] %s [service-id] %s [service-name] " +
- "%s " + "[protocol] %s [service-port] %d [container-port] %s", clusterId,
- serviceId, serviceName, clusterPortMapping.getProtocol(),
- clusterPortMapping.getKubernetesServicePort(), containerPort));
- }
+ for (ClusterPortMapping clusterPortMapping : clusterPortMappings) {
+ // Skip if already created
+ int containerPort = clusterPortMapping.getPort();
+ KubernetesService existingService = findKubernetesService(kubernetesServices, containerPort);
+ if ((existingService != null) && serviceExistsInCluster(
+ existingService.getId(), kubernetesClusterContext,
+ memberContext, clusterPortMapping.getName())) {
+
+ log.info(String.format("Kubernetes service already exists: [kubernetes-cluster] %s " +
+ "[cluster] %s [service-name] %s [container-port] %d ",
+ kubernetesCluster.getClusterId(), clusterId, serviceName, containerPort));
+ continue;
+ }
- // Create kubernetes service for port mapping
- int servicePort = clusterPortMapping.getKubernetesServicePort();
- String serviceType = clusterPortMapping.getKubernetesPortType();
- String containerPortName = KubernetesIaasUtil.preparePortNameFromPortMapping(clusterPortMapping);
-
- Map<String, String> serviceLabels = new HashMap<>();
- serviceLabels.put(CloudControllerConstants.APPLICATION_ID_LABEL,
- trimLabel(CloudControllerConstants.APPLICATION_ID_LABEL, clusterContext.getApplicationId()));
-
- serviceLabels.put(CloudControllerConstants.CLUSTER_INSTANCE_ID_LABEL,
- trimLabel(CloudControllerConstants.CLUSTER_INSTANCE_ID_LABEL,
- memberContext.getClusterInstanceId()));
-
- serviceLabels.put(CloudControllerConstants.PORT_NAME_LABEL,
- trimLabel(CloudControllerConstants.PORT_NAME_LABEL, clusterPortMapping.getName()));
-
- Map<String, String> serviceAnnotations = new HashMap<>();
- serviceAnnotations
- .put(CloudControllerConstants.APPLICATION_ID_LABEL, clusterContext.getApplicationId());
- serviceAnnotations.put(CloudControllerConstants.CLUSTER_ID_LABEL, clusterContext.getClusterId());
- serviceAnnotations.put(CloudControllerConstants.CLUSTER_INSTANCE_ID_LABEL,
- memberContext.getClusterInstanceId());
- serviceAnnotations.put(CloudControllerConstants.PORT_NAME_LABEL, clusterPortMapping.getName());
- serviceAnnotations.put(CloudControllerConstants.PROTOCOL_LABEL, clusterPortMapping.getProtocol());
- serviceAnnotations.put(CloudControllerConstants.PORT_TYPE_LABEL,
- clusterPortMapping.getKubernetesPortType());
- serviceAnnotations.put(CloudControllerConstants.SERVICE_PORT_LABEL, String.valueOf(clusterPortMapping
- .getKubernetesServicePort()));
- serviceAnnotations
- .put(CloudControllerConstants.PORT_LABEL, String.valueOf(clusterPortMapping.getPort()));
- serviceAnnotations.put(CloudControllerConstants.PROXY_PORT_LABEL,
- String.valueOf(clusterPortMapping.getProxyPort()));
-
- kubernetesApi.createService(serviceId, serviceName, serviceLabels, serviceAnnotations, servicePort,
- serviceType, containerPortName, containerPort, sessionAffinity);
- try {
- Thread.sleep(1000);
- }
- catch (InterruptedException ignore) {
- }
+ // Find next available service sequence number
+ long serviceSeqNo = kubernetesClusterContext.getNextServiceSeqNo();
+ String serviceId =
+ KubernetesIaasUtil.fixSpecialCharacters(prepareServiceName(serviceSeqNo));
+ while (kubernetesApi.getService(serviceId) != null) {
+ serviceSeqNo = kubernetesClusterContext.getNextServiceSeqNo();
+ serviceId = KubernetesIaasUtil.fixSpecialCharacters(prepareServiceName(serviceSeqNo));
+ }
- Service service = kubernetesApi.getService(serviceId);
- if (service == null) {
- throw new KubernetesClientException("Kubernetes service was not created: [service] " + serviceId);
- }
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Creating kubernetes service: [cluster] %s [service-id] %s [service-name] " +
+ "%s " + "[protocol] %s [service-port] %d [container-port] %s", clusterId,
+ serviceId, serviceName, clusterPortMapping.getProtocol(),
+ clusterPortMapping.getKubernetesServicePort(), containerPort));
+ }
- KubernetesService kubernetesService = new KubernetesService();
- kubernetesService.setId(service.getMetadata().getName());
- kubernetesService.setPortalIP(service.getSpec().getClusterIP());
- // Expose minions public IP addresses as they need to be accessed by external networks
- String[] minionPublicIPArray = minionPublicIPList.toArray(new String[minionPublicIPList.size()]);
- kubernetesService.setPublicIPs(minionPublicIPArray);
- kubernetesService.setProtocol(clusterPortMapping.getProtocol());
- kubernetesService.setPortName(clusterPortMapping.getName());
-
- String kubernetesPortType = service.getSpec().getType();
- kubernetesService.setServiceType(kubernetesPortType);
- kubernetesService.setKubernetesClusterId(memberContext.getPartition().getKubernetesClusterId());
-
- if (kubernetesPortType.equals(KubernetesConstants.NODE_PORT)) {
- kubernetesService.setPort(service.getSpec().getPorts().get(0).getNodePort());
- } else {
- kubernetesService.setPort(service.getSpec().getPorts().get(0).getPort());
- }
+ // Create kubernetes service for port mapping
+ int servicePort = clusterPortMapping.getKubernetesServicePort();
+ String serviceType = clusterPortMapping.getKubernetesPortType();
+ String containerPortName = KubernetesIaasUtil.preparePortNameFromPortMapping(clusterPortMapping);
+
+ Map<String, String> serviceLabels = new HashMap<>();
+ serviceLabels.put(CloudControllerConstants.APPLICATION_ID_LABEL,
+ trimLabel(CloudControllerConstants.APPLICATION_ID_LABEL, clusterContext.getApplicationId()));
+
+ serviceLabels.put(CloudControllerConstants.CLUSTER_INSTANCE_ID_LABEL,
+ trimLabel(CloudControllerConstants.CLUSTER_INSTANCE_ID_LABEL,
+ memberContext.getClusterInstanceId()));
+
+ serviceLabels.put(CloudControllerConstants.PORT_NAME_LABEL,
+ trimLabel(CloudControllerConstants.PORT_NAME_LABEL, clusterPortMapping.getName()));
+
+ Map<String, String> serviceAnnotations = new HashMap<>();
+ serviceAnnotations
+ .put(CloudControllerConstants.APPLICATION_ID_LABEL, clusterContext.getApplicationId());
+ serviceAnnotations.put(CloudControllerConstants.CLUSTER_ID_LABEL, clusterContext.getClusterId());
+ serviceAnnotations.put(CloudControllerConstants.CLUSTER_INSTANCE_ID_LABEL,
+ memberContext.getClusterInstanceId());
+ serviceAnnotations.put(CloudControllerConstants.PORT_NAME_LABEL, clusterPortMapping.getName());
+ serviceAnnotations.put(CloudControllerConstants.PROTOCOL_LABEL, clusterPortMapping.getProtocol());
+ serviceAnnotations.put(CloudControllerConstants.PORT_TYPE_LABEL,
+ clusterPortMapping.getKubernetesPortType());
+ serviceAnnotations.put(CloudControllerConstants.SERVICE_PORT_LABEL, String.valueOf(clusterPortMapping
+ .getKubernetesServicePort()));
+ serviceAnnotations
+ .put(CloudControllerConstants.PORT_LABEL, String.valueOf(clusterPortMapping.getPort()));
+ serviceAnnotations.put(CloudControllerConstants.PROXY_PORT_LABEL,
+ String.valueOf(clusterPortMapping.getProxyPort()));
+
+ kubernetesApi.createService(serviceId, serviceName, serviceLabels, serviceAnnotations, servicePort,
+ serviceType, containerPortName, containerPort, sessionAffinity);
+ try {
+ Thread.sleep(1000);
+ }
+ catch (InterruptedException ignore) {
+ }
- kubernetesService.setContainerPort(containerPort);
+ Service service = kubernetesApi.getService(serviceId);
+ if (service == null) {
+ throw new KubernetesClientException("Kubernetes service was not created: [service] " + serviceId);
+ }
- clusterContext.addKubernetesService(memberContext.getClusterInstanceId(),kubernetesService);
- CloudControllerContext.getInstance().persist();
+ KubernetesService kubernetesService = new KubernetesService();
+ kubernetesService.setId(service.getMetadata().getName());
+ kubernetesService.setPortalIP(service.getSpec().getClusterIP());
+ // Expose minions public IP addresses as they need to be accessed by external networks
+ String[] minionPublicIPArray = minionPublicIPList.toArray(new String[minionPublicIPList.size()]);
+ kubernetesService.setPublicIPs(minionPublicIPArray);
+ kubernetesService.setProtocol(clusterPortMapping.getProtocol());
+ kubernetesService.setPortName(clusterPortMapping.getName());
+
+ String kubernetesPortType = service.getSpec().getType();
+ kubernetesService.setServiceType(kubernetesPortType);
+ kubernetesService.setKubernetesClusterId(memberContext.getPartition().getKubernetesClusterId());
+
+ if (kubernetesPortType.equals(KubernetesConstants.NODE_PORT)) {
+ kubernetesService.setPort(service.getSpec().getPorts().get(0).getNodePort());
+ } else {
+ kubernetesService.setPort(service.getSpec().getPorts().get(0).getPort());
+ }
- if (log.isInfoEnabled()) {
- log.info(String.format(
- "Kubernetes service successfully created: [cluster] %s [service-id] %s [protocol] %s " +
- "[node-port] %d [container-port] %s", clusterId, serviceId,
- clusterPortMapping.getProtocol(), servicePort, containerPort));
- }
+ kubernetesService.setContainerPort(containerPort);
+
+ clusterContext.addKubernetesService(memberContext.getClusterInstanceId(), kubernetesService);
+ CloudControllerContext.getInstance().persist();
+
+ if (log.isInfoEnabled()) {
+ log.info(String.format(
+ "Kubernetes service successfully created: [cluster] %s [service-id] %s [protocol] %s " +
+ "[node-port] %d [container-port] %s", clusterId, serviceId,
+ clusterPortMapping.getProtocol(), servicePort, containerPort));
}
}
}
/**
* Check a given kubernetes service exists in kubernetes cluster
+ *
* @param serviceId
* @param kubernetesClusterContext
* @param memberContext
@@ -650,7 +652,7 @@ public class KubernetesIaas extends Iaas {
KubernetesApiClient kubernetesApi = kubernetesClusterContext.getKubApi();
Service service = kubernetesApi.getService(serviceId);
- if(service != null) {
+ if (service != null) {
Map<String, String> annotations = service.getMetadata().getAnnotations();
String applicationIdLabel = annotations.get(CloudControllerConstants.APPLICATION_ID_LABEL);
String clusterInstanceIdLabel = annotations.get(CloudControllerConstants.CLUSTER_INSTANCE_ID_LABEL);
@@ -668,7 +670,7 @@ public class KubernetesIaas extends Iaas {
}
private String trimLabel(String key, String value) {
- if(StringUtils.isNotEmpty(value) && (value.length() > KubernetesConstants.MAX_LABEL_LENGTH)) {
+ if (StringUtils.isNotEmpty(value) && (value.length() > KubernetesConstants.MAX_LABEL_LENGTH)) {
String trimmed = value.substring(0, KubernetesConstants.MAX_LABEL_LENGTH - 2).concat("X");
log.warn(String.format("Kubernetes label trimmed: [key] %s [original] %s [trimmed] %s",
key, value, trimmed));
@@ -706,7 +708,7 @@ public class KubernetesIaas extends Iaas {
private KubernetesService findKubernetesService(Collection<KubernetesService> kubernetesServices,
int containerPort) {
- if(kubernetesServices != null) {
+ if (kubernetesServices != null) {
for (KubernetesService kubernetesService : kubernetesServices) {
if (kubernetesService.getContainerPort() == containerPort) {
return kubernetesService;
@@ -726,7 +728,6 @@ public class KubernetesIaas extends Iaas {
private void generateKubernetesServicePorts(String applicationId, String clusterId,
KubernetesClusterContext kubernetesClusterContext,
Cartridge cartridge) throws KubernetesClientException {
-
synchronized (KubernetesIaas.class) {
if (cartridge != null) {
[2/2] stratos git commit: Fix incorrect variable reference in
generateKubernetesServicePorts method
Posted by ra...@apache.org.
Fix incorrect variable reference in generateKubernetesServicePorts method
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/894aa4be
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/894aa4be
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/894aa4be
Branch: refs/heads/stratos-4.1.x
Commit: 894aa4bebe43011410c613691f700fd495172cfd
Parents: 46f278c
Author: Akila Perera <ra...@gmail.com>
Authored: Wed Sep 23 19:52:44 2015 +0530
Committer: Akila Perera <ra...@gmail.com>
Committed: Wed Sep 23 19:52:44 2015 +0530
----------------------------------------------------------------------
.../stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/894aa4be/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
index a47c61e..d330dde 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
@@ -742,7 +742,7 @@ public class KubernetesIaas extends Iaas {
}
ClusterPortMapping clusterPortMapping = findClusterPortMapping(clusterPortMappings, portMapping);
- if (clusterPortMappings == null) {
+ if (clusterPortMapping == null) {
throw new CloudControllerException(String.format("Cluster port mapping not found: " +
"[application-id] %s [cluster-id] %s [transport] %s", applicationId, clusterId,
portMapping.getName()));