Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@

import org.springframework.boot.bootstrap.BootstrapRegistry;
import org.springframework.boot.bootstrap.ConfigurableBootstrapContext;
import org.springframework.boot.context.config.ConfigDataLocation;
import org.springframework.boot.context.config.ConfigDataLocationResolverContext;
import org.springframework.boot.context.config.Profiles;
import org.springframework.cloud.kubernetes.commons.KubernetesClientProperties;
import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider;
import org.springframework.cloud.kubernetes.commons.config.ConfigDataRetryableConfigMapPropertySourceLocator;
Expand All @@ -34,7 +32,6 @@
import org.springframework.cloud.kubernetes.commons.config.SecretsPropertySourceLocator;
import org.springframework.cloud.kubernetes.commons.configdata.ConfigDataPropertiesHolder;
import org.springframework.cloud.kubernetes.commons.configdata.KubernetesConfigDataLocationResolver;
import org.springframework.core.env.Environment;

import static org.springframework.cloud.kubernetes.client.KubernetesClientUtils.kubernetesApiClient;
import static org.springframework.cloud.kubernetes.commons.config.ConfigUtils.registerSingle;
Expand All @@ -45,8 +42,8 @@
public class KubernetesClientConfigDataLocationResolver extends KubernetesConfigDataLocationResolver {

@Override
protected void registerBeans(ConfigDataLocationResolverContext resolverContext, ConfigDataLocation location,
Profiles profiles, ConfigDataPropertiesHolder properties, KubernetesNamespaceProvider namespaceProvider) {
protected void registerBeans(ConfigDataLocationResolverContext resolverContext,
ConfigDataPropertiesHolder properties, KubernetesNamespaceProvider namespaceProvider) {
KubernetesClientProperties kubernetesClientProperties = properties.clientProperties();
ConfigMapConfigProperties configMapProperties = properties.configMapProperties();
SecretsConfigProperties secretsProperties = properties.secretsProperties();
Expand Down Expand Up @@ -91,8 +88,4 @@ private CoreV1Api registerClientAndCoreV1Api(ConfigurableBootstrapContext bootst
return coreV1Api;
}

protected KubernetesNamespaceProvider kubernetesNamespaceProvider(Environment environment) {
return new KubernetesNamespaceProvider(environment);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,9 @@
import static org.springframework.cloud.kubernetes.client.discovery.KubernetesClientDiscoveryClientUtils.serviceMetadata;
import static org.springframework.cloud.kubernetes.client.discovery.KubernetesClientInstanceIdHostPodNameSupplier.externalName;
import static org.springframework.cloud.kubernetes.client.discovery.KubernetesClientInstanceIdHostPodNameSupplier.nonExternalName;
import static org.springframework.cloud.kubernetes.client.discovery.KubernetesClientPodLabelsAndAnnotationsSupplier.externalName;
import static org.springframework.cloud.kubernetes.client.discovery.KubernetesClientPodLabelsAndAnnotationsSupplier.nonExternalName;
import static org.springframework.cloud.kubernetes.commons.discovery.DiscoveryClientUtils.endpointsPort;
import static org.springframework.cloud.kubernetes.commons.discovery.DiscoveryClientUtils.externalNameServiceInstance;
import static org.springframework.cloud.kubernetes.commons.discovery.DiscoveryClientUtils.serviceInstance;
import static org.springframework.cloud.kubernetes.commons.discovery.DiscoveryClientUtils.serviceInstanceMetadata;
import static org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryConstants.EXTERNAL_NAME;
Expand Down Expand Up @@ -143,10 +143,8 @@ public List<ServiceInstance> getInstances(String serviceId) {
properties);

KubernetesClientInstanceIdHostPodNameSupplier supplierOne = externalName(service);
KubernetesClientPodLabelsAndAnnotationsSupplier supplierTwo = externalName();

ServiceInstance externalNameServiceInstance = serviceInstance(null, serviceMetadata, supplierOne,
supplierTwo, new ServicePortNameAndNumber(-1, null), serviceInstanceMetadata, properties);
ServiceInstance externalNameServiceInstance = externalNameServiceInstance(serviceMetadata, supplierOne,
serviceInstanceMetadata);
serviceInstances.add(externalNameServiceInstance);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.kubernetes.commons.discovery.DefaultKubernetesServiceInstance;
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties;
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesExternalNameServiceInstance;

import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
import static org.assertj.core.api.Assertions.assertThat;
Expand Down Expand Up @@ -570,7 +571,8 @@ void testExternalNameService() {

List<ServiceInstance> result = discoveryClient.getInstances("blue-service");
assertThat(result.size()).isEqualTo(1);
DefaultKubernetesServiceInstance externalNameServiceInstance = (DefaultKubernetesServiceInstance) result.get(0);
KubernetesExternalNameServiceInstance externalNameServiceInstance = (KubernetesExternalNameServiceInstance) result
.get(0);
assertThat(externalNameServiceInstance.getServiceId()).isEqualTo("blue-service");
assertThat(externalNameServiceInstance.getHost()).isEqualTo("k8s-spring-b");
assertThat(externalNameServiceInstance.getPort()).isEqualTo(-1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,6 @@ public abstract class AbstractKubernetesInfoContributor implements InfoContribut
*/
public static final String HOST_IP = "hostIp";

/**
* Labels key.
*/
public static final String LABELS = "labels";

private static final Log LOG = LogFactory.getLog(AbstractKubernetesInfoContributor.class);

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ public final List<KubernetesConfigDataResource> resolveProfileSpecific(

Environment environment = environment(kubernetesConfigData, profiles);
KubernetesNamespaceProvider namespaceProvider = kubernetesNamespaceProvider(environment);
registerBeans(resolverContext, location, profiles, properties, namespaceProvider);
registerBeans(resolverContext, properties, namespaceProvider);

KubernetesConfigDataResource resource = new KubernetesConfigDataResource(location.isOptional(), profiles,
environment);
Expand All @@ -99,8 +99,7 @@ public final List<KubernetesConfigDataResource> resolveProfileSpecific(
}

protected abstract void registerBeans(ConfigDataLocationResolverContext resolverContext,
ConfigDataLocation location, Profiles profiles, ConfigDataPropertiesHolder properties,
KubernetesNamespaceProvider namespaceProvider);
ConfigDataPropertiesHolder properties, KubernetesNamespaceProvider namespaceProvider);

protected final boolean isRetryEnabledForConfigMap(ConfigMapConfigProperties configMapProperties) {
return RETRY_IS_PRESENT && configMapProperties != null && configMapProperties.retry().enabled()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,16 @@ public static ServiceInstance serviceInstance(@Nullable ServicePortSecureResolve
podMetadata);
}

public static ServiceInstance externalNameServiceInstance(ServiceMetadata serviceMetadata,
Supplier<InstanceIdHostPodName> instanceIdAndHost, Map<String, String> serviceInstanceMetadata) {

InstanceIdHostPodName data = instanceIdAndHost.get();

return new KubernetesExternalNameServiceInstance(serviceMetadata.name(), data.host(), data.instanceId(),
serviceInstanceMetadata);

}

/**
* take primary-port-name from service label "PRIMARY_PORT_NAME_LABEL_KEY" if it
* exists, otherwise from KubernetesDiscoveryProperties if it exists, otherwise null.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,8 @@ class KubernetesConfigDataLocationResolverTests {
private static final KubernetesConfigDataLocationResolver NOOP_RESOLVER = new KubernetesConfigDataLocationResolver() {

@Override
protected void registerBeans(ConfigDataLocationResolverContext resolverContext, ConfigDataLocation location,
Profiles profiles, ConfigDataPropertiesHolder properties,
KubernetesNamespaceProvider namespaceProvider) {

protected void registerBeans(ConfigDataLocationResolverContext resolverContext,
ConfigDataPropertiesHolder properties, KubernetesNamespaceProvider namespaceProvider) {
}

};
Expand Down Expand Up @@ -293,8 +291,8 @@ void testResolveProfileSpecificSix() {

Profiles profiles = Mockito.mock(Profiles.class);
ConfigDataLocation configDataLocation = ConfigDataLocation.of("kubernetes:abc");
List<KubernetesConfigDataResource> result = storePropertiesResolver.resolveProfileSpecific(RESOLVER_CONTEXT,
configDataLocation, profiles);
storePropertiesResolver.resolveProfileSpecific(RESOLVER_CONTEXT,
configDataLocation, profiles);

// on the other hand, @Default will be picked here
Assertions.assertThat(storePropertiesResolver.configMapConfigProperties.enabled()).isTrue();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@

package org.springframework.cloud.kubernetes.commons.configdata;

import org.springframework.boot.context.config.ConfigDataLocation;
import org.springframework.boot.context.config.ConfigDataLocationResolverContext;
import org.springframework.boot.context.config.Profiles;
import org.springframework.cloud.kubernetes.commons.KubernetesClientProperties;
import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider;
import org.springframework.cloud.kubernetes.commons.config.ConfigMapConfigProperties;
Expand All @@ -36,8 +34,8 @@ class StorePropertiesResolver extends KubernetesConfigDataLocationResolver {
KubernetesClientProperties kubernetesClientProperties;

@Override
protected void registerBeans(ConfigDataLocationResolverContext resolverContext, ConfigDataLocation location,
Profiles profiles, ConfigDataPropertiesHolder properties, KubernetesNamespaceProvider namespaceProvider) {
protected void registerBeans(ConfigDataLocationResolverContext resolverContext,
ConfigDataPropertiesHolder properties, KubernetesNamespaceProvider namespaceProvider) {

secretsConfigProperties = properties.secretsProperties();
configMapConfigProperties = properties.configMapProperties();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,6 @@ class BusEventBasedConfigMapWatcherChangeDetectorTests {
@Mock
private ApplicationEventPublisher applicationEventPublisher;

private BusEventBasedConfigMapWatcherChangeDetector changeDetector;

private BusProperties busProperties;

private MockEnvironment mockEnvironment;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@
import io.fabric8.kubernetes.client.KubernetesClient;

import org.springframework.boot.bootstrap.ConfigurableBootstrapContext;
import org.springframework.boot.context.config.ConfigDataLocation;
import org.springframework.boot.context.config.ConfigDataLocationResolverContext;
import org.springframework.boot.context.config.Profiles;
import org.springframework.cloud.kubernetes.commons.KubernetesClientProperties;
import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider;
import org.springframework.cloud.kubernetes.commons.config.ConfigDataRetryableConfigMapPropertySourceLocator;
Expand All @@ -45,9 +43,8 @@
public class Fabric8ConfigDataLocationResolver extends KubernetesConfigDataLocationResolver {

@Override
protected void registerBeans(ConfigDataLocationResolverContext resolverContext, ConfigDataLocation location,
Profiles profiles, ConfigDataPropertiesHolder propertiesHolder,
KubernetesNamespaceProvider namespaceProvider) {
protected void registerBeans(ConfigDataLocationResolverContext resolverContext,
ConfigDataPropertiesHolder propertiesHolder, KubernetesNamespaceProvider namespaceProvider) {

KubernetesClientProperties kubernetesClientProperties = propertiesHolder.clientProperties();
ConfigMapConfigProperties configMapProperties = propertiesHolder.configMapProperties();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,9 +159,8 @@ void testConfigMapFromSingleInvalidPropertiesContent() {
Fabric8ConfigContext context = new Fabric8ConfigContext(mockClient, source, "", new MockEnvironment(),
ReadType.BATCH);

Fabric8ConfigMapPropertySource cmps = new Fabric8ConfigMapPropertySource(context);
Assertions.assertThatCode(() -> new Fabric8ConfigMapPropertySource(context)).doesNotThrowAnyException();

// no exception is thrown for unparseable content
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,6 @@ void namedTwoConfigMapsBothFail(CapturedOutput output) {
configMapConfigProperties, new KubernetesNamespaceProvider(new MockEnvironment()));

CompositePropertySource propertySource = (CompositePropertySource) locator.locate(new MockEnvironment());
List<String> names = propertySource.getPropertySources().stream().map(PropertySource::getName).toList();

assertThat(propertySource.getPropertySources()).isEmpty();
assertThat(output.getOut()).contains("Failed to load source: { config-map name : 'Optional[one]'");
Expand Down Expand Up @@ -181,7 +180,6 @@ void labeledSingleConfigMapFails(CapturedOutput output) {
configMapConfigProperties, new KubernetesNamespaceProvider(new MockEnvironment()));

CompositePropertySource propertySource = (CompositePropertySource) locator.locate(new MockEnvironment());
List<String> sourceNames = propertySource.getPropertySources().stream().map(PropertySource::getName).toList();

assertThat(propertySource.getPropertySources()).isEmpty();
assertThat(output.getOut()).contains("Failed to load source: { config map labels : '{a=b}'");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.springframework.core.log.LogAccessor;

import static org.springframework.cloud.kubernetes.commons.discovery.DiscoveryClientUtils.endpointsPort;
import static org.springframework.cloud.kubernetes.commons.discovery.DiscoveryClientUtils.externalNameServiceInstance;
import static org.springframework.cloud.kubernetes.commons.discovery.DiscoveryClientUtils.serviceInstance;
import static org.springframework.cloud.kubernetes.commons.discovery.DiscoveryClientUtils.serviceInstanceMetadata;
import static org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryConstants.EXTERNAL_NAME;
Expand All @@ -49,7 +50,6 @@
import static org.springframework.cloud.kubernetes.fabric8.discovery.Fabric8DiscoveryClientUtils.services;
import static org.springframework.cloud.kubernetes.fabric8.discovery.Fabric8InstanceIdHostPodNameSupplier.externalName;
import static org.springframework.cloud.kubernetes.fabric8.discovery.Fabric8InstanceIdHostPodNameSupplier.nonExternalName;
import static org.springframework.cloud.kubernetes.fabric8.discovery.Fabric8PodLabelsAndAnnotationsSupplier.externalName;
import static org.springframework.cloud.kubernetes.fabric8.discovery.Fabric8PodLabelsAndAnnotationsSupplier.nonExternalName;

/**
Expand Down Expand Up @@ -112,10 +112,10 @@ public List<ServiceInstance> getInstances(String serviceId) {
properties);

Fabric8InstanceIdHostPodNameSupplier supplierOne = externalName(service);
Fabric8PodLabelsAndAnnotationsSupplier supplierTwo = externalName();

ServiceInstance externalNameServiceInstance = serviceInstance(null, serviceMetadata, supplierOne,
supplierTwo, new ServicePortNameAndNumber(-1, null), serviceInstanceMetadata, properties);
ServiceInstance externalNameServiceInstance = externalNameServiceInstance(serviceMetadata, supplierOne,
serviceInstanceMetadata);

instances.add(externalNameServiceInstance);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -323,12 +323,6 @@ private List<EndpointPort> getEndpointPorts(Map<Integer, String> ports) {
}).collect(toList());
}

private static Environment withClientNamespace() {
MockEnvironment mockEnvironment = new MockEnvironment();
mockEnvironment.setProperty("spring.cloud.kubernetes.client.namespace", "test");
return mockEnvironment;
}

private static Environment mockEnvironment() {
MockEnvironment environment = new MockEnvironment();
environment.setProperty("spring.cloud.kubernetes.client.namespace", "test");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider;
import org.springframework.cloud.kubernetes.commons.discovery.DefaultKubernetesServiceInstance;
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties;
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesExternalNameServiceInstance;
import org.springframework.core.env.Environment;
import org.springframework.mock.env.MockEnvironment;

Expand Down Expand Up @@ -552,7 +553,8 @@ void testExternalNameService() {
Fabric8DiscoveryClient discoveryClient = new Fabric8DiscoveryClient(client, properties, null, null, null);
List<ServiceInstance> result = discoveryClient.getInstances("blue-service");
Assertions.assertThat(result.size()).isEqualTo(1);
DefaultKubernetesServiceInstance externalNameServiceInstance = (DefaultKubernetesServiceInstance) result.get(0);
KubernetesExternalNameServiceInstance externalNameServiceInstance = (KubernetesExternalNameServiceInstance) result
.get(0);
Assertions.assertThat(externalNameServiceInstance.getServiceId()).isEqualTo("blue-service");
Assertions.assertThat(externalNameServiceInstance.getHost()).isEqualTo("k8s-spring-b");
Assertions.assertThat(externalNameServiceInstance.getPort()).isEqualTo(-1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,7 @@
package org.springframework.cloud.kubernetes.fabric8.discovery;

import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.config.ConfigDataLocation;
import org.springframework.boot.context.config.ConfigDataLocationResolverContext;
import org.springframework.boot.context.config.Profiles;
import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider;
import org.springframework.cloud.kubernetes.commons.configdata.ConfigDataPropertiesHolder;
import org.springframework.cloud.kubernetes.commons.configdata.KubernetesConfigDataLocationResolver;
Expand All @@ -31,8 +29,8 @@
class Fabric8DummyConfigDataLocationResolver extends KubernetesConfigDataLocationResolver {

@Override
protected void registerBeans(ConfigDataLocationResolverContext resolverContext, ConfigDataLocation location,
Profiles profiles, ConfigDataPropertiesHolder properties, KubernetesNamespaceProvider namespaceProvider) {
protected void registerBeans(ConfigDataLocationResolverContext resolverContext,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we were not using two arguments, so I removed them

ConfigDataPropertiesHolder properties, KubernetesNamespaceProvider namespaceProvider) {
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
public class App {

static void main(String[] args) {
SpringApplication.run(App.class);
SpringApplication.run(App.class, args);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.kubernetes.commons.discovery.DefaultKubernetesServiceInstance;
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryProperties;
import org.springframework.cloud.kubernetes.commons.discovery.KubernetesExternalNameServiceInstance;
import org.springframework.cloud.kubernetes.integration.tests.commons.Images;
import org.springframework.cloud.kubernetes.integration.tests.commons.Phase;
import org.springframework.context.annotation.Bean;
Expand Down Expand Up @@ -133,7 +134,7 @@ private void testCustomAnnotation(List<ServiceInstance> instances) {
}

private void testExternalNameService(DiscoveryClient discoveryClient) {
DefaultKubernetesServiceInstance externalNameService = (DefaultKubernetesServiceInstance) discoveryClient
KubernetesExternalNameServiceInstance externalNameService = (KubernetesExternalNameServiceInstance) discoveryClient
.getInstances("external-name-service")
.get(0);

Expand Down
Loading
Loading