Skip to content

Commit

Permalink
refactor(cloudfoundry): use CredentialsType (#5150)
Browse files Browse the repository at this point in the history
* refactor(cloudfoundry): use CredentialsType

* refactor(cloudfoundry): fix equals for credentials definition
  • Loading branch information
ncknt committed Dec 10, 2020
1 parent accd999 commit b1ec1e5
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 51 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,7 @@
import com.netflix.spinnaker.credentials.definition.CredentialsDefinition;
import com.netflix.spinnaker.fiat.model.resources.Permissions;
import java.util.*;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.*;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
Expand Down Expand Up @@ -54,6 +51,7 @@ public void destroy() {
@Getter
@Setter
@ToString(exclude = "password")
@EqualsAndHashCode
public static class ManagedAccount implements CredentialsDefinition {
private String name;
private String api;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,13 @@
import com.netflix.spinnaker.clouddriver.cloudfoundry.provider.CloudFoundryProvider;
import com.netflix.spinnaker.clouddriver.cloudfoundry.security.CloudFoundryCredentials;
import com.netflix.spinnaker.clouddriver.security.CredentialsInitializerSynchronizable;
import com.netflix.spinnaker.credentials.CredentialsLifecycleHandler;
import com.netflix.spinnaker.credentials.CredentialsRepository;
import com.netflix.spinnaker.credentials.MapBackedCredentialsRepository;
import com.netflix.spinnaker.credentials.*;
import com.netflix.spinnaker.credentials.definition.AbstractCredentialsLoader;
import com.netflix.spinnaker.credentials.definition.BasicCredentialsLoader;
import com.netflix.spinnaker.credentials.definition.CredentialsDefinitionSource;
import com.netflix.spinnaker.credentials.poller.Poller;
import java.util.concurrent.ForkJoinPool;
import javax.annotation.Nullable;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

Expand All @@ -49,48 +46,38 @@ public ForkJoinPool cloudFoundryThreadPool(
}

@Bean
@ConditionalOnMissingBean(
value = CloudFoundryCredentials.class,
parameterizedContainer = AbstractCredentialsLoader.class)
public AbstractCredentialsLoader<CloudFoundryCredentials> cloudFoundryCredentialsLoader(
@Nullable
CredentialsDefinitionSource<CloudFoundryConfigurationProperties.ManagedAccount>
cloudFoundryCredentialSource,
CloudFoundryConfigurationProperties configurationProperties,
CacheRepository cacheRepository,
CredentialsRepository<CloudFoundryCredentials> cloudFoundryCredentialsRepository,
ForkJoinPool cloudFoundryThreadPool) {

if (cloudFoundryCredentialSource == null) {
cloudFoundryCredentialSource = configurationProperties::getAccounts;
}
return new BasicCredentialsLoader<>(
cloudFoundryCredentialSource,
a ->
new CloudFoundryCredentials(
a.getName(),
a.getAppsManagerUri(),
a.getMetricsUri(),
a.getApi(),
a.getUser(),
a.getPassword(),
a.getEnvironment(),
a.isSkipSslValidation(),
a.getResultsPerPage(),
cacheRepository,
a.getPermissions().build(),
cloudFoundryThreadPool,
a.getSpaceFilter()),
cloudFoundryCredentialsRepository);
}

@Bean
@ConditionalOnMissingBean(
value = CloudFoundryCredentials.class,
parameterizedContainer = CredentialsRepository.class)
public CredentialsRepository<CloudFoundryCredentials> cloudFoundryCredentialsRepository(
CredentialsLifecycleHandler<CloudFoundryCredentials> eventHandler) {
return new MapBackedCredentialsRepository<>(CloudFoundryProvider.PROVIDER_ID, eventHandler);
public CredentialsTypeBaseConfiguration<
CloudFoundryCredentials, CloudFoundryConfigurationProperties.ManagedAccount>
cloudfoundryCredentials(
ApplicationContext applicationContext,
CloudFoundryConfigurationProperties configurationProperties,
CacheRepository cacheRepository,
ForkJoinPool cloudFoundryThreadPool) {
return new CredentialsTypeBaseConfiguration<>(
applicationContext,
CredentialsTypeProperties
.<CloudFoundryCredentials, CloudFoundryConfigurationProperties.ManagedAccount>builder()
.type(CloudFoundryProvider.PROVIDER_ID)
.credentialsClass(CloudFoundryCredentials.class)
.credentialsDefinitionClass(CloudFoundryConfigurationProperties.ManagedAccount.class)
.defaultCredentialsSource(configurationProperties::getAccounts)
.credentialsParser(
a ->
new CloudFoundryCredentials(
a.getName(),
a.getAppsManagerUri(),
a.getMetricsUri(),
a.getApi(),
a.getUser(),
a.getPassword(),
a.getEnvironment(),
a.isSkipSslValidation(),
a.getResultsPerPage(),
cacheRepository,
a.getPermissions().build(),
cloudFoundryThreadPool,
a.getSpaceFilter()))
.build());
}

@Bean
Expand Down

0 comments on commit b1ec1e5

Please sign in to comment.