From aa2c12462f34f1f8f07f6050ecca9380870dec04 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Wed, 25 Apr 2018 17:17:06 -0400 Subject: [PATCH] Reinstates ribbon support. Removes archaius, zipkin and hystrix modules. --- pom.xml | 24 +-- spring-cloud-kubernetes-archaius/.jdk8 | 0 spring-cloud-kubernetes-archaius/pom.xml | 55 ------- .../archaius/ArchaiusConfigMapSource.java | 51 ------- .../ArchaiusConfigMapSourceConfiguration.java | 141 ------------------ .../ArchaiusConfigMapSourceRegistar.java | 91 ----------- spring-cloud-kubernetes-dependencies/pom.xml | 51 ++----- .../cloud/kubernetes/examples/App.java | 3 +- spring-cloud-kubernetes-hystrix/pom.xml | 57 ------- .../HystrixFilterAutoConfiguration.java | 35 ----- .../HystrixRequestContextServletFilter.java | 41 ----- .../main/resources/META-INF/spring.factories | 2 - spring-cloud-kubernetes-ribbon/pom.xml | 52 +------ spring-cloud-kubernetes-zipkin/.jdk8 | 0 spring-cloud-kubernetes-zipkin/pom.xml | 67 --------- .../KubernetesZipkinDiscoveryProperties.java | 53 ------- .../ZipkinKubernetesAutoConfiguration.java | 97 ------------ .../main/resources/META-INF/spring.factories | 2 - spring-cloud-starter-kubernetes-all/pom.xml | 29 ---- .../pom.xml | 4 +- .../pom.xml | 66 -------- 21 files changed, 33 insertions(+), 888 deletions(-) delete mode 100644 spring-cloud-kubernetes-archaius/.jdk8 delete mode 100644 spring-cloud-kubernetes-archaius/pom.xml delete mode 100644 spring-cloud-kubernetes-archaius/src/main/java/org/springframework/cloud/kubernetes/archaius/ArchaiusConfigMapSource.java delete mode 100644 spring-cloud-kubernetes-archaius/src/main/java/org/springframework/cloud/kubernetes/archaius/ArchaiusConfigMapSourceConfiguration.java delete mode 100644 spring-cloud-kubernetes-archaius/src/main/java/org/springframework/cloud/kubernetes/archaius/ArchaiusConfigMapSourceRegistar.java delete mode 100644 spring-cloud-kubernetes-hystrix/pom.xml delete mode 100644 spring-cloud-kubernetes-hystrix/src/main/java/org/springframework/cloud/kubernetes/hystrix/HystrixFilterAutoConfiguration.java delete mode 100644 spring-cloud-kubernetes-hystrix/src/main/java/org/springframework/cloud/kubernetes/hystrix/HystrixRequestContextServletFilter.java delete mode 100644 spring-cloud-kubernetes-hystrix/src/main/resources/META-INF/spring.factories delete mode 100644 spring-cloud-kubernetes-zipkin/.jdk8 delete mode 100644 spring-cloud-kubernetes-zipkin/pom.xml delete mode 100644 spring-cloud-kubernetes-zipkin/src/main/java/org/springframework/cloud/kubernetes/zipkin/KubernetesZipkinDiscoveryProperties.java delete mode 100644 spring-cloud-kubernetes-zipkin/src/main/java/org/springframework/cloud/kubernetes/zipkin/ZipkinKubernetesAutoConfiguration.java delete mode 100644 spring-cloud-kubernetes-zipkin/src/main/resources/META-INF/spring.factories rename {spring-cloud-starter-kubernetes-netflix => spring-cloud-starter-kubernetes-ribbon}/pom.xml (92%) delete mode 100644 spring-cloud-starter-kubernetes-zipkin/pom.xml diff --git a/pom.xml b/pom.xml index 27e2bfd6..c7104a15 100644 --- a/pom.xml +++ b/pom.xml @@ -59,9 +59,8 @@ - 2.0.0.BUILD-SNAPSHOT + 2.0.0.BUILD-SNAPSHOT 3.5 @@ -80,17 +79,12 @@ spring-cloud-kubernetes-core spring-cloud-kubernetes-config spring-cloud-kubernetes-discovery + spring-cloud-kubernetes-ribbon spring-cloud-starter-kubernetes spring-cloud-starter-kubernetes-config - spring-cloud-kubernetes-examples - - + spring-cloud-kubernetes-examples @@ -101,6 +95,7 @@ + org.springframework.cloud spring-cloud-kubernetes-dependencies @@ -117,6 +112,14 @@ import + + org.springframework.cloud + spring-cloud-netflix-dependencies + ${spring-cloud-netflix.version} + pom + import + + org.codehaus.groovy groovy-all @@ -134,6 +137,7 @@ org.spockframework spock-spring ${spock-spring.version} + test diff --git a/spring-cloud-kubernetes-archaius/.jdk8 b/spring-cloud-kubernetes-archaius/.jdk8 deleted file mode 100644 index e69de29b..00000000 diff --git a/spring-cloud-kubernetes-archaius/pom.xml b/spring-cloud-kubernetes-archaius/pom.xml deleted file mode 100644 index 942d9d4c..00000000 --- a/spring-cloud-kubernetes-archaius/pom.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - spring-cloud-kubernetes - org.springframework.cloud - 0.2.1.BUILD-SNAPSHOT - - 4.0.0 - - org.springframework.cloud - spring-cloud-kubernetes-archaius - Spring Cloud Kubernetes :: Archaius - - - - - io.fabric8 - kubernetes-client - - - - org.springframework.cloud - spring-cloud-starter-archaius - true - - - - org.projectlombok - lombok - provided - true - - - - - diff --git a/spring-cloud-kubernetes-archaius/src/main/java/org/springframework/cloud/kubernetes/archaius/ArchaiusConfigMapSource.java b/spring-cloud-kubernetes-archaius/src/main/java/org/springframework/cloud/kubernetes/archaius/ArchaiusConfigMapSource.java deleted file mode 100644 index 9e57a84b..00000000 --- a/spring-cloud-kubernetes-archaius/src/main/java/org/springframework/cloud/kubernetes/archaius/ArchaiusConfigMapSource.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2016 to the original authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.springframework.cloud.kubernetes.archaius; - -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Configuration -@Import(ArchaiusConfigMapSourceRegistar.class) -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface ArchaiusConfigMapSource { - - - /** - * Synonym for name (the name of the ConfigMap). - */ - String value() default ""; - - /** - * The name of the {@link io.fabric8.kubernetes.api.model.ConfigMap}. - */ - String name() default ""; - - /** - * The namespace of the {@link io.fabric8.kubernetes.api.model.ConfigMap}. - */ - String namespace() default ""; -} diff --git a/spring-cloud-kubernetes-archaius/src/main/java/org/springframework/cloud/kubernetes/archaius/ArchaiusConfigMapSourceConfiguration.java b/spring-cloud-kubernetes-archaius/src/main/java/org/springframework/cloud/kubernetes/archaius/ArchaiusConfigMapSourceConfiguration.java deleted file mode 100644 index d29607b5..00000000 --- a/spring-cloud-kubernetes-archaius/src/main/java/org/springframework/cloud/kubernetes/archaius/ArchaiusConfigMapSourceConfiguration.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (C) 2016 to the original authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.springframework.cloud.kubernetes.archaius; - -import com.netflix.config.WatchedConfigurationSource; -import com.netflix.config.WatchedUpdateListener; -import com.netflix.config.WatchedUpdateResult; -import io.fabric8.kubernetes.api.model.ConfigMap; -import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.kubernetes.client.KubernetesClientException; -import io.fabric8.kubernetes.client.Watch; -import io.fabric8.kubernetes.client.Watcher; - -import org.springframework.beans.factory.DisposableBean; -import org.springframework.beans.factory.InitializingBean; -import org.springframework.util.StringUtils; - -import java.io.Closeable; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicReference; -import java.util.stream.Collectors; - -public class ArchaiusConfigMapSourceConfiguration implements InitializingBean, DisposableBean, WatchedConfigurationSource, Closeable { - - private final KubernetesClient client; - private final String name; - private final String namespace; - private final List listeners = new ArrayList<>(); - - private final AtomicBoolean started = new AtomicBoolean(false); - private final ExecutorService executorService = Executors.newSingleThreadExecutor(); - private AtomicReference> currentData = new AtomicReference<>(); - private Watch watch; - - private volatile Watcher watcher = new Watcher() { - @Override - public void eventReceived(Action action, ConfigMap configMap) { - offer(WatchedUpdateResult.createFull(asObjectMap(configMap.getData()))); - } - - @Override - public void onClose(KubernetesClientException e) { - - } - }; - - public ArchaiusConfigMapSourceConfiguration(KubernetesClient client, String name, String namespace) { - this.client = client; - this.name = name; - this.namespace = namespace; - } - - - public void start() { - ConfigMap map = StringUtils.isEmpty(namespace) - ? client.configMaps().withName(name).get() - : client.configMaps().inNamespace(namespace).withName(name).get(); - - if (map != null) { - currentData.set(asObjectMap(map.getData())); - } - watch = StringUtils.isEmpty(namespace) - ? client.configMaps().withName(name).watch(watcher) - : client.configMaps().inNamespace(namespace).withName(name).watch(watcher); - started.set(true); - } - - @Override - public void close() throws IOException { - started.set(false); - if (watch != null) { - watch.close(); - } - executorService.shutdown(); - } - - @Override - public synchronized void addUpdateListener(WatchedUpdateListener watchedUpdateListener) { - listeners.add(watchedUpdateListener); - } - - @Override - public synchronized void removeUpdateListener(WatchedUpdateListener watchedUpdateListener) { - listeners.remove(watchedUpdateListener); - } - - @Override - public Map getCurrentData() throws Exception { - return currentData.get(); - } - - private void offer(WatchedUpdateResult event) { - submit(() -> { - listeners.stream().forEach(l -> l.updateConfiguration(event)); - currentData.set(event.getComplete()); - }); - } - - private synchronized void submit(final Runnable command) { - if (started.get()) { - executorService.submit(command); - } - } - - private static Map asObjectMap(Map source) { - return source.entrySet() - .stream() - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - } - - @Override - public void destroy() throws Exception { - close(); - } - - @Override - public void afterPropertiesSet() throws Exception { - start(); - } -} diff --git a/spring-cloud-kubernetes-archaius/src/main/java/org/springframework/cloud/kubernetes/archaius/ArchaiusConfigMapSourceRegistar.java b/spring-cloud-kubernetes-archaius/src/main/java/org/springframework/cloud/kubernetes/archaius/ArchaiusConfigMapSourceRegistar.java deleted file mode 100644 index 16f474cf..00000000 --- a/spring-cloud-kubernetes-archaius/src/main/java/org/springframework/cloud/kubernetes/archaius/ArchaiusConfigMapSourceRegistar.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 2016 to the original authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.springframework.cloud.kubernetes.archaius; - -import com.netflix.config.DynamicWatchedConfiguration; -import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; -import org.springframework.core.type.AnnotationMetadata; -import org.springframework.util.StringUtils; - -import java.util.Map; - -class ArchaiusConfigMapSourceRegistar implements ImportBeanDefinitionRegistrar { - - private static final String KUBERNETES_CLIENT_REF = "kubernetesClient"; - - private static final String VALUE_ATTR = "value"; - private static final String NAME_ATTR = "name"; - private static final String NAMESPACE_ATTR = "namespace"; - - private static final String CONFIG_MAP_SOURCE_SUFFIX = ".ConfigMapSourceConfiguration"; - private static final String DYNAMIC_WATCH_CONFIG_SUFFIX = ".DynamicWatchedConfiguration"; - - @Override - public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) { - - Map source = metadata.getAnnotationAttributes(ArchaiusConfigMapSource.class.getName(), true); - String name = getSourceName(source); - String namespace = getSourceNamespace(source); - if (name != null) { - registerSourceConfiguration(registry, name, namespace); - } - } - - private String getSourceName(Map source) { - if (source == null) { - return null; - } - String value = (String) source.get(VALUE_ATTR); - if (!StringUtils.hasText(value)) { - value = (String) source.get(NAME_ATTR); - } - if (StringUtils.hasText(value)) { - return value; - } - throw new IllegalStateException( - "Either 'name' or 'value' must be provided in @ConfigMapSource"); - } - - private String getSourceNamespace(Map source) { - if (source == null) { - return null; - } - String namespace = (String) source.get(NAMESPACE_ATTR); - if (StringUtils.hasText(namespace)) { - return namespace; - } - return null; - } - - private void registerSourceConfiguration(BeanDefinitionRegistry registry, Object name, Object namespace) { - BeanDefinitionBuilder configMapSourceConfigBuilder = BeanDefinitionBuilder.genericBeanDefinition(ArchaiusConfigMapSourceConfiguration.class); - BeanDefinitionBuilder dynamicWatchedConfigBuilder = BeanDefinitionBuilder.genericBeanDefinition(DynamicWatchedConfiguration.class); - - configMapSourceConfigBuilder.addConstructorArgReference(KUBERNETES_CLIENT_REF); - configMapSourceConfigBuilder.addConstructorArgValue(name); - configMapSourceConfigBuilder.addConstructorArgValue(namespace); - String configMapSourceConfigName = name + CONFIG_MAP_SOURCE_SUFFIX; - registry.registerBeanDefinition(configMapSourceConfigName, configMapSourceConfigBuilder.getBeanDefinition()); - - String dynamicWatchedConfigName = name + DYNAMIC_WATCH_CONFIG_SUFFIX; - dynamicWatchedConfigBuilder.addConstructorArgReference(configMapSourceConfigName); - registry.registerBeanDefinition(dynamicWatchedConfigName, dynamicWatchedConfigBuilder.getBeanDefinition()); - } -} diff --git a/spring-cloud-kubernetes-dependencies/pom.xml b/spring-cloud-kubernetes-dependencies/pom.xml index 751dc34b..a8887aba 100644 --- a/spring-cloud-kubernetes-dependencies/pom.xml +++ b/spring-cloud-kubernetes-dependencies/pom.xml @@ -16,14 +16,14 @@ 1.4.0.Final 1.15.2 - 3.1.8 + 3.1.10 0.1.0 io.fabric8 - kubernetes-client-bom-with-deps + kubernetes-client-bom ${kubernetes-client.version} pom import @@ -48,17 +48,6 @@ ${project.version} - - org.springframework.cloud @@ -103,6 +68,18 @@ ${project.version} + + org.springframework.cloud + spring-cloud-starter-kubernetes-ribbon + ${project.version} + + + + org.springframework.cloud + spring-cloud-starter-kubernetes-all + ${project.version} + + org.jboss.arquillian.junit diff --git a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/main/java/org/springframework/cloud/kubernetes/examples/App.java b/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/main/java/org/springframework/cloud/kubernetes/examples/App.java index 4fa2c3a6..70d399d9 100644 --- a/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/main/java/org/springframework/cloud/kubernetes/examples/App.java +++ b/spring-cloud-kubernetes-examples/kubernetes-hello-world-example/src/main/java/org/springframework/cloud/kubernetes/examples/App.java @@ -28,7 +28,6 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; public class App { public static void main(String[] args) { - SpringApplication.run(App.class, - args); + SpringApplication.run(App.class, args); } } diff --git a/spring-cloud-kubernetes-hystrix/pom.xml b/spring-cloud-kubernetes-hystrix/pom.xml deleted file mode 100644 index 41dd2e53..00000000 --- a/spring-cloud-kubernetes-hystrix/pom.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - spring-cloud-kubernetes - org.springframework.cloud - 0.2.1.BUILD-SNAPSHOT - - 4.0.0 - - org.springframework.cloud - spring-cloud-kubernetes-hystrix - Spring Cloud Kubernetes :: Hystrix - - - - org.springframework.boot - spring-boot-starter-web - true - - - com.netflix.hystrix - hystrix-core - true - - - com.netflix.hystrix - hystrix-javanica - true - - - - org.springframework.cloud - spring-cloud-starter - true - - - - diff --git a/spring-cloud-kubernetes-hystrix/src/main/java/org/springframework/cloud/kubernetes/hystrix/HystrixFilterAutoConfiguration.java b/spring-cloud-kubernetes-hystrix/src/main/java/org/springframework/cloud/kubernetes/hystrix/HystrixFilterAutoConfiguration.java deleted file mode 100644 index cd2b7d86..00000000 --- a/spring-cloud-kubernetes-hystrix/src/main/java/org/springframework/cloud/kubernetes/hystrix/HystrixFilterAutoConfiguration.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2016 to the original authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.springframework.cloud.kubernetes.hystrix; - -import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -@ConditionalOnProperty(value = "spring.sleuth.hystrix.strategy.enabled", matchIfMissing = true) -@ConditionalOnClass(HystrixCommand.class) -public class HystrixFilterAutoConfiguration { - - @Bean - HystrixRequestContextServletFilter hystrixRequestContextServletFilter() { - return new HystrixRequestContextServletFilter(); - } -} diff --git a/spring-cloud-kubernetes-hystrix/src/main/java/org/springframework/cloud/kubernetes/hystrix/HystrixRequestContextServletFilter.java b/spring-cloud-kubernetes-hystrix/src/main/java/org/springframework/cloud/kubernetes/hystrix/HystrixRequestContextServletFilter.java deleted file mode 100644 index 102790ce..00000000 --- a/spring-cloud-kubernetes-hystrix/src/main/java/org/springframework/cloud/kubernetes/hystrix/HystrixRequestContextServletFilter.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2016 to the original authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.springframework.cloud.kubernetes.hystrix; - -import com.netflix.hystrix.strategy.concurrency.HystrixRequestContext; -import org.springframework.web.filter.OncePerRequestFilter; - -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -public class HystrixRequestContextServletFilter extends OncePerRequestFilter { - - @Override - protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { - HystrixRequestContext context = HystrixRequestContext.initializeContext(); - try { - chain.doFilter(request, response); - } finally { - context.shutdown(); - } - } - -} diff --git a/spring-cloud-kubernetes-hystrix/src/main/resources/META-INF/spring.factories b/spring-cloud-kubernetes-hystrix/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 831784ad..00000000 --- a/spring-cloud-kubernetes-hystrix/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -org.springframework.cloud.kubernetes.hystrix.HystrixFilterAutoConfiguration diff --git a/spring-cloud-kubernetes-ribbon/pom.xml b/spring-cloud-kubernetes-ribbon/pom.xml index 365ffa97..a220d14d 100644 --- a/spring-cloud-kubernetes-ribbon/pom.xml +++ b/spring-cloud-kubernetes-ribbon/pom.xml @@ -44,61 +44,13 @@ org.springframework.boot - spring-boot-autoconfigure + spring-boot-starter-web true org.springframework.cloud - spring-cloud-commons - true - - - - org.springframework.cloud - spring-cloud-context - true - - - - org.springframework.cloud - spring-cloud-netflix-core - true - - - - org.springframework.boot - spring-boot-starter-logging - true - - - - com.netflix.archaius - archaius-core - true - - - - com.netflix.ribbon - ribbon - true - - - - com.netflix.ribbon - ribbon-core - true - - - - com.netflix.ribbon - ribbon-httpclient - true - - - - com.netflix.ribbon - ribbon-loadbalancer + spring-cloud-starter-netflix-ribbon true diff --git a/spring-cloud-kubernetes-zipkin/.jdk8 b/spring-cloud-kubernetes-zipkin/.jdk8 deleted file mode 100644 index e69de29b..00000000 diff --git a/spring-cloud-kubernetes-zipkin/pom.xml b/spring-cloud-kubernetes-zipkin/pom.xml deleted file mode 100644 index 85b0e94d..00000000 --- a/spring-cloud-kubernetes-zipkin/pom.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - spring-cloud-kubernetes - org.springframework.cloud - 0.2.1.BUILD-SNAPSHOT - - 4.0.0 - - org.springframework.cloud - spring-cloud-kubernetes-zipkin - Spring Cloud Kubernetes :: Zipkin - - - - - org.springframework.cloud - spring-cloud-kubernetes-discovery - ${project.version} - - - - org.springframework.boot - spring-boot-autoconfigure - true - - - - org.springframework.cloud - spring-cloud-commons - true - - - - org.springframework.cloud - spring-cloud-context - true - - - - org.springframework.cloud - spring-cloud-sleuth-zipkin - true - - - - - diff --git a/spring-cloud-kubernetes-zipkin/src/main/java/org/springframework/cloud/kubernetes/zipkin/KubernetesZipkinDiscoveryProperties.java b/spring-cloud-kubernetes-zipkin/src/main/java/org/springframework/cloud/kubernetes/zipkin/KubernetesZipkinDiscoveryProperties.java deleted file mode 100644 index 43e6d17e..00000000 --- a/spring-cloud-kubernetes-zipkin/src/main/java/org/springframework/cloud/kubernetes/zipkin/KubernetesZipkinDiscoveryProperties.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2016 to the original authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.springframework.cloud.kubernetes.zipkin; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -@ConfigurationProperties("spring.cloud.kubernetes.zipkin.discovery") -public class KubernetesZipkinDiscoveryProperties { - - private boolean enabled = true; - private String serviceName = "zipkin"; - private String serviceNamespace; - - - public boolean isEnabled() { - return enabled; - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public String getServiceName() { - return serviceName; - } - - public void setServiceName(String serviceName) { - this.serviceName = serviceName; - } - - public String getServiceNamespace() { - return serviceNamespace; - } - - public void setServiceNamespace(String serviceNamespace) { - this.serviceNamespace = serviceNamespace; - } -} diff --git a/spring-cloud-kubernetes-zipkin/src/main/java/org/springframework/cloud/kubernetes/zipkin/ZipkinKubernetesAutoConfiguration.java b/spring-cloud-kubernetes-zipkin/src/main/java/org/springframework/cloud/kubernetes/zipkin/ZipkinKubernetesAutoConfiguration.java deleted file mode 100644 index 645ccfed..00000000 --- a/spring-cloud-kubernetes-zipkin/src/main/java/org/springframework/cloud/kubernetes/zipkin/ZipkinKubernetesAutoConfiguration.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (C) 2016 to the original authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.springframework.cloud.kubernetes.zipkin; - -import io.fabric8.kubernetes.api.model.Endpoints; -import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.kubernetes.client.utils.Utils; -import org.springframework.cloud.kubernetes.discovery.KubernetesServiceInstance; -import org.springframework.boot.autoconfigure.AutoConfigureBefore; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.cloud.client.ServiceInstance; -import org.springframework.cloud.sleuth.metric.SpanMetricReporter; -import org.springframework.cloud.sleuth.zipkin.DefaultZipkinRestTemplateCustomizer; -import org.springframework.cloud.sleuth.zipkin.HttpZipkinSpanReporter; -import org.springframework.cloud.sleuth.zipkin.ZipkinAutoConfiguration; -import org.springframework.cloud.sleuth.zipkin.ZipkinProperties; -import org.springframework.cloud.sleuth.zipkin.ZipkinSpanReporter; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.util.Assert; -import org.springframework.web.client.RestTemplate; -import zipkin.Span; - -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -@Configuration -@EnableConfigurationProperties(KubernetesZipkinDiscoveryProperties.class) -@ConditionalOnProperty(value = "spring.cloud.kubernetes.zipkin.discovery.enabled", matchIfMissing = true) -@AutoConfigureBefore(ZipkinAutoConfiguration.class) -public class ZipkinKubernetesAutoConfiguration { - - - @Bean - public ZipkinSpanReporter reporter(KubernetesClient client, KubernetesZipkinDiscoveryProperties discoveryProperties, SpanMetricReporter spanMetricReporter, ZipkinProperties zipkin) { - String serviceName = discoveryProperties.getServiceName(); - String serviceNamespace = Utils.isNotNullOrEmpty(discoveryProperties.getServiceNamespace()) ? discoveryProperties.getServiceNamespace() : client.getNamespace(); - - List services = getInstances(client, serviceName, serviceNamespace); - String serviceUrl = services.stream() - .findFirst() - .map(s -> s.getUri().toString()) - .orElse(null); - - return serviceUrl == null || serviceUrl.isEmpty() - ? new NullZipkinSpanReporter() - : new HttpZipkinSpanReporter(restTemplateWithCompression(), serviceUrl, zipkin.getFlushInterval(), spanMetricReporter); - } - - private static List getInstances(KubernetesClient client, String name, String namespace) { - Assert.notNull(name, "[Assertion failed] - the service name must not be null"); - - return Optional.ofNullable(client.endpoints().inNamespace(namespace).withName(name).get()) - .orElse(new Endpoints()) - .getSubsets() - .stream() - .flatMap(s -> s.getAddresses().stream().map(a -> (ServiceInstance) new KubernetesServiceInstance(name, a ,s.getPorts().stream().findFirst().orElseThrow(IllegalStateException::new), false))) - .collect(Collectors.toList()); - } - - static final class NullZipkinSpanReporter implements ZipkinSpanReporter { - - @Override - public void report(Span span) { - - } - } - - private RestTemplate restTemplateWithCompression() { - ZipkinProperties zipkinProperties = new ZipkinProperties(); - zipkinProperties.getCompression().setEnabled(true); - return restTemplate(zipkinProperties); - } - - private RestTemplate restTemplate(ZipkinProperties zipkinProperties) { - RestTemplate restTemplate = new RestTemplate(); - new DefaultZipkinRestTemplateCustomizer(zipkinProperties).customize(restTemplate); - return restTemplate; - } -} diff --git a/spring-cloud-kubernetes-zipkin/src/main/resources/META-INF/spring.factories b/spring-cloud-kubernetes-zipkin/src/main/resources/META-INF/spring.factories deleted file mode 100644 index aceffa6e..00000000 --- a/spring-cloud-kubernetes-zipkin/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -org.springframework.cloud.kubernetes.zipkin.ZipkinKubernetesAutoConfiguration diff --git a/spring-cloud-starter-kubernetes-all/pom.xml b/spring-cloud-starter-kubernetes-all/pom.xml index 25403c15..41b90c89 100644 --- a/spring-cloud-starter-kubernetes-all/pom.xml +++ b/spring-cloud-starter-kubernetes-all/pom.xml @@ -46,40 +46,11 @@ spring-cloud-kubernetes-discovery - - org.springframework.cloud - spring-cloud-kubernetes-archaius - - org.springframework.cloud spring-cloud-kubernetes-ribbon - - org.springframework.cloud - spring-cloud-kubernetes-hystrix - - - - org.springframework.cloud - spring-cloud-kubernetes-zipkin - - - - org.springframework.cloud - spring-cloud-sleuth-zipkin - - - - org.aspectj - aspectjweaver - - - - org.aspectj - aspectjrt - diff --git a/spring-cloud-starter-kubernetes-netflix/pom.xml b/spring-cloud-starter-kubernetes-ribbon/pom.xml similarity index 92% rename from spring-cloud-starter-kubernetes-netflix/pom.xml rename to spring-cloud-starter-kubernetes-ribbon/pom.xml index 2e9a28dc..19b77784 100644 --- a/spring-cloud-starter-kubernetes-netflix/pom.xml +++ b/spring-cloud-starter-kubernetes-ribbon/pom.xml @@ -27,8 +27,8 @@ 4.0.0 org.springframework.cloud - spring-cloud-starter-kubernetes-netflix - Spring Cloud Kubernetes :: Starter :: Netflix + spring-cloud-starter-kubernetes-ribbon + Spring Cloud Kubernetes :: Starter :: Ribbon diff --git a/spring-cloud-starter-kubernetes-zipkin/pom.xml b/spring-cloud-starter-kubernetes-zipkin/pom.xml deleted file mode 100644 index 4d2984a5..00000000 --- a/spring-cloud-starter-kubernetes-zipkin/pom.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - spring-cloud-kubernetes - org.springframework.cloud - 0.2.1.BUILD-SNAPSHOT - - 4.0.0 - - org.springframework.cloud - spring-cloud-starter-kubernetes-zipkin - Spring Cloud Kubernetes :: Starter :: Zipkin - - - - org.springframework.cloud - spring-cloud-kubernetes-core - - - - org.springframework.cloud - spring-cloud-kubernetes-discovery - - - - org.springframework.cloud - spring-cloud-kubernetes-zipkin - - - - org.springframework.cloud - spring-cloud-sleuth-zipkin - - - - org.aspectj - aspectjweaver - - - - org.aspectj - aspectjrt - - - - -