You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by dr...@apache.org on 2017/06/29 15:35:48 UTC

[06/50] [abbrv] brooklyn-server git commit: Fix generation of Kubernetes port sensors and mappings

Fix generation of Kubernetes port sensors and mappings


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/f0c3290a
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/f0c3290a
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/f0c3290a

Branch: refs/heads/master
Commit: f0c3290aa3a5be46ae5bdc2e226aca813bff1359
Parents: 220c737
Author: Andrew Donald Kennedy <an...@cloudsoftcorp.com>
Authored: Thu Feb 9 17:07:12 2017 +0000
Committer: Andrew Donald Kennedy <an...@cloudsoftcorp.com>
Committed: Fri May 19 14:01:20 2017 +0100

----------------------------------------------------------------------
 .../entity/KubernetesResourceImpl.java          | 10 ++++-----
 .../kubernetes/location/KubernetesLocation.java | 23 +++++++++-----------
 .../KubernetesLocationYamlLiveTest.java         |  6 ++---
 3 files changed, 18 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/f0c3290a/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/entity/KubernetesResourceImpl.java
----------------------------------------------------------------------
diff --git a/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/entity/KubernetesResourceImpl.java b/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/entity/KubernetesResourceImpl.java
index 1a4cacf..57f9013 100644
--- a/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/entity/KubernetesResourceImpl.java
+++ b/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/entity/KubernetesResourceImpl.java
@@ -7,11 +7,11 @@ public class KubernetesResourceImpl extends EmptySoftwareProcessImpl implements
 
     @Override
     public void init() {
-       super.init();
+        super.init();
 
-      config().set(BrooklynConfigKeys.SKIP_ON_BOX_BASE_DIR_RESOLUTION, true);
-      config().set(PROVISIONING_PROPERTIES.subKey("useJcloudsSshInit"), false);
-      config().set(PROVISIONING_PROPERTIES.subKey("waitForSshable"), false);
-      config().set(EmptySoftwareProcessImpl.USE_SSH_MONITORING, false);
+        config().set(BrooklynConfigKeys.SKIP_ON_BOX_BASE_DIR_RESOLUTION, true);
+        config().set(PROVISIONING_PROPERTIES.subKey("useJcloudsSshInit"), false);
+        config().set(PROVISIONING_PROPERTIES.subKey("waitForSshable"), false);
+        config().set(EmptySoftwareProcessImpl.USE_SSH_MONITORING, false);
     }
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/f0c3290a/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocation.java
----------------------------------------------------------------------
diff --git a/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocation.java b/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocation.java
index 18cbcd3..4543b4d 100644
--- a/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocation.java
+++ b/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocation.java
@@ -16,6 +16,7 @@ import org.apache.brooklyn.api.location.MachineProvisioningLocation;
 import org.apache.brooklyn.api.location.NoMachinesAvailableException;
 import org.apache.brooklyn.api.location.PortRange;
 import org.apache.brooklyn.api.sensor.AttributeSensor;
+import org.apache.brooklyn.api.sensor.EnricherSpec;
 import org.apache.brooklyn.core.entity.BrooklynConfigKeys;
 import org.apache.brooklyn.core.entity.EntityInternal;
 import org.apache.brooklyn.core.location.AbstractLocation;
@@ -24,6 +25,7 @@ import org.apache.brooklyn.core.location.PortRanges;
 import org.apache.brooklyn.core.location.access.PortForwardManager;
 import org.apache.brooklyn.core.location.access.PortForwardManagerLocationResolver;
 import org.apache.brooklyn.core.location.cloud.CloudLocationConfig;
+import org.apache.brooklyn.core.network.OnPublicNetworkEnricher;
 import org.apache.brooklyn.core.sensor.Sensors;
 import org.apache.brooklyn.location.ssh.SshMachineLocation;
 import org.apache.brooklyn.util.collections.MutableList;
@@ -343,17 +345,8 @@ public class KubernetesLocation extends AbstractLocation implements MachineProvi
 
         if (resourceType.equals("Service")) {
             Service service = getService(namespace, resourceName);
-            registerPortMappings(machine, service);
-
-            List<ServicePort> ports = service.getSpec().getPorts();
-            for (ServicePort port : ports) {
-                String protocol = port.getProtocol();
-                if ("TCP".equalsIgnoreCase(protocol)) {
-                    Integer targetPort = port.getTargetPort().getIntVal();
-                    AttributeSensor<Integer> sensor = Sensors.newIntegerSensor("kubernetes.port." + port.getName());
-                    entity.sensors().set(sensor, targetPort);
-                }
-            }
+            registerPortMappings(machine, entity, service);
+
         }
 
         return machine;
@@ -440,7 +433,7 @@ public class KubernetesLocation extends AbstractLocation implements MachineProvi
 
         LocationSpec<SshMachineLocation> locationSpec = prepareLocationSpec(entity, setup, namespace, deploymentName, service, pod);
         SshMachineLocation machine = getManagementContext().getLocationManager().createLocation(locationSpec);
-        registerPortMappings(machine, service);
+        registerPortMappings(machine, entity, service);
         if (!isDockerContainer(entity)) {
             waitForSshable(machine, Duration.FIVE_MINUTES);
         }
@@ -477,7 +470,7 @@ public class KubernetesLocation extends AbstractLocation implements MachineProvi
         }
     }
 
-    protected void registerPortMappings(SshMachineLocation machine, Service service) {
+    protected void registerPortMappings(SshMachineLocation machine, Entity entity, Service service) {
         PortForwardManager portForwardManager = (PortForwardManager) getManagementContext().getLocationRegistry()
                 .getLocationManaged(PortForwardManagerLocationResolver.PFM_GLOBAL_SPEC);
         List<ServicePort> ports = service.getSpec().getPorts();
@@ -496,8 +489,12 @@ public class KubernetesLocation extends AbstractLocation implements MachineProvi
                 LOG.debug("Ignoring port mapping {} to {} because port.getNodePort() is null", targetPort, machine);
             } else {
                 portForwardManager.associate(publicHostText, HostAndPort.fromParts(publicHostText, port.getNodePort()), machine, targetPort);
+                AttributeSensor<Integer> sensor = Sensors.newIntegerSensor("kubernetes." + Strings.maybeNonBlank(port.getName()).or(targetPort.toString()) + ".port");
+                entity.sensors().set(sensor, targetPort);
             }
         }
+
+        entity.enrichers().add(EnricherSpec.create(OnPublicNetworkEnricher.class).configure(OnPublicNetworkEnricher.MAP_MATCHING, "kubernetes.[a-zA-Z0-9][a-zA-Z0-9-_]*.port"));
     }
 
     protected String findDeploymentName(Entity entity, ConfigBag setup) {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/f0c3290a/kubernetes-location/src/test/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocationYamlLiveTest.java
----------------------------------------------------------------------
diff --git a/kubernetes-location/src/test/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocationYamlLiveTest.java b/kubernetes-location/src/test/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocationYamlLiveTest.java
index f2fcac4..11c78ef 100644
--- a/kubernetes-location/src/test/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocationYamlLiveTest.java
+++ b/kubernetes-location/src/test/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocationYamlLiveTest.java
@@ -372,9 +372,9 @@ public class KubernetesLocationYamlLiveTest extends AbstractYamlTest {
 
         Entities.dumpInfo(app);
 
-        Integer httpPort = assertAttributeEventuallyNonNull(nginxService, Sensors.newIntegerSensor("kubernetes.port.http"));
-        assertEquals(httpPort, Integer.valueOf(8080));
-        String httpPublicPort = assertAttributeEventuallyNonNull(nginxService, Sensors.newStringSensor("kubernetes.port.http.mapped.public"));
+        Integer httpPort = assertAttributeEventuallyNonNull(nginxService, Sensors.newIntegerSensor("kubernetes.http.port"));
+        assertEquals(httpPort, Integer.valueOf(80));
+        String httpPublicPort = assertAttributeEventuallyNonNull(nginxService, Sensors.newStringSensor("kubernetes.http.endpoint.mapped.public"));
         assertReachableEventually(HostAndPort.fromString(httpPublicPort));
     }