Support new CSP auth method for Wavefront
Closes gh-37165
This commit is contained in:
parent
0a16ec17e9
commit
fbec06a134
|
@ -16,11 +16,13 @@
|
||||||
|
|
||||||
package org.springframework.boot.actuate.autoconfigure.metrics.export.wavefront;
|
package org.springframework.boot.actuate.autoconfigure.metrics.export.wavefront;
|
||||||
|
|
||||||
|
import com.wavefront.sdk.common.clients.service.token.TokenService.Type;
|
||||||
import io.micrometer.wavefront.WavefrontConfig;
|
import io.micrometer.wavefront.WavefrontConfig;
|
||||||
|
|
||||||
import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PushRegistryPropertiesConfigAdapter;
|
import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PushRegistryPropertiesConfigAdapter;
|
||||||
import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties;
|
import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties;
|
||||||
import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties.Metrics.Export;
|
import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties.Metrics.Export;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties.TokenType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adapter to convert {@link WavefrontProperties} to a {@link WavefrontConfig}.
|
* Adapter to convert {@link WavefrontProperties} to a {@link WavefrontConfig}.
|
||||||
|
@ -84,4 +86,18 @@ public class WavefrontPropertiesConfigAdapter
|
||||||
return get(Export::isReportDayDistribution, WavefrontConfig.super::reportDayDistribution);
|
return get(Export::isReportDayDistribution, WavefrontConfig.super::reportDayDistribution);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Type apiTokenType() {
|
||||||
|
TokenType apiTokenType = this.properties.getApiTokenType();
|
||||||
|
if (apiTokenType == null) {
|
||||||
|
return WavefrontConfig.super.apiTokenType();
|
||||||
|
}
|
||||||
|
return switch (apiTokenType) {
|
||||||
|
case NO_TOKEN -> Type.NO_TOKEN;
|
||||||
|
case WAVEFRONT_API_TOKEN -> Type.WAVEFRONT_API_TOKEN;
|
||||||
|
case CSP_API_TOKEN -> Type.CSP_API_TOKEN;
|
||||||
|
case CSP_CLIENT_CREDENTIALS -> Type.CSP_CLIENT_CREDENTIALS;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,6 +57,11 @@ public class WavefrontProperties {
|
||||||
*/
|
*/
|
||||||
private String apiToken;
|
private String apiToken;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Type of the API token.
|
||||||
|
*/
|
||||||
|
private TokenType apiTokenType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Application configuration.
|
* Application configuration.
|
||||||
*/
|
*/
|
||||||
|
@ -167,6 +172,14 @@ public class WavefrontProperties {
|
||||||
this.traceDerivedCustomTagKeys = traceDerivedCustomTagKeys;
|
this.traceDerivedCustomTagKeys = traceDerivedCustomTagKeys;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TokenType getApiTokenType() {
|
||||||
|
return this.apiTokenType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setApiTokenType(TokenType apiTokenType) {
|
||||||
|
this.apiTokenType = apiTokenType;
|
||||||
|
}
|
||||||
|
|
||||||
public static class Application {
|
public static class Application {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -385,4 +398,30 @@ public class WavefrontProperties {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wavefront token type.
|
||||||
|
*
|
||||||
|
* @since 3.2.0
|
||||||
|
*/
|
||||||
|
public enum TokenType {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No token.
|
||||||
|
*/
|
||||||
|
NO_TOKEN,
|
||||||
|
/**
|
||||||
|
* Wavefront API token.
|
||||||
|
*/
|
||||||
|
WAVEFRONT_API_TOKEN,
|
||||||
|
/**
|
||||||
|
* CSP API token.
|
||||||
|
*/
|
||||||
|
CSP_API_TOKEN,
|
||||||
|
/**
|
||||||
|
* CSP client credentials.
|
||||||
|
*/
|
||||||
|
CSP_CLIENT_CREDENTIALS
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,11 +18,15 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.wavefront;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
|
|
||||||
|
import com.wavefront.sdk.common.clients.service.token.TokenService.Type;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
|
import org.junit.jupiter.params.provider.CsvSource;
|
||||||
|
|
||||||
import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PushRegistryPropertiesConfigAdapterTests;
|
import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PushRegistryPropertiesConfigAdapterTests;
|
||||||
import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties;
|
import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties;
|
||||||
import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties.Metrics.Export;
|
import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties.Metrics.Export;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.wavefront.WavefrontProperties.TokenType;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
@ -107,4 +111,20 @@ class WavefrontPropertiesConfigAdapterTests extends
|
||||||
assertThat(createConfigAdapter(properties).reportDayDistribution()).isTrue();
|
assertThat(createConfigAdapter(properties).reportDayDistribution()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ParameterizedTest
|
||||||
|
@CsvSource(textBlock = """
|
||||||
|
null, WAVEFRONT_API_TOKEN
|
||||||
|
NO_TOKEN, NO_TOKEN
|
||||||
|
WAVEFRONT_API_TOKEN, WAVEFRONT_API_TOKEN
|
||||||
|
CSP_API_TOKEN, CSP_API_TOKEN
|
||||||
|
CSP_CLIENT_CREDENTIALS, CSP_CLIENT_CREDENTIALS
|
||||||
|
""")
|
||||||
|
void whenTokenTypeIsSetAdapterReturnsIt(String property, String wavefront) {
|
||||||
|
TokenType propertyToken = property.equals("null") ? null : TokenType.valueOf(property);
|
||||||
|
Type wavefrontToken = Type.valueOf(wavefront);
|
||||||
|
WavefrontProperties properties = new WavefrontProperties();
|
||||||
|
properties.setApiTokenType(propertyToken);
|
||||||
|
assertThat(new WavefrontPropertiesConfigAdapter(properties).apiTokenType()).isEqualTo(wavefrontToken);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue