Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CloudMap support for spring aws applications #95

Closed
wants to merge 30 commits into from

Conversation

hariohmprasath
Copy link

@hariohmprasath hariohmprasath commented Mar 4, 2021

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

This pull request adds support for integrating spring boot application with AWS cloudmap. Here is an example of how an simple yaml file integration looks like for both cloudmap registration and discovery

aws:
    cloudmap:
        discovery:
            discoveryList:
            -   healthCheckProtocol: http
                healthCheckResourcePath: /health
                healthCheckThreshold: 5
                service: test-service
                serviceNameSpace: test-namespace
            failFast: true
        enabled: true
        region: us-east-1
        registry:
            description: Namespace for sample cloudmap registry service
            port: 80
            service: service-service
            serviceNameSpace: service-namespace

You can also use annotations to register the spring boot applications to cloudmap

@CloudMapRegistry(
		serviceNameSpace = "dark1-namespace",
		service = "dark1-service",
		port = 80
)
public class TestController {}

Limitation: This pull requests support cloudmap discovery on both EC2 and Fargate based ECS instances, but for service registry currently it only supported for Fargate instance as it uses theECS_CONTAINER_METADATA_URI_V4 URL.

💡 Motivation and Context

Adds support for cloudmap integration with spring boot applications for both service registry and discovery

#5

💚 How did you test it?

I executed the following tests:

  • Ran unit test cases and made sure nothing failed
  • Deployed the sample spring boot app checked in part of this pull request in ECS fargate instance. The application could successfully discover and register the application to AWS cloudmap.

📝 Checklist

  • I reviewed submitted code
  • I added tests to verify changes
  • I updated reference documentation to reflect the change
  • All tests passing
  • No breaking changes

🔮 Next steps

  • Complete code review
  • Add support for cloudmap registration from EC2 instances

Copy link
Contributor

@eddumelendez eddumelendez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hariohmprasath thank you so much for the PR! I am really excited about this one TBH and I don't know why. I have submitted some comments to help you organize the modules much better. Please, don't forget to add yourself as an author for the classes that have been touched.

I'm not an expert in cloudmap and left one question to be clear about it. Also, it would be nice to add some javadocs to know more the class responsibility.

spring-cloud-aws-cloudmap-config/pom.xml Outdated Show resolved Hide resolved
spring-cloud-aws-cloudmap-config/pom.xml Outdated Show resolved Hide resolved

@ConfigurationProperties(AwsCloudMapProperties.CONFIG_PREFIX)

public class AwsCloudMapProperties {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Keep CloudMapProperties and move this class to autoconfigure module. there should be a package io.awspring.cloud.autoconfigure.cloudmap containing Properties and AutoConfiguration classes

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I followed the same model that we have for parameter store, where we have a module for reading config and a starter project for beans and initiation. Is it ok if I keep it the same way? Or do you want me to move it here? Because this might require a lot more refactoring, so thought of checking with you before that.


import org.springframework.core.env.EnumerablePropertySource;

public class AwsCloudMapPropertySource extends EnumerablePropertySource<AWSServiceDiscovery> {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why a propertysource for cloudmap? sorry, maybe I am missing something but this service is different from parameter store or secrets manager, right? I see this in spring-cloud-consul but it is because consul provides kv store

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I second the question

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No problem happy to explain. Cloudmap has two parts to it.

  • Registration --> Where applications can register itself to CloudMap service
  • Discovery --> Where application can discover other registered instances using namespace & service name. We are using property store to allow discovery of these instances.

Here is an example of a property getting injected with HttpInstanceSummary (in string format) from cloudmap service based on CloudMap namespace and service name using the key "namespace/service"

@Value("${test-namespace/test-service}")
private String registryDetails;

You can find this example of this inside [SpringCloudAwsCloudMapSample.java](spring-cloud-aws-samples
/spring-cloud-aws-samples/src/main/java/io/awspring/cloud/cloudmap/sample)

Hope this answers your questions, if you have any further questions, let me know. Happy to explain.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the explanation @hariohmprasath. However, I think we should give this more a flavor similar to spring-cloud-consul-discovery module which brings the service registry and discovery.

@hariohmprasath
Copy link
Author

@hariohmprasath thank you so much for the PR! I am really excited about this one TBH and I don't know why. I have submitted some comments to help you organize the modules much better. Please, don't forget to add yourself as an author for the classes that have been touched.
@eddumelendez Thanks a lot for all the support and helping with the review. Really appreciate it. I have responded to your comments and I am happy to answer any further questions you may have.

I'm not an expert in cloudmap and left one question to be clear about it. Also, it would be nice to add some javadocs to know more the class responsibility.
Sure I have added more javadocs. Once the changes are approved, I'm planning to create a blog post with end to end deployment scripts using AWS CDK (which can build a ECS cluster and deploying this application) so it would be easier for anyone to incorporate this in future.

@hariohmprasath
Copy link
Author

Hi @spencergibb, @eddumelendez, @MatejNedic, @jkuipers,

Hope everyone had a wonderful weekend. I have incorporated everyone's feedback, just want to check whether we are fine in merging this pull request or do we have any feedback that you would like to incorporate. Happy to do so.

Let me know, appreciate all the love and support from this community. Thanks.

Copy link

@vanekjar vanekjar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the integration with AWS Cloud Map. I added a few comments.

@hariohmprasath
Copy link
Author

hariohmprasath commented Mar 9, 2021

Thanks for the integration with AWS Cloud Map. I added a few comments.

Thanks @vanekjar for all the feedback. I have incorporated the changes. By the way @vanekjar is part of the AWS cloudmap development team, thanks for accepting the request for review and validating the correctness of the integration.

@github-actions github-actions bot added component: core Core functionality related issue component: parameter-store Parameter Store integration related issue component: rds RDS integration related issue component: secrets-manager Secrets Manager integration related issue type: documentation Documentation or Samples related issue labels Mar 17, 2021
@hariohmprasath
Copy link
Author

Hi @eddumelendez & @vanekjar,
I have taken care of all the requested changes, so following up on this PR to see whether this can get merged to the repository?

Thanks
Hari

@eddumelendez
Copy link
Contributor

@hariohmprasath sorry for the delay. I will review on Thursday but still see things to improve. I think we should see at how https://github.com/spring-cloud/spring-cloud-consul/ has been implemented. More details on Thursday.

@hariohmprasath
Copy link
Author

@hariohmprasath sorry for the delay. I will review on Thursday but still see things to improve. I think we should see at how https://github.com/spring-cloud/spring-cloud-consul/ has been implemented. More details on Thursday.

Thanks, appreciate the help on this

Copy link
Member

@MatejNedic MatejNedic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @hariohmprasath , I left few comments about changes.

@eddumelendez
Copy link
Contributor

@hariohmprasath please make sure this PR only contains your changes. it is hard to review.

@hariohmprasath
Copy link
Author

@hariohmprasath please make sure this PR only contains your changes. it is hard to review.

@eddumelendez this PR only contains changes related to cloudmap integration. We got lot of good feedback from this community and everything related to this feature has been incorporated part of this PR.

Thanks
Hari

@eddumelendez
Copy link
Contributor

check the commits tab, please

@hariohmprasath
Copy link
Author

check the commits tab, please

There were other changes that were happening in this branch in parallel while this pull request was open. So I have to rebase my changes with the target branch to make it compatible for getting this merged, which has led to other commits getting in the way of this one. If you remember I infact created a discussion to ask a few questions around this.

What do you suggest? I am open to make things easier for you to review so I can take care of the comments. Let me know your thoughts on this. Thanks.

@eddumelendez
Copy link
Contributor

after the rebase is done only your commits should be displayed. looks like in the process some commits from other authors keep in your branch. there is no need to update the PR with changes happening in the main branch but this time I will appreciate to do it and only keep your commits, please

@hariohmprasath
Copy link
Author

hariohmprasath commented Apr 2, 2021

after the rebase is done only your commits should be displayed. looks like in the process some commits from other authors keep in your branch. there is no need to update the PR with changes happening in the main branch but this time I will appreciate to do it and only keep your commits, please

Are you fine in reviewing it this time? or do you want me to change the PR. Sorry I am trying to understand your response. Appreciate your quick responses. Thanks

@eddumelendez
Copy link
Contributor

@hariohmprasath please, just make sure the branch contains only your commits related to cloudmap integration

@hariohmprasath
Copy link
Author

please, just make sure the branch contains only your commits related to cloudmap integration

Hi @eddumelendez,
I might need some help on this. Only way I can think of doing this is creating a new fork/branch and merging the cloudmap changes that we have in this pull request on to the new branch. Do you want me to that?

Or do we have a way of doing what you have in this current pull request? I know we are almost there with a lot of reviews done and feedback incorporated frankly I am not an expert with GIT so can you please help with this? Any pointer to how I can do this on the current one will be really helpful.

Thanks in advance

  • Hari

@kdhrubo
Copy link

kdhrubo commented Mar 8, 2022

Sounds good @eddumelendez . Do you need testing help? Given that dev is completed - any reviews pending?

@hariohmprasath
Copy link
Author

hariohmprasath commented Apr 4, 2022

Hi @kdhrubo,
Based on @eddumelendez suggestion. I rewrote this integration using spring discovery. You can find a first draft of the PR here:

hariohmprasath@4339b0a

I have reached out @eddumelendez and team for some early peer review before I wrap up the testcases and submit a PR (more polished one :) ) thanks again for your patience.

@kdhrubo
Copy link

kdhrubo commented Apr 4, 2022

@hariohmprasath thanks. I will try to test the code this week and share my observation. Awesome 👍 work.

@hariohmprasath
Copy link
Author

@hariohmprasath thanks. I will try to test the code this week and share my observation. Awesome 👍 work.

Thanks @kdhrubo. You can directly reach out to me at this email address hariohmprasath@gmail.com

Copy link
Member

@MatejNedic MatejNedic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @hariohmprasath, tnx for your contribution!
It is looking good so far.

@Bean
@ConditionalOnMissingBean
AWSServiceDiscovery serviceDiscovery(CloudMapProperties properties) {
return createServiceDiscoveryClient(properties);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no need for a new method.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, you are right. Removed it in the new version

public class AwsCloudMapBootstrapConfiguration {

@Autowired
private ApplicationContext context;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use constructor injection instead

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Resolved

@ConditionalOnDiscoveryEnabled
@ConditionalOnBlockingDiscoveryEnabled
public class AwsCloudMapBootstrapConfiguration {

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of injecting properties in each method rather inject it through a constructor and reference it.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

*/
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(CloudMapProperties.class)
@ConditionalOnClass({AWSServiceDiscovery.class})
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add ServiceRegistration, CloudMapDiscoveryClient and CloudMapAutoRegistration

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

those 3 lives in the same library, one of them is just needed in the @ConditionalOnClass. We can add org.springframework.cloud.client.discovery.event.InstanceRegisteredEvent and org.springframework.cloud.client.serviceregistry.AutoServiceRegistration if live in different libraries.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have added the missing beans as part of the @ConditionalOnClass annotations. But not sure about InstanceRegisteredEvent and AutoServiceRegistration as I am not using it.

<dependency>
<groupId>net.oneandone.reflections8</groupId>
<artifactId>reflections8</artifactId>
<version>0.11.7</version>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we extract the version to the project level?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder where it is used or if it is needed for another dependency

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have removed this as it is no longer needed

*/
public List<String> listServices(final AWSServiceDiscovery serviceDiscovery,
List<CloudMapDiscoveryProperties> discoveryProperties) {
final List<String> serviceList = new ArrayList<>();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead if mb we can have Assert.notNull(discoveryProperties, "DiscoveryProperties must not be null");`

final ServiceFilter serviceFilter = new ServiceFilter().withName(NAMESPACE_ID)
.withCondition("EQ").withValues(nameSpaceId);
final ListServicesRequest servicesRequest = new ListServicesRequest().withFilters(serviceFilter);
if (token != null)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mb change If with this. It is more readable

Optional.ofNullable(token, String.class)).ifPresent(servicesRequest::withNextToken);

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code updated


List<NamespaceSummary> namespaceSummaries = namespacesResult.getNamespaces();
Optional<String> namespaceId = namespaceSummaries.stream()
.filter(n -> n.getName().equals(nameSpace))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a question are namespaces case sensitive?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes thats correct

import java.net.URI;

@Service
public class CloudMapRequestFactory implements ClientHttpRequestFactory {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be a Bean, if so define it in starters and remove @Service

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it should be define in the auto-configure module, right? not in the starter

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have removed this as its not getting used

ResponseEntity<String> metaDataResponse = REST_TEMPLATE
.getForEntity(System.getenv("ECS_CONTAINER_METADATA_URI_V4") + "/task", String.class);
JsonNode root = JSON_MAPPER.readTree(metaDataResponse.getBody());
JsonNode jsonNode = root.get("Containers").get(0).get("Networks").get(0);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this always true? I mean the first item in the container list and the first network? In general I think is ok but just double checking

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. I have created two methods which will be picked up based on the DEPLOYMENT_PLATFORM value ECS

  • getEcsRegistrationAttributes - Used for ECS
  • getEksRegistrationAttributes - Used for EKS

Map<String, String> attributes = new HashMap<>();
try {
ResponseEntity<String> metaDataResponse = REST_TEMPLATE
.getForEntity(System.getenv("ECS_CONTAINER_METADATA_URI_V4") + "/task", String.class);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the system environment variable is for ECS only right? ehat about services in EC2 or EKS?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now we have two different methods to handle ECS, EKS. Inside ECS, we have a mechanism to use default metaURL if not available (to handle EC2 use case)

@sonarcloud
Copy link

sonarcloud bot commented Apr 10, 2022

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

No Coverage information No Coverage information
No Duplication information No Duplication information

@hariohmprasath
Copy link
Author

Hi @eddumelendez, @MatejNedic,

Thanks for the quick response on the code review and for helping with the early feedback. It was super helpful. I have updated the code based on the feedback, additionally tested the integration both in ECS and EKS, with default behavior for EC2. It's working fine. Along with this, I also added unit test cases to validate the code. Please review it and let me know if you have questions, appreciate all the help and support for the team.

Copy link
Contributor

@eddumelendez eddumelendez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for the update @hariohmprasath ! I have added some suggestions and questions in order to understand a little bit more about the implementation.

Please, take into account the following points

  • starter should only contain a pom
  • cloudmap module should not have dependency on spring-boot. So far I have identified it depends on ConfigurationProperties
  • auto-configuration is only managed at spring-cloud-aws-autoconfigure module

Comment on lines 15 to 16
org.springframework.cloud.client.discovery.EnableDiscoveryClient=\
org.springframework.cloud.aws.cloudmap.servicediscovery.CloudMapDiscoveryClient
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was not able to see a similar config on spring-cloud-consul. can you point us to it, please?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right, this is not required. So I have removed it.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @eddumelendez,
Please find my responses below:

  • starter should only contain a pom & auto-configuration is only managed at spring-cloud-aws-autoconfigure module

I followed spring-cloud-starter-aws-parameter-store-config module implementation to begin with and since we have write a discovery and auto-registration client part of spring-cloud-aws-cloudmap module I am unable to move the autoconfiguration to autoconfigure module.

  • cloudmap module should not have dependency on spring-boot. So far I have identified it depends on ConfigurationProperties

Removed spring-boot dependencies from the module

*/
INSTANCE;

public static final String META_DATA_URL = "http://169.254.169.254/latest/meta-data";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is a EC2 metadata url, right? can we rename it to EC2_METADATA_URL

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated variable name

* @author Hari Ohm Prasath
* @since 2.3.2
*/
public enum CloudMapUtils {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am also in favor or a class instead of enum

public Map<String, String> getRegistrationAttributes() {
String deploymentPlatform = System.getenv(DEPLOYMENT_PLATFORM);
LOGGER.info("Deployment platform passed in {}", deploymentPlatform);
if (StringUtils.hasText(deploymentPlatform) && EKS.equalsIgnoreCase(deploymentPlatform.trim()))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

deploymentPlatform can have empty spaces at the end?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated CloudMapUtils to a singleton class and fixed space issue

* register instances to cloudmap service.
* @return map containing ip address and vpcid
*/
public Map<String, String> getRegistrationAttributes() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in case of ECS is taking eks attributes? I think we can clarify this in the javadoc

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have added additional docs to clarify this, let me know if its still not clear

private List<CloudMapDiscoveryProperties> discoveryList;

public boolean isFailFast() {
return failFast;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
return failFast;
return this.failFast;

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

}

public List<CloudMapDiscoveryProperties> getDiscoveryList() {
return discoveryList;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
return discoveryList;
return this.discoveryList;

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

* @author Hari Ohm Prasath
* @since 2.3.2
*/
public class AwsCloudMapRegisterServiceTest {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public class AwsCloudMapRegisterServiceTest {
public class CloudMapRegisterServiceTest {

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated

@ConditionalOnProperty(prefix = CloudMapProperties.CONFIG_PREFIX, name = "enabled", matchIfMissing = true)
@ConditionalOnDiscoveryEnabled
@ConditionalOnBlockingDiscoveryEnabled
public class AwsCloudMapBootstrapConfiguration {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public class AwsCloudMapBootstrapConfiguration {
public class CloudMapBootstrapConfiguration {

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated


public AwsCloudMapBootstrapConfiguration(CloudMapProperties properties, ApplicationContext context) {
AWSServiceDiscoveryClientBuilder builder = AWSServiceDiscoveryClientBuilder.standard()
.withCredentials(new DefaultAWSCredentialsProviderChain());
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you add .overrideConfiguration(SpringCloudClientConfiguration.clientOverrideConfiguration()) and Optional.ofNullable(this.properties.getEndpoint()).ifPresent(client::endpointOverride); similar to other auto-configurations. Also. Region and Credentials can be injected. See other auto-configurations

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed the overrides

@Vostan
Copy link

Vostan commented Jun 23, 2022

Hi, we really seeking this module to reach the main branch, is there something we can do to boost this up?

@nstdio
Copy link

nstdio commented Jun 24, 2022

Thanks for the great effort! We are looking forward to see this PR merged. Is there anything that we can possibly help?

@fahime-ghasemi
Copy link

Any update on this feature?

@sonarcloud
Copy link

sonarcloud bot commented Aug 30, 2022

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

No Coverage information No Coverage information
No Duplication information No Duplication information

@hariohmprasath
Copy link
Author

Hi @eddumelendez,
Sorry about my delay in submitting the updates to the PR. Finally I got a chance to take care of all the requested changes, please review it and let me know if you have any questions. Thanks

@Vostan
Copy link

Vostan commented Sep 1, 2022

@maciejwalkowiak If you would have a chance to review, these changes and merge them that would be amazing.

@maciejwalkowiak
Copy link
Contributor

I am a bit puzzled right now because since this PR started we got huge progress with migration to AWS SDK v2 in Spring Cloud AWS 3.0.

The options we have are: merge CloudMap to 2.x and release 3.0 without CloudMap with an idea to migrate it to AWS SDK v2 in 3.1, or rebase this PR on the top of main branch migrated to AWS SDK v2 and include it in 3.x at one point - but this would postpone having CloudMap support even further.

@hariohmprasath are you able to estimate the efforts needed to migrate this PR to AWS SDK v2 and if you would be even willing to do it?

@Vostan
Copy link

Vostan commented Sep 2, 2022

I am a bit puzzled right now because since this PR started we got huge progress with migration to AWS SDK v2 in Spring Cloud AWS 3.0.

The options we have are: merge CloudMap to 2.x and release 3.0 without CloudMap with an idea to migrate it to AWS SDK v2 in 3.1, or rebase this PR on the top of main branch migrated to AWS SDK v2 and include it in 3.x at one point - but this would postpone having CloudMap support even further.

@hariohmprasath are you able to estimate the efforts needed to migrate this PR to AWS SDK v2 and if you would be even willing to do it?

Is there some way I can help @hariohmprasath ?

@hariohmprasath
Copy link
Author

hariohmprasath commented Sep 4, 2022

I am a bit puzzled right now because since this PR started we got huge progress with migration to AWS SDK v2 in Spring Cloud AWS 3.0.

The options we have are: merge CloudMap to 2.x and release 3.0 without CloudMap with an idea to migrate it to AWS SDK v2 in 3.1, or rebase this PR on the top of main branch migrated to AWS SDK v2 and include it in 3.x at one point - but this would postpone having CloudMap support even further.

@hariohmprasath are you able to estimate the efforts needed to migrate this PR to AWS SDK v2 and if you would be even willing to do it?

Hi @maciejwalkowiak,
Thanks for going over the options and I can completely understand the timelines involved in releasing 3.x with AWS SDK v2 support. So I took some time over this weekend to rework this feature based on AWS SDK 2.x. I have submitted a new PR (for 3.x branch) with all the required changes, tested it using AWS ECS and everything seems to work fine. Since this PR has already been reviewed by the team, the new PR based on AWS SDK 2.x contains all the requested changes. Hopefully, this will make things easier on your end for planning the release and let me know if you have questions or want me to take care of anything before merging this change. Thanks again for the support from this community.

#506

@hariohmprasath
Copy link
Author

I am a bit puzzled right now because since this PR started we got huge progress with migration to AWS SDK v2 in Spring Cloud AWS 3.0.
The options we have are: merge CloudMap to 2.x and release 3.0 without CloudMap with an idea to migrate it to AWS SDK v2 in 3.1, or rebase this PR on the top of main branch migrated to AWS SDK v2 and include it in 3.x at one point - but this would postpone having CloudMap support even further.
@hariohmprasath are you able to estimate the efforts needed to migrate this PR to AWS SDK v2 and if you would be even willing to do it?

Is there some way I can help @hariohmprasath ?

Thanks @Vostan for volunteering to help me out on this. Since we have a new PR posted based on AWS SDK 2.x we should be good in releasing this feature on time. I would definitely need your help in trying this feature out and work on improving the integration with AWS CloudMap. Thanks

@hariohmprasath
Copy link
Author

hariohmprasath commented Sep 4, 2022 via email

@maciejwalkowiak
Copy link
Contributor

@hariohmprasath fantastic! Thanks a lot for putting effort into this! I'm scheduling CloudMap support for M3 and do our best to review and try it out on time.

@maciejwalkowiak
Copy link
Contributor

Closing in favour of #506

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component: core Core functionality related issue component: parameter-store Parameter Store integration related issue component: rds RDS integration related issue component: secrets-manager Secrets Manager integration related issue type: dependency-upgrade Dependency version bump type: documentation Documentation or Samples related issue
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet