Skip to content

Commit d1b1dae

Browse files
authored
Update Management API dependencies to address CVEs (#557)
* Update Resteasy and Netty to pull in updated Jackson libraries * Update Docker imgaes to use JDK11 for Management API server process * Update CHANGELOG and add JDK11 note to README
1 parent a72fb25 commit d1b1dae

29 files changed

+174
-152
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Changelog for Management API, new PRs should update the `main / unreleased` sect
1010
```
1111

1212
## unreleased
13+
* [CHANGE] [#556](https://github.com/k8ssandra/management-api-for-apache-cassandra/issues/556) Update Management API dependencies to address CVEs
1314
* [FEATURE] [#551](https://github.com/k8ssandra/management-api-for-apache-cassandra/issues/551) Add Cassandra 5.0.2 to the build matrix
1415
* [FEATURE] [#549](https://github.com/k8ssandra/management-api-for-apache-cassandra/issues/549) Add DSE 6.9.3 to the build matrix
1516
* [ENHANCEMENT] [#552](https://github.com/k8ssandra/management-api-for-apache-cassandra/issues/552) Improve "liveness" probe implementation

README.md

+7
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,13 @@ Cassandra 5.0 images are only RedHat UBI8 based.
9393
- All DSE 6.9.x RedHat UBI 8 based images come with only JDK 11
9494
- HCD images are not built within this repo. Only the Agent for HCD ois maintained within this repo
9595

96+
### Java versions in DOcker images
97+
98+
As of v0.1.88, all images produced from this repo will have Java 11 installed as the
99+
Management API server code must now run with Java 11. For images where the Cassandra/DSE
100+
version runs with Java 8 (see above), Both Java 8 and Java 11 will be available, with
101+
Java 8 being the default and Java 8 used to run the Cassandra/DSE process.
102+
96103
### Docker coordinates for Cassandra OSS images
97104

98105
#### Ubuntu based images (OSS)

cassandra/Dockerfile-3.11

+1-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ RUN set -eux; \
123123
rm -fr /etc/apt/sources.list.d/*; \
124124
rm -rf /var/lib/apt/lists/*; \
125125
apt-get update; \
126-
apt-get install -y --no-install-recommends wget iproute2; \
126+
apt-get install -y --no-install-recommends openjdk-11-jdk wget iproute2; \
127127
rm -rf /var/lib/apt/lists/*
128128

129129
# backwards compat with upstream ENTRYPOINT

cassandra/Dockerfile-3.11.ubi8

+1-1
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ RUN microdnf install --nodocs shadow-utils \
181181
&& useradd -m -d "$CASSANDRA_HOME" -r -g cassandra -G root --uid=999 cassandra \
182182
&& microdnf update && rm -rf /var/cache/yum \
183183
# Install packages needed during install process
184-
&& microdnf install --nodocs java-1.8.0-openjdk-headless tzdata-java python2 python3 zlib findutils which hostname iproute procps util-linux glibc-langpack-en wget tar \
184+
&& microdnf install --nodocs java-1.8.0-openjdk-headless java-11-openjdk-headless tzdata-java python2 python3 zlib findutils which hostname iproute procps util-linux glibc-langpack-en wget tar \
185185
&& microdnf clean all
186186

187187
# Copy trimmed installation

cassandra/scripts/docker-entrypoint.sh

+18-2
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,24 @@ if [ "$1" = 'mgmtapi' ]; then
195195

196196
# use default of 128m heap if env variable not set
197197
: "${MGMT_API_HEAP_SIZE:=128m}"
198-
echo "Running" java ${MGMT_API_JAVA_OPTS} -Xms${MGMT_API_HEAP_SIZE} -Xmx${MGMT_API_HEAP_SIZE} -jar "$MGMT_API_JAR" $MGMT_API_ARGS
199-
java ${MGMT_API_JAVA_OPTS} -Xms${MGMT_API_HEAP_SIZE} -Xmx${MGMT_API_HEAP_SIZE} -jar "$MGMT_API_JAR" $MGMT_API_ARGS
198+
199+
# locate Java 11 for running the server
200+
if [ "$JAVA11_JAVA" = "" ]; then
201+
# use default Java if it reports version 11
202+
DEFAULT_JAVA_VERSION=$(java -version 2>&1|awk -F '"' '/version/ {print $2}')
203+
echo "Default Java version: ${DEFAULT_JAVA_VERSION}"
204+
if [[ $DEFAULT_JAVA_VERSION == 11* ]]; then
205+
# Java version seems to be 11
206+
JAVA11_JAVA=java
207+
else
208+
# find java 11
209+
JAVA11_HOME=$(find /usr/lib/jvm -type d -name "*java-11*")
210+
echo "Found JAVA11 HOME: ${JAVA11_HOME}"
211+
JAVA11_JAVA=${JAVA11_HOME}/bin/java
212+
fi
213+
fi
214+
echo "Running" ${JAVA11_JAVA} ${MGMT_API_JAVA_OPTS} -Xms${MGMT_API_HEAP_SIZE} -Xmx${MGMT_API_HEAP_SIZE} -jar "$MGMT_API_JAR" $MGMT_API_ARGS
215+
${JAVA11_JAVA} ${MGMT_API_JAVA_OPTS} -Xms${MGMT_API_HEAP_SIZE} -Xmx${MGMT_API_HEAP_SIZE} -jar "$MGMT_API_JAR" $MGMT_API_ARGS
200216
fi
201217

202218
exec "$@"

dse/Dockerfile-dse6.8.jdk8

+10-1
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ RUN mkdir -m 775 ${CDC_AGENT_PATH} && \
138138
chmod -R g+w ${CDC_AGENT_PATH}
139139

140140
FROM datastax/${DS_BASE_DEBIAN}:${BASETAG} AS dse
141+
ARG TARGETARCH
141142
ARG DSE_VERSION
142143
ENV DSE_VERSION=${DSE_VERSION}
143144

@@ -156,7 +157,15 @@ ENV MGMT_AGENT_JAR="${MAAC_PATH}/datastax-mgmtapi-agent.jar"
156157
RUN set -x \
157158
# Add DSE user
158159
&& groupadd -r dse --gid=999 \
159-
&& useradd -m -d "$DSE_HOME" -r -g dse -G root --uid=999 dse
160+
&& useradd -m -d "$DSE_HOME" -r -g dse -G root --uid=999 dse \
161+
# Add JDK11 for Management API server
162+
&& rm -fr /etc/apt/sources.list.d/* \
163+
&& rm -rf /var/lib/apt/lists/* \
164+
&& apt-get update \
165+
&& apt-get install -y --no-install-recommends openjdk-11-jdk \
166+
&& rm -rf /var/lib/apt/lists/* \
167+
# JDK8 should be the default for DSE
168+
&& update-java-alternatives -s /usr/lib/jvm/java-1.8.0-openjdk-${TARGETARCH}
160169

161170
COPY --chown=dse:root dse/files /
162171

dse/Dockerfile-dse6.8.ubi8

+3-2
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ RUN mkdir -m 775 $MAAC_PATH \
5858

5959
# Using UBI8 with Python 2 support, eventually we may switch to Python 3
6060
FROM registry.access.redhat.com/ubi${UBI_MAJOR}/ubi-minimal:${UBI_BASETAG} AS dse
61+
ARG TARGETARCH
6162
ARG DSE_VERSION
6263
ENV DSE_VERSION=${DSE_VERSION}
6364

@@ -75,8 +76,8 @@ ENV HOME=$DSE_HOME
7576
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
7677

7778
# Install runtime dependencies and updates
78-
RUN microdnf update && rm -rf /var/cache/yum && \
79-
microdnf install --nodocs -y java-1.8.0-openjdk-headless java-1.8.0-openjdk-devel python2 zlib libaio which findutils hostname iproute shadow-utils procps util-linux glibc-langpack-en wget tar && microdnf clean all
79+
RUN microdnf update && rm -rf /var/cache/yum \
80+
&& microdnf install --nodocs -y java-1.8.0-openjdk-headless java-1.8.0-openjdk-devel java-11-openjdk-headless python2 zlib libaio which findutils hostname iproute shadow-utils procps util-linux glibc-langpack-en wget tar && microdnf clean all
8081

8182
WORKDIR $HOME
8283

dse/files/entrypoint.sh

+17-2
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,23 @@ if [ "$USE_MGMT_API" = "true" ] && [ -d "$MAAC_PATH" ] ; then
182182
# use default of 128m heap if env variable not set
183183
: "${MGMT_API_HEAP_SIZE:=128m}"
184184

185-
echo "Running" java ${MGMT_API_JAVA_OPTS} -Xms${MGMT_API_HEAP_SIZE} -Xmx${MGMT_API_HEAP_SIZE} -jar "$MGMT_API_JAR" $MGMT_API_ARGS
186-
java ${MGMT_API_JAVA_OPTS} -Xms${MGMT_API_HEAP_SIZE} -Xmx${MGMT_API_HEAP_SIZE} -jar "$MGMT_API_JAR" $MGMT_API_ARGS
185+
# locate Java 11 for running the server
186+
if [ "$JAVA11_JAVA" = "" ]; then
187+
# use default Java if it reports version 11
188+
DEFAULT_JAVA_VERSION=$(java -version 2>&1|awk -F '"' '/version/ {print $2}')
189+
echo "Default Java version: ${DEFAULT_JAVA_VERSION}"
190+
if [[ $DEFAULT_JAVA_VERSION == 11* ]]; then
191+
# Java version seems to be 11
192+
JAVA11_JAVA=java
193+
else
194+
# find java 11
195+
JAVA11_HOME=$(find /usr/lib/jvm -type d -name "*java-11*")
196+
echo "Found JAVA11 HOME: ${JAVA11_HOME}"
197+
JAVA11_JAVA=${JAVA11_HOME}/bin/java
198+
fi
199+
fi
200+
echo "Running" ${JAVA11_JAVA} ${MGMT_API_JAVA_OPTS} -Xms${MGMT_API_HEAP_SIZE} -Xmx${MGMT_API_HEAP_SIZE} -jar "$MGMT_API_JAR" $MGMT_API_ARGS
201+
${JAVA11_JAVA} ${MGMT_API_JAVA_OPTS} -Xms${MGMT_API_HEAP_SIZE} -Xmx${MGMT_API_HEAP_SIZE} -jar "$MGMT_API_JAR" $MGMT_API_ARGS
187202
else
188203
echo "Running $@"
189204
exec "$@"

management-api-server/doc/openapi.json

+5-32
Original file line numberDiff line numberDiff line change
@@ -564,10 +564,7 @@
564564
"200" : {
565565
"content" : {
566566
"application/json" : {
567-
"example" : {
568-
"class" : "org.apache.cassandra.locator.SimpleStrategy",
569-
"replication_factor" : "2"
570-
},
567+
"example" : "{\"class\":\"org.apache.cassandra.locator.SimpleStrategy\",\"replication_factor\":\"2\"}",
571568
"schema" : {
572569
"type" : "string"
573570
}
@@ -747,31 +744,7 @@
747744
"200" : {
748745
"content" : {
749746
"application/json" : {
750-
"example" : {
751-
"entity" : false,
752-
"variant" : {
753-
"language" : null,
754-
"mediaType" : {
755-
"type" : "application",
756-
"subtype" : "json",
757-
"parameters" : { },
758-
"wildcardType" : false,
759-
"wildcardSubtype" : false
760-
},
761-
"encoding" : null,
762-
"languageString" : null
763-
},
764-
"annotations" : [ ],
765-
"mediaType" : {
766-
"type" : "application",
767-
"subtype" : "json",
768-
"parameters" : { },
769-
"wildcardType" : false,
770-
"wildcardSubtype" : false
771-
},
772-
"language" : null,
773-
"encoding" : null
774-
},
747+
"example" : "{\"entity\":false,\"variant\":{\"language\":null,\"mediaType\":{\"type\":\"application\",\"subtype\":\"json\",\"parameters\":{},\"wildcardType\":false,\"wildcardSubtype\":false},\"encoding\":null,\"languageString\":null},\"annotations\":[],\"mediaType\":{\"type\":\"application\",\"subtype\":\"json\",\"parameters\":{},\"wildcardType\":false,\"wildcardSubtype\":false},\"language\":null,\"encoding\":null}",
775748
"schema" : {
776749
"type" : "string"
777750
}
@@ -1936,7 +1909,7 @@
19361909
"example" : "keyspace must be specified",
19371910
"schema" : {
19381911
"type" : "string",
1939-
"enum" : [ "OK", "Created", "Accepted", "No Content", "Reset Content", "Partial Content", "Moved Permanently", "Found", "See Other", "Not Modified", "Use Proxy", "Temporary Redirect", "Bad Request", "Unauthorized", "Payment Required", "Forbidden", "Not Found", "Method Not Allowed", "Not Acceptable", "Proxy Authentication Required", "Request Timeout", "Conflict", "Gone", "Length Required", "Precondition Failed", "Request Entity Too Large", "Request-URI Too Long", "Unsupported Media Type", "Requested Range Not Satisfiable", "Expectation Failed", "Precondition Required", "Too Many Requests", "Request Header Fields Too Large", "Internal Server Error", "Not Implemented", "Bad Gateway", "Service Unavailable", "Gateway Timeout", "HTTP Version Not Supported", "Network Authentication Required" ]
1912+
"enum" : [ "OK", "Created", "Accepted", "No Content", "Reset Content", "Partial Content", "Multiple Choices", "Moved Permanently", "Found", "See Other", "Not Modified", "Use Proxy", "Temporary Redirect", "Permanent Redirect", "Bad Request", "Unauthorized", "Payment Required", "Forbidden", "Not Found", "Method Not Allowed", "Not Acceptable", "Proxy Authentication Required", "Request Timeout", "Conflict", "Gone", "Length Required", "Precondition Failed", "Request Entity Too Large", "Request-URI Too Long", "Unsupported Media Type", "Requested Range Not Satisfiable", "Expectation Failed", "Precondition Required", "Too Many Requests", "Request Header Fields Too Large", "Unavailable For Legal Reasons", "Internal Server Error", "Not Implemented", "Bad Gateway", "Service Unavailable", "Gateway Timeout", "HTTP Version Not Supported", "Network Authentication Required" ]
19401913
}
19411914
}
19421915
},
@@ -1948,7 +1921,7 @@
19481921
"example" : "internal error, we did not receive the expected repair ID from Cassandra.",
19491922
"schema" : {
19501923
"type" : "string",
1951-
"enum" : [ "OK", "Created", "Accepted", "No Content", "Reset Content", "Partial Content", "Moved Permanently", "Found", "See Other", "Not Modified", "Use Proxy", "Temporary Redirect", "Bad Request", "Unauthorized", "Payment Required", "Forbidden", "Not Found", "Method Not Allowed", "Not Acceptable", "Proxy Authentication Required", "Request Timeout", "Conflict", "Gone", "Length Required", "Precondition Failed", "Request Entity Too Large", "Request-URI Too Long", "Unsupported Media Type", "Requested Range Not Satisfiable", "Expectation Failed", "Precondition Required", "Too Many Requests", "Request Header Fields Too Large", "Internal Server Error", "Not Implemented", "Bad Gateway", "Service Unavailable", "Gateway Timeout", "HTTP Version Not Supported", "Network Authentication Required" ]
1924+
"enum" : [ "OK", "Created", "Accepted", "No Content", "Reset Content", "Partial Content", "Multiple Choices", "Moved Permanently", "Found", "See Other", "Not Modified", "Use Proxy", "Temporary Redirect", "Permanent Redirect", "Bad Request", "Unauthorized", "Payment Required", "Forbidden", "Not Found", "Method Not Allowed", "Not Acceptable", "Proxy Authentication Required", "Request Timeout", "Conflict", "Gone", "Length Required", "Precondition Failed", "Request Entity Too Large", "Request-URI Too Long", "Unsupported Media Type", "Requested Range Not Satisfiable", "Expectation Failed", "Precondition Required", "Too Many Requests", "Request Header Fields Too Large", "Unavailable For Legal Reasons", "Internal Server Error", "Not Implemented", "Bad Gateway", "Service Unavailable", "Gateway Timeout", "HTTP Version Not Supported", "Network Authentication Required" ]
19521925
}
19531926
}
19541927
},
@@ -2182,7 +2155,7 @@
21822155
"type" : "array",
21832156
"items" : {
21842157
"type" : "string",
2185-
"enum" : [ "ASYNC_SSTABLE_TASKS", "FULL_QUERY_LOGGING", "REBUILD", "ASYNC_UPGRADE_SSTABLE_TASK", "ASYNC_COMPACTION_TASKS", "ASYNC_SCRUB_TASK", "ASYNC_MOVE_TASK", "ASYNC_GC_TASK", "RELOAD_INTERNODE_TRUSTSTORE", "ASYNC_FLUSH_TASK" ]
2158+
"enum" : [ "async_sstable_tasks", "full_query_logging", "rebuild", "async_upgrade_sstable_task", "async_compaction_task", "async_scrub_task", "async_move_task", "async_gc_task", "reload_internode_truststore", "async_flush_task" ]
21862159
}
21872160
},
21882161
"mgmt_version" : {

management-api-server/pom.xml

+11-11
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616
<version>${revision}</version>
1717
<artifactId>datastax-mgmtapi-server</artifactId>
1818
<properties>
19-
<rsapi.version>2.1.1</rsapi.version>
2019
<guava.version>30.1.1-jre</guava.version>
2120
<airline.version>2.7.0</airline.version>
22-
<jaxrs.version>2.1.6</jaxrs.version>
23-
<resteasy.version>4.5.9.Final</resteasy.version>
21+
<jaxrs.version>2.2.19</jaxrs.version>
22+
<resteasy.version>6.2.10.Final</resteasy.version>
2423
<awaitility.version>4.0.3</awaitility.version>
2524
<assertj.version>3.17.2</assertj.version>
26-
<servelet.version>3.1.0</servelet.version>
25+
<servelet.version>6.1.0</servelet.version>
26+
<commons.io.version>2.17.0</commons.io.version>
2727
</properties>
2828
<dependencies>
2929
<dependency>
@@ -47,9 +47,9 @@
4747
<version>${logback.version}</version>
4848
</dependency>
4949
<dependency>
50-
<groupId>javax.ws.rs</groupId>
51-
<artifactId>javax.ws.rs-api</artifactId>
52-
<version>${rsapi.version}</version>
50+
<groupId>commons-io</groupId>
51+
<artifactId>commons-io</artifactId>
52+
<version>${commons.io.version}</version>
5353
</dependency>
5454
<dependency>
5555
<groupId>com.google.guava</groupId>
@@ -63,7 +63,7 @@
6363
</dependency>
6464
<dependency>
6565
<groupId>io.swagger.core.v3</groupId>
66-
<artifactId>swagger-jaxrs2</artifactId>
66+
<artifactId>swagger-jaxrs2-jakarta</artifactId>
6767
<version>${jaxrs.version}</version>
6868
</dependency>
6969
<dependency>
@@ -87,8 +87,8 @@
8787
<version>${driver.version}</version>
8888
</dependency>
8989
<dependency>
90-
<groupId>javax.servlet</groupId>
91-
<artifactId>javax.servlet-api</artifactId>
90+
<groupId>jakarta.servlet</groupId>
91+
<artifactId>jakarta.servlet-api</artifactId>
9292
<version>${servelet.version}</version>
9393
</dependency>
9494
<dependency>
@@ -291,7 +291,7 @@
291291
</plugin>
292292
<plugin>
293293
<groupId>io.swagger.core.v3</groupId>
294-
<artifactId>swagger-maven-plugin</artifactId>
294+
<artifactId>swagger-maven-plugin-jakarta</artifactId>
295295
<version>${jaxrs.version}</version>
296296
<configuration>
297297
<outputFileName>openapi</outputFileName>

management-api-server/src/main/java/com/datastax/mgmtapi/ManagementApplication.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@
1717
import com.google.common.collect.ImmutableSet;
1818
import io.swagger.v3.jaxrs2.SwaggerSerializers;
1919
import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource;
20+
import jakarta.ws.rs.ApplicationPath;
21+
import jakarta.ws.rs.core.Application;
22+
import jakarta.ws.rs.core.Response;
2023
import java.io.File;
2124
import java.util.Collection;
2225
import java.util.Set;
2326
import java.util.concurrent.atomic.AtomicReference;
24-
import javax.ws.rs.ApplicationPath;
25-
import javax.ws.rs.core.Application;
26-
import javax.ws.rs.core.Response;
2727
import org.slf4j.Logger;
2828
import org.slf4j.LoggerFactory;
2929

management-api-server/src/main/java/com/datastax/mgmtapi/resources/AuthResources.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
import io.swagger.v3.oas.annotations.media.ExampleObject;
1313
import io.swagger.v3.oas.annotations.media.Schema;
1414
import io.swagger.v3.oas.annotations.responses.ApiResponse;
15-
import javax.ws.rs.POST;
16-
import javax.ws.rs.Path;
17-
import javax.ws.rs.Produces;
18-
import javax.ws.rs.QueryParam;
19-
import javax.ws.rs.core.MediaType;
20-
import javax.ws.rs.core.Response;
15+
import jakarta.ws.rs.POST;
16+
import jakarta.ws.rs.Path;
17+
import jakarta.ws.rs.Produces;
18+
import jakarta.ws.rs.QueryParam;
19+
import jakarta.ws.rs.core.MediaType;
20+
import jakarta.ws.rs.core.Response;
2121
import org.apache.commons.lang3.StringUtils;
2222

2323
@Path("/api/v0/ops/auth")

management-api-server/src/main/java/com/datastax/mgmtapi/resources/K8OperatorResources.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,17 @@
2222
import io.swagger.v3.oas.annotations.media.ExampleObject;
2323
import io.swagger.v3.oas.annotations.media.Schema;
2424
import io.swagger.v3.oas.annotations.responses.ApiResponse;
25+
import jakarta.ws.rs.GET;
26+
import jakarta.ws.rs.POST;
27+
import jakarta.ws.rs.Path;
28+
import jakarta.ws.rs.Produces;
29+
import jakarta.ws.rs.QueryParam;
30+
import jakarta.ws.rs.core.MediaType;
31+
import jakarta.ws.rs.core.Response;
2532
import java.io.IOException;
2633
import java.util.List;
2734
import java.util.Map;
2835
import java.util.Optional;
29-
import javax.ws.rs.GET;
30-
import javax.ws.rs.POST;
31-
import javax.ws.rs.Path;
32-
import javax.ws.rs.Produces;
33-
import javax.ws.rs.QueryParam;
34-
import javax.ws.rs.core.MediaType;
35-
import javax.ws.rs.core.Response;
3636
import org.slf4j.Logger;
3737
import org.slf4j.LoggerFactory;
3838

management-api-server/src/main/java/com/datastax/mgmtapi/resources/KeyspaceOpsResources.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,18 @@
2020
import io.swagger.v3.oas.annotations.media.ExampleObject;
2121
import io.swagger.v3.oas.annotations.media.Schema;
2222
import io.swagger.v3.oas.annotations.responses.ApiResponse;
23+
import jakarta.ws.rs.Consumes;
24+
import jakarta.ws.rs.GET;
25+
import jakarta.ws.rs.POST;
26+
import jakarta.ws.rs.Path;
27+
import jakarta.ws.rs.Produces;
28+
import jakarta.ws.rs.QueryParam;
29+
import jakarta.ws.rs.core.MediaType;
30+
import jakarta.ws.rs.core.Response;
2331
import java.util.ArrayList;
2432
import java.util.List;
2533
import java.util.Map;
2634
import java.util.stream.Collectors;
27-
import javax.ws.rs.Consumes;
28-
import javax.ws.rs.GET;
29-
import javax.ws.rs.POST;
30-
import javax.ws.rs.Path;
31-
import javax.ws.rs.Produces;
32-
import javax.ws.rs.QueryParam;
33-
import javax.ws.rs.core.MediaType;
34-
import javax.ws.rs.core.Response;
3535
import org.apache.commons.collections4.CollectionUtils;
3636
import org.apache.commons.lang3.StringUtils;
3737
import org.apache.http.HttpStatus;

management-api-server/src/main/java/com/datastax/mgmtapi/resources/LifecycleResources.java

+9-9
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,15 @@
2828
import io.swagger.v3.oas.annotations.media.ExampleObject;
2929
import io.swagger.v3.oas.annotations.media.Schema;
3030
import io.swagger.v3.oas.annotations.responses.ApiResponse;
31+
import jakarta.ws.rs.Consumes;
32+
import jakarta.ws.rs.GET;
33+
import jakarta.ws.rs.POST;
34+
import jakarta.ws.rs.Path;
35+
import jakarta.ws.rs.Produces;
36+
import jakarta.ws.rs.QueryParam;
37+
import jakarta.ws.rs.client.Entity;
38+
import jakarta.ws.rs.core.MediaType;
39+
import jakarta.ws.rs.core.Response;
3140
import java.io.File;
3241
import java.io.IOException;
3342
import java.nio.file.Paths;
@@ -38,15 +47,6 @@
3847
import java.util.Optional;
3948
import java.util.concurrent.TimeUnit;
4049
import java.util.stream.Collectors;
41-
import javax.ws.rs.Consumes;
42-
import javax.ws.rs.GET;
43-
import javax.ws.rs.POST;
44-
import javax.ws.rs.Path;
45-
import javax.ws.rs.Produces;
46-
import javax.ws.rs.QueryParam;
47-
import javax.ws.rs.client.Entity;
48-
import javax.ws.rs.core.MediaType;
49-
import javax.ws.rs.core.Response;
5050
import org.apache.commons.io.FileUtils;
5151
import org.apache.commons.lang3.StringUtils;
5252
import org.apache.http.HttpStatus;

0 commit comments

Comments
 (0)