diff --git a/cassandra/cassandra-controller.yaml b/cassandra/cassandra-controller.yaml index b28bd61a..1e10c503 100644 --- a/cassandra/cassandra-controller.yaml +++ b/cassandra/cassandra-controller.yaml @@ -24,7 +24,7 @@ spec: value: 512M - name: HEAP_NEWSIZE value: 100M - image: "kubernetes/cassandra:v2" + image: gcr.io/google_containers/cassandra:v3 name: cassandra ports: - containerPort: 9042 diff --git a/cassandra/cassandra.yaml b/cassandra/cassandra.yaml index c71e4de0..f921db6e 100644 --- a/cassandra/cassandra.yaml +++ b/cassandra/cassandra.yaml @@ -10,8 +10,8 @@ spec: - /run.sh resources: limits: - cpu: "1" - image: kubernetes/cassandra:v2 + cpu: "1" + image: gcr.io/google_containers/cassandra:v3 name: cassandra ports: - name: cql diff --git a/cassandra/image/kubernetes-cassandra.jar b/cassandra/image/kubernetes-cassandra.jar index faf86c69..e48410ac 100644 Binary files a/cassandra/image/kubernetes-cassandra.jar and b/cassandra/image/kubernetes-cassandra.jar differ diff --git a/cassandra/java/pom.xml b/cassandra/java/pom.xml index cf187fa0..4a20149b 100644 --- a/cassandra/java/pom.xml +++ b/cassandra/java/pom.xml @@ -5,6 +5,16 @@ 0.0.2 src + + + maven-compiler-plugin + 2.3.2 + + 1.7 + 1.7 + + + diff --git a/cassandra/java/src/io/k8s/cassandra/KubernetesSeedProvider.java b/cassandra/java/src/io/k8s/cassandra/KubernetesSeedProvider.java index 5ad92b7a..e479b323 100644 --- a/cassandra/java/src/io/k8s/cassandra/KubernetesSeedProvider.java +++ b/cassandra/java/src/io/k8s/cassandra/KubernetesSeedProvider.java @@ -21,9 +21,20 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class KubernetesSeedProvider implements SeedProvider { + + @JsonIgnoreProperties(ignoreUnknown = true) + static class Address { + public String IP; + } + + @JsonIgnoreProperties(ignoreUnknown = true) + static class Subset { + public List
addresses; + } + @JsonIgnoreProperties(ignoreUnknown = true) static class Endpoints { - public String[] endpoints; + public List subsets; } private static String getEnvOrDefault(String var, String def) { @@ -64,20 +75,21 @@ public class KubernetesSeedProvider implements SeedProvider { String host = protocol + "://" + hostName + ":" + hostPort; String serviceName = getEnvOrDefault("CASSANDRA_SERVICE", "cassandra"); - String path = "/api/v1beta3/endpoints/"; + String path = "/api/v1beta3/namespaces/default/endpoints/"; try { - URL url = new URL(host + path + serviceName); - ObjectMapper mapper = new ObjectMapper(); - Endpoints endpoints = mapper.readValue(url, Endpoints.class); - if (endpoints != null) { - // Here is a problem point, endpoints.endpoints can be null in first node cases. - if (endpoints.endpoints != null){ - for (String endpoint : endpoints.endpoints) { - String[] parts = endpoint.split(":"); - list.add(InetAddress.getByName(parts[0])); - } + URL url = new URL(host + path + serviceName); + ObjectMapper mapper = new ObjectMapper(); + Endpoints endpoints = mapper.readValue(url, Endpoints.class); + if (endpoints != null) { + // Here is a problem point, endpoints.subsets can be null in first node cases. + if (endpoints.subsets != null && !endpoints.subsets.isEmpty()){ + for (Subset subset : endpoints.subsets) { + for (Address address : subset.addresses) { + list.add(InetAddress.getByName(address.IP)); + } + } + } } - } } catch (IOException ex) { logger.warn("Request to kubernetes apiserver failed"); }