Skip to content

Commit

Permalink
Fix #181: Refactor PortForwardService to use Kubernetes Client Port F…
Browse files Browse the repository at this point in the history
…orwarding instead of kubectl binary

+ Moved code from DebugMojo to DebugService
+ Refactored PortForwardService to use KubernetesClient's portForward
  instead of `kubectl`/`oc`

Signed-off-by: Rohan Kumar <rohaan@redhat.com>
  • Loading branch information
rohanKanojia authored and manusa committed Jan 13, 2021
1 parent 104a4d9 commit 7780abc
Show file tree
Hide file tree
Showing 15 changed files with 954 additions and 401 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,14 @@
* Contributors:
* Red Hat, Inc. - initial API and implementation
*/
package org.eclipse.jkube.kit.enricher.api.util;
package org.eclipse.jkube.kit.common;

/**
* Some constants for Java Debugging on Kubernetes
*/
public class DebugConstants {
private DebugConstants() { }

public static final String ENV_VAR_JAVA_DEBUG = "JAVA_ENABLE_DEBUG";
public static final String ENV_VAR_JAVA_DEBUG_SUSPEND = "JAVA_DEBUG_SUSPEND";
public static final String ENV_VAR_JAVA_DEBUG_SESSION = "JAVA_DEBUG_SESSION";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@

import io.fabric8.kubernetes.api.model.Config;
import io.fabric8.kubernetes.api.model.Container;
import io.fabric8.kubernetes.api.model.ContainerPort;
import io.fabric8.kubernetes.api.model.ContainerPortBuilder;
import io.fabric8.kubernetes.api.model.Context;
import io.fabric8.kubernetes.api.model.EnvVar;
import io.fabric8.kubernetes.api.model.EnvVarBuilder;
Expand Down Expand Up @@ -957,5 +959,26 @@ public static String getNamespaceFromKubernetesList(Collection<HasMetadata> enti
}
return null;
}

public static boolean addPort(List<ContainerPort> ports, String portNumberText, String portName, KitLogger log) {
if (StringUtils.isBlank(portNumberText)) {
return false;
}
int portValue;
try {
portValue = Integer.parseInt(portNumberText);
} catch (NumberFormatException e) {
log.warn("Could not parse remote debugging port %s as an integer: %s", portNumberText, e);
return false;
}
for (ContainerPort port : ports) {
Integer containerPort = port.getContainerPort();
if (containerPort != null && containerPort.intValue() == portValue) {
return false;
}
}
ports.add(new ContainerPortBuilder().withName(portName).withContainerPort(portValue).build());
return true;
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
*/
package org.eclipse.jkube.kit.common.util;

import io.fabric8.kubernetes.api.model.ContainerPort;
import io.fabric8.kubernetes.api.model.ContainerPortBuilder;
import io.fabric8.kubernetes.api.model.EnvVar;
import io.fabric8.kubernetes.api.model.EnvVarBuilder;
import io.fabric8.kubernetes.api.model.HasMetadata;
Expand Down Expand Up @@ -368,6 +370,47 @@ public void testGetFullyQualifiedApiGroupWithKind() {
assertEquals("networking.istio.io/v1alpha3#Gateway", result2);
}

@Test
public void testAddPort() {
// Given
List<ContainerPort> ports = new ArrayList<>();
ports.add(new ContainerPortBuilder().withName("p1").withContainerPort(8001).build());
ports.add(new ContainerPortBuilder().withName("p2").withContainerPort(8002).build());

// When
boolean result = KubernetesHelper.addPort(ports, "8080", "http", logger);

// Then
assertTrue(result);
assertEquals(3, ports.size());
assertEquals("http", ports.get(2).getName());
assertEquals(8080, ports.get(2).getContainerPort().intValue());
}

@Test
public void testAddPortAlreadyExist() {
// Given
List<ContainerPort> ports = new ArrayList<>();
ports.add(new ContainerPortBuilder().withName("p1").withContainerPort(8001).build());
ports.add(new ContainerPortBuilder().withName("p2").withContainerPort(8002).build());

// When
boolean result = KubernetesHelper.addPort(ports, "8001", "p1", logger);

// Then
assertFalse(result);
}

@Test
public void testAddPortNullPortNumber() {
assertFalse(KubernetesHelper.addPort(Collections.emptyList(), "", "", logger));
}

@Test
public void testAddPortWithInvalidPortNumber() {
assertFalse(KubernetesHelper.addPort(Collections.emptyList(), "90invalid", "", logger));
}

@Test
public void testGetNamespaceFromKubernetesList() {
// Given
Expand Down

This file was deleted.

Loading

0 comments on commit 7780abc

Please sign in to comment.