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

CodeGuru Profiler Profiling Group #1316

Merged
merged 2 commits into from
Jun 6, 2024
Merged

CodeGuru Profiler Profiling Group #1316

merged 2 commits into from
Jun 6, 2024

Conversation

chlunde
Copy link
Contributor

@chlunde chlunde commented May 21, 2024

  • Add initial files for CodeGuru Profiler Profiling Group
  • Generated files

Description of your changes

Fixes #959

I have:

  • Read and followed Crossplane's contribution process.
  • Run make reviewable to ensure this PR is ready for review.
  • Added backport release-x.y labels to auto-backport this PR if necessary.

How has this code been tested

A successful uptest run: https://github.com/crossplane-contrib/provider-upjet-aws/actions/runs/9398769793

@Upbound-CLA
Copy link

Upbound-CLA commented May 21, 2024

CLA assistant check
All committers have signed the CLA.

@turkenf
Copy link
Collaborator

turkenf commented May 22, 2024

Hey @chlunde,

Thank you for opening this PR, I took a quick look at your PR:

  • If you are not going to add a configuration, you can continue without adding the config/codeguruprofiler/config.go file.
  • In external name configuration, NameAsIdentifier does not seem suitable according to this source, you should use IdentifierFromProvider since it is imported with id.
  • You should copy examples-generated/codeguruprofiler/v1beta1/profilinggroup.yaml into examples/codeguruprofiler/v1beta1/profilinggroup.yaml.

@chlunde
Copy link
Contributor Author

chlunde commented May 22, 2024

@turkenf thanks for looking at the draft, I just pushed it to sync between two computers and didn't have time to test it yet :)

But with IdentifierFromProvider and the following example:

apiVersion: codeguruprofiler.aws.upbound.io/v1beta1
kind: ProfilingGroup
metadata:
  annotations:
    meta.upbound.io/example-id: codeguruprofiler/v1beta1/profilinggroup
  labels:
    testing.upbound.io/example-name: example
  name: example
spec:
  forProvider:
    agentOrchestrationConfig:
    - profilingEnabled: true
    computePlatform: Default
    name: example2
    region: us-west-2

I get "read resource request failed: setting Amazon CodeGuru Profiler Profiling Group: operation error CodeGuruProfiler: DescribeProfilingGroup, serialization failed: serialization failed: input member profilingGroupName must not be empty:

2024-05-22T21:20:05+02:00	DEBUG	provider-aws	Cannot observe external resource	{"controller": "managed/codeguruprofiler.aws.upbound.io/v1beta1, kind=profilinggroup", "request": {"name":"example"}, "uid": "41a1b8cd-fbf3-45be-849d-a861017a718b", "version": "11744", "external-name": "", "error": "read resource request failed: setting Amazon CodeGuru Profiler Profiling Group: operation error CodeGuruProfiler: DescribeProfilingGroup, serialization failed: serialization failed: input member profilingGroupName must not be empty: operation error CodeGuruProfiler: DescribeProfilingGroup, serialization failed: serialization failed: input member profilingGroupName must not be empty", "errorVerbose": "setting Amazon CodeGuru Profiler Profiling Group: operation error CodeGuruProfiler: DescribeProfilingGroup, serialization failed: serialization failed: input member profilingGroupName must not be empty: operation error CodeGuruProfiler: DescribeProfilingGroup, serialization failed: serialization failed: input member profilingGroupName must not be empty\ngh.neting.cc/crossplane/upjet/pkg/controller.getFatalDiagnostics\n\tgh.neting.cc/crossplane/upjet@v1.3.0/pkg/controller/external_tfpluginfw.go:676\ngh.neting.cc/crossplane/upjet/pkg/controller.(*terraformPluginFrameworkExternalClient).Observe\n\tgh.neting.cc/crossplane/upjet@v1.3.0/pkg/controller/external_tfpluginfw.go:309\ngh.neting.cc/crossplane/upjet/pkg/controller.(*terraformPluginFrameworkAsyncExternalClient).Observe\n\tgh.neting.cc/crossplane/upjet@v1.3.0/pkg/controller/external_async_tfpluginfw.go:122\ngh.neting.cc/crossplane/crossplane-runtime/pkg/reconciler/managed.(*Reconciler).Reconcile\n\tgh.neting.cc/crossplane/crossplane-runtime@v1.16.0-rc.1.0.20240424114634-8641eb2ba384/pkg/reconciler/managed/reconciler.go:914\ngh.neting.cc/crossplane/crossplane-runtime/pkg/ratelimiter.(*Reconciler).Reconcile\n\tgh.neting.cc/crossplane/crossplane-runtime@v1.16.0-rc.1.0.20240424114634-8641eb2ba384/pkg/ratelimiter/reconciler.go:54\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:119\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:316\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:266\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:227\nruntime.goexit\n\truntime/asm_arm64.s:1197\nread resource request failed\ngh.neting.cc/crossplane/upjet/pkg/controller.(*terraformPluginFrameworkExternalClient).Observe\n\tgh.neting.cc/crossplane/upjet@v1.3.0/pkg/controller/external_tfpluginfw.go:310\ngh.neting.cc/crossplane/upjet/pkg/controller.(*terraformPluginFrameworkAsyncExternalClient).Observe\n\tgh.neting.cc/crossplane/upjet@v1.3.0/pkg/controller/external_async_tfpluginfw.go:122\ngh.neting.cc/crossplane/crossplane-runtime/pkg/reconciler/managed.(*Reconciler).Reconcile\n\tgh.neting.cc/crossplane/crossplane-runtime@v1.16.0-rc.1.0.20240424114634-8641eb2ba384/pkg/reconciler/managed/reconciler.go:914\ngh.neting.cc/crossplane/crossplane-runtime/pkg/ratelimiter.(*Reconciler).Reconcile\n\tgh.neting.cc/crossplane/crossplane-runtime@v1.16.0-rc.1.0.20240424114634-8641eb2ba384/pkg/ratelimiter/reconciler.go:54\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:119\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:316\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:266\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:227\nruntime.goexit\n\truntime/asm_arm64.s:1197"}

If I use the code as the PR is now, it works fine:

image
AWS_REGION=us-west-2 aws codeguruprofiler list-profiling-groups
{
    "profilingGroupNames": [
        "example"
    ]
}
2024-05-22T21:29:54+02:00	INFO	provider-aws	Beta feature enabled	{"flag": "EnableBetaManagementPolicies"}
2024-05-22T21:29:54+02:00	DEBUG	provider-aws	Calling the inner handler for Create event.	{"gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup", "name": "example", "queueLength": 0}
2024-05-22T21:29:54+02:00	DEBUG	provider-aws	Reconciling	{"controller": "managed/codeguruprofiler.aws.upbound.io/v1beta1, kind=profilinggroup", "request": {"name":"example"}}
2024-05-22T21:29:54+02:00	DEBUG	provider-aws	Calling the inner handler for Update event.	{"gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup", "name": "example", "queueLength": 0}
2024-05-22T21:29:54+02:00	DEBUG	provider-aws	Calling the inner handler for Update event.	{"gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup", "name": "example", "queueLength": 0}
2024-05-22T21:29:54+02:00	DEBUG	provider-aws	Connecting to the service provider	{"uid": "b20dcec5-679c-43f8-989b-c5fc54928225", "name": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup"}
2024-05-22T21:29:55+02:00	DEBUG	provider-aws	Reconciling	{"controller": "providerconfig/providerconfig.aws.upbound.io", "request": {"name":"default"}}
2024-05-22T21:29:56+02:00	DEBUG	provider-aws	Instance state not found in cache, reconstructing...	{"uid": "b20dcec5-679c-43f8-989b-c5fc54928225", "name": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup"}
2024-05-22T21:29:56+02:00	DEBUG	provider-aws	Observing the external resource	{"uid": "b20dcec5-679c-43f8-989b-c5fc54928225", "name": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup"}
2024-05-22T21:29:57+02:00	DEBUG	provider-aws	Async create starting...	{"trackerUID": "b20dcec5-679c-43f8-989b-c5fc54928225", "resourceName": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup"}
2024-05-22T21:29:57+02:00	DEBUG	provider-aws	Creating the external resource	{"uid": "b20dcec5-679c-43f8-989b-c5fc54928225", "name": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup"}
2024-05-22T21:29:57+02:00	DEBUG	provider-aws	Successfully requested creation of external resource	{"controller": "managed/codeguruprofiler.aws.upbound.io/v1beta1, kind=profilinggroup", "request": {"name":"example"}, "uid": "b20dcec5-679c-43f8-989b-c5fc54928225", "version": "12914", "external-name": "", "external-name": "example"}
2024-05-22T21:29:57+02:00	DEBUG	provider-aws	Calling the inner handler for Update event.	{"gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup", "name": "example", "queueLength": 0}
2024-05-22T21:29:57+02:00	DEBUG	provider-aws	Reconciling	{"controller": "managed/codeguruprofiler.aws.upbound.io/v1beta1, kind=profilinggroup", "request": {"name":"example"}}
2024-05-22T21:29:57+02:00	DEBUG	provider-aws	Connecting to the service provider	{"uid": "b20dcec5-679c-43f8-989b-c5fc54928225", "name": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup"}
2024-05-22T21:29:57+02:00	DEBUG	provider-aws	Instance state not found in cache, reconstructing...	{"uid": "b20dcec5-679c-43f8-989b-c5fc54928225", "name": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup"}
2024-05-22T21:29:57+02:00	DEBUG	provider-aws	ongoing async operation	{"uid": "b20dcec5-679c-43f8-989b-c5fc54928225", "name": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup", "opType": "create"}
2024-05-22T21:29:57+02:00	DEBUG	provider-aws	External resource is up to date	{"controller": "managed/codeguruprofiler.aws.upbound.io/v1beta1, kind=profilinggroup", "request": {"name":"example"}, "uid": "b20dcec5-679c-43f8-989b-c5fc54928225", "version": "12932", "external-name": "example", "requeue-after": "2024-05-22T21:40:15+02:00"}
2024-05-22T21:29:57+02:00	DEBUG	provider-aws	Async create ended.	{"trackerUID": "b20dcec5-679c-43f8-989b-c5fc54928225", "resourceName": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup", "error": null}
2024-05-22T21:29:57+02:00	DEBUG	provider-aws	Reconcile request has been requeued.	{"gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup", "name": "example", "rateLimiterName": "", "when": "0s"}
2024-05-22T21:29:57+02:00	DEBUG	provider-aws	Reconciling	{"controller": "managed/codeguruprofiler.aws.upbound.io/v1beta1, kind=profilinggroup", "request": {"name":"example"}}
2024-05-22T21:29:57+02:00	DEBUG	provider-aws	Connecting to the service provider	{"uid": "b20dcec5-679c-43f8-989b-c5fc54928225", "name": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup"}
2024-05-22T21:29:57+02:00	DEBUG	provider-aws	Observing the external resource	{"uid": "b20dcec5-679c-43f8-989b-c5fc54928225", "name": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup"}
2024-05-22T21:29:58+02:00	DEBUG	provider-aws	External resource is up to date	{"controller": "managed/codeguruprofiler.aws.upbound.io/v1beta1, kind=profilinggroup", "request": {"name":"example"}, "uid": "b20dcec5-679c-43f8-989b-c5fc54928225", "version": "12933", "external-name": "example", "requeue-after": "2024-05-22T21:40:01+02:00"}
2024-05-22T21:29:58+02:00	DEBUG	provider-aws	Reconciling	{"controller": "managed/codeguruprofiler.aws.upbound.io/v1beta1, kind=profilinggroup", "request": {"name":"example"}}
2024-05-22T21:29:58+02:00	DEBUG	provider-aws	Connecting to the service provider	{"uid": "b20dcec5-679c-43f8-989b-c5fc54928225", "name": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup"}

@chlunde
Copy link
Contributor Author

chlunde commented May 22, 2024

@turkenf should we do something about the array here?

    agentOrchestrationConfig:
    - profilingEnabled: true

@chlunde chlunde marked this pull request as ready for review May 23, 2024 07:17
@chlunde
Copy link
Contributor Author

chlunde commented May 27, 2024

@turkenf I rebased the PR due to conflict. If I try

diff --git a/config/externalname.go b/config/externalname.go
index b51b69f2e..16b93fdb5 100644
--- a/config/externalname.go
+++ b/config/externalname.go
@@ -70,7 +70,7 @@ var TerraformPluginFrameworkExternalNameConfigs = map[string]config.ExternalName

        // CodeGuru Profiler
        // Profiling Group can be imported using the profiling group name
-       "aws_codeguruprofiler_profiling_group": config.NameAsIdentifier,
+       "aws_codeguruprofiler_profiling_group": config.IdentifierFromProvider,
 }

 // TerraformPluginSDKExternalNameConfigs contains all external name configurations

And the following managed resource (with added spec.forProvider.name), it fails:

apiVersion: codeguruprofiler.aws.upbound.io/v1beta1
kind: ProfilingGroup
metadata:
  annotations:
    meta.upbound.io/example-id: codeguruprofiler/v1beta1/profilinggroup
  labels:
    testing.upbound.io/example-name: example
  name: example
spec:
  forProvider:
    name: example3
    agentOrchestrationConfig:
    - profilingEnabled: true
    computePlatform: Default
    region: us-west-2

The code as it is in this PR seems to work fine, as you can see in the screenshot. Am I missing something here?

2024-05-27T08:04:45+02:00	DEBUG	provider-aws	Starting	{"sync-interval": "1h0m0s", "poll-interval": "10m0s", "poll-jitter": "30s", "max-reconcile-rate": 100}
2024-05-27T08:04:47+02:00	INFO	provider-aws	Beta feature enabled	{"flag": "EnableBetaManagementPolicies"}
2024-05-27T08:04:48+02:00	DEBUG	provider-aws	Reconciling	{"controller": "providerconfig/providerconfig.aws.upbound.io", "request": {"name":"default"}}
2024-05-27T08:11:48+02:00	DEBUG	provider-aws	Calling the inner handler for Create event.	{"gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup", "name": "example", "queueLength": 0}
2024-05-27T08:11:48+02:00	DEBUG	provider-aws	Reconciling	{"controller": "managed/codeguruprofiler.aws.upbound.io/v1beta1, kind=profilinggroup", "request": {"name":"example"}}
2024-05-27T08:11:48+02:00	DEBUG	provider-aws	Connecting to the service provider	{"uid": "baccf863-b384-46e6-a060-43bde0665a20", "name": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup"}
2024-05-27T08:11:48+02:00	DEBUG	provider-aws	Calling the inner handler for Update event.	{"gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup", "name": "example", "queueLength": 0}
2024-05-27T08:11:48+02:00	DEBUG	provider-aws	Reconciling	{"controller": "providerconfig/providerconfig.aws.upbound.io", "request": {"name":"default"}}
2024-05-27T08:11:48+02:00	DEBUG	provider-aws	Reconciling	{"controller": "providerconfig/providerconfig.aws.upbound.io", "request": {"name":"default"}}
2024-05-27T08:11:48+02:00	DEBUG	provider-aws	Instance state not found in cache, reconstructing...	{"uid": "baccf863-b384-46e6-a060-43bde0665a20", "name": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup"}
2024-05-27T08:11:48+02:00	DEBUG	provider-aws	Observing the external resource	{"uid": "baccf863-b384-46e6-a060-43bde0665a20", "name": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup"}
2024-05-27T08:11:49+02:00	DEBUG	provider-aws	Cannot observe external resource	{"controller": "managed/codeguruprofiler.aws.upbound.io/v1beta1, kind=profilinggroup", "request": {"name":"example"}, "uid": "baccf863-b384-46e6-a060-43bde0665a20", "version": "89516", "external-name": "", "error": "read resource request failed: setting Amazon CodeGuru Profiler Profiling Group: operation error CodeGuruProfiler: DescribeProfilingGroup, serialization failed: serialization failed: input member profilingGroupName must not be empty: operation error CodeGuruProfiler: DescribeProfilingGroup, serialization failed: serialization failed: input member profilingGroupName must not be empty", "errorVerbose": "setting Amazon CodeGuru Profiler Profiling Group: operation error CodeGuruProfiler: DescribeProfilingGroup, serialization failed: serialization failed: input member profilingGroupName must not be empty: operation error CodeGuruProfiler: DescribeProfilingGroup, serialization failed: serialization failed: input member profilingGroupName must not be empty\ngh.neting.cc/crossplane/upjet/pkg/controller.getFatalDiagnostics\n\tgh.neting.cc/crossplane/upjet@v1.4.0/pkg/controller/external_tfpluginfw.go:676\ngh.neting.cc/crossplane/upjet/pkg/controller.(*terraformPluginFrameworkExternalClient).Observe\n\tgh.neting.cc/crossplane/upjet@v1.4.0/pkg/controller/external_tfpluginfw.go:309\ngh.neting.cc/crossplane/upjet/pkg/controller.(*terraformPluginFrameworkAsyncExternalClient).Observe\n\tgh.neting.cc/crossplane/upjet@v1.4.0/pkg/controller/external_async_tfpluginfw.go:122\ngh.neting.cc/crossplane/crossplane-runtime/pkg/reconciler/managed.(*Reconciler).Reconcile\n\tgh.neting.cc/crossplane/crossplane-runtime@v1.16.0-rc.2.0.20240510094504-3f697876fa57/pkg/reconciler/managed/reconciler.go:914\ngh.neting.cc/crossplane/crossplane-runtime/pkg/ratelimiter.(*Reconciler).Reconcile\n\tgh.neting.cc/crossplane/crossplane-runtime@v1.16.0-rc.2.0.20240510094504-3f697876fa57/pkg/ratelimiter/reconciler.go:54\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:119\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:316\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:266\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:227\nruntime.goexit\n\truntime/asm_arm64.s:1222\nread resource request failed\ngh.neting.cc/crossplane/upjet/pkg/controller.(*terraformPluginFrameworkExternalClient).Observe\n\tgh.neting.cc/crossplane/upjet@v1.4.0/pkg/controller/external_tfpluginfw.go:310\ngh.neting.cc/crossplane/upjet/pkg/controller.(*terraformPluginFrameworkAsyncExternalClient).Observe\n\tgh.neting.cc/crossplane/upjet@v1.4.0/pkg/controller/external_async_tfpluginfw.go:122\ngh.neting.cc/crossplane/crossplane-runtime/pkg/reconciler/managed.(*Reconciler).Reconcile\n\tgh.neting.cc/crossplane/crossplane-runtime@v1.16.0-rc.2.0.20240510094504-3f697876fa57/pkg/reconciler/managed/reconciler.go:914\ngh.neting.cc/crossplane/crossplane-runtime/pkg/ratelimiter.(*Reconciler).Reconcile\n\tgh.neting.cc/crossplane/crossplane-runtime@v1.16.0-rc.2.0.20240510094504-3f697876fa57/pkg/ratelimiter/reconciler.go:54\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:119\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:316\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:266\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:227\nruntime.goexit\n\truntime/asm_arm64.s:1222"}
2024-05-27T08:11:49+02:00	DEBUG	provider-aws	Reconciling	{"controller": "managed/codeguruprofiler.aws.upbound.io/v1beta1, kind=profilinggroup", "request": {"name":"example"}}
2024-05-27T08:11:49+02:00	DEBUG	provider-aws	Connecting to the service provider	{"uid": "baccf863-b384-46e6-a060-43bde0665a20", "name": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup"}
2024-05-27T08:11:49+02:00	DEBUG	provider-aws	Observing the external resource	{"uid": "baccf863-b384-46e6-a060-43bde0665a20", "name": "example", "gvk": "codeguruprofiler.aws.upbound.io/v1beta1, Kind=ProfilingGroup"}
2024-05-27T08:11:49+02:00	DEBUG	provider-aws	Cannot observe external resource	{"controller": "managed/codeguruprofiler.aws.upbound.io/v1beta1, kind=profilinggroup", "request": {"name":"example"}, "uid": "baccf863-b384-46e6-a060-43bde0665a20", "version": "89522", "external-name": "", "error": "read resource request failed: setting Amazon CodeGuru Profiler Profiling Group: operation error CodeGuruProfiler: DescribeProfilingGroup, serialization failed: serialization failed: input member profilingGroupName must not be empty: operation error CodeGuruProfiler: DescribeProfilingGroup, serialization failed: serialization failed: input member profilingGroupName must not be empty", "errorVerbose": "setting Amazon CodeGuru Profiler Profiling Group: operation error CodeGuruProfiler: DescribeProfilingGroup, serialization failed: serialization failed: input member profilingGroupName must not be empty: operation error CodeGuruProfiler: DescribeProfilingGroup, serialization failed: serialization failed: input member profilingGroupName must not be empty\ngh.neting.cc/crossplane/upjet/pkg/controller.getFatalDiagnostics\n\tgh.neting.cc/crossplane/upjet@v1.4.0/pkg/controller/external_tfpluginfw.go:676\ngh.neting.cc/crossplane/upjet/pkg/controller.(*terraformPluginFrameworkExternalClient).Observe\n\tgh.neting.cc/crossplane/upjet@v1.4.0/pkg/controller/external_tfpluginfw.go:309\ngh.neting.cc/crossplane/upjet/pkg/controller.(*terraformPluginFrameworkAsyncExternalClient).Observe\n\tgh.neting.cc/crossplane/upjet@v1.4.0/pkg/controller/external_async_tfpluginfw.go:122\ngh.neting.cc/crossplane/crossplane-runtime/pkg/reconciler/managed.(*Reconciler).Reconcile\n\tgh.neting.cc/crossplane/crossplane-runtime@v1.16.0-rc.2.0.20240510094504-3f697876fa57/pkg/reconciler/managed/reconciler.go:914\ngh.neting.cc/crossplane/crossplane-runtime/pkg/ratelimiter.(*Reconciler).Reconcile\n\tgh.neting.cc/crossplane/crossplane-runtime@v1.16.0-rc.2.0.20240510094504-3f697876fa57/pkg/ratelimiter/reconciler.go:54\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:119\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:316\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:266\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:227\nruntime.goexit\n\truntime/asm_arm64.s:1222\nread resource request failed\ngh.neting.cc/crossplane/upjet/pkg/controller.(*terraformPluginFrameworkExternalClient).Observe\n\tgh.neting.cc/crossplane/upjet@v1.4.0/pkg/controller/external_tfpluginfw.go:310\ngh.neting.cc/crossplane/upjet/pkg/controller.(*terraformPluginFrameworkAsyncExternalClient).Observe\n\tgh.neting.cc/crossplane/upjet@v1.4.0/pkg/controller/external_async_tfpluginfw.go:122\ngh.neting.cc/crossplane/crossplane-runtime/pkg/reconciler/managed.(*Reconciler).Reconcile\n\tgh.neting.cc/crossplane/crossplane-runtime@v1.16.0-rc.2.0.20240510094504-3f697876fa57/pkg/reconciler/managed/reconciler.go:914\ngh.neting.cc/crossplane/crossplane-runtime/pkg/ratelimiter.(*Reconciler).Reconcile\n\tgh.neting.cc/crossplane/crossplane-runtime@v1.16.0-rc.2.0.20240510094504-3f697876fa57/pkg/ratelimiter/reconciler.go:54\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:119\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:316\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:266\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\tsigs.k8s.io/controller-runtime@v0.17.3/pkg/internal/controller/controller.go:227\nruntime.goexit\n\truntime/asm_arm64.s:1222"}

@jeanduplessis
Copy link
Collaborator

/test-examples="examples/codeguruprofiler/v1beta1/profilinggroup.yaml"

Copy link
Collaborator

@turkenf turkenf left a comment

Choose a reason for hiding this comment

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

Hi @chlunde,

Many thanks for your patience and effort here. I left a comment for you to consider.

config/externalname.go Show resolved Hide resolved
@turkenf
Copy link
Collaborator

turkenf commented Jun 5, 2024

Hi @chlunde,

The v1.6.0 release is planned for tomorrow, June 6, if you want to include this resource in the release, please look at the comments above, thanks in advance.

@chlunde
Copy link
Contributor Author

chlunde commented Jun 6, 2024

@turkenf Thanks! Sorry for the late reply, I've been traveling. I had to rebase due to conflicts. I also added name: example to the example, and tested manually creating the profiling group. To import an existing, I had to set external-name matching the name.

@chlunde chlunde requested a review from turkenf June 6, 2024 07:05
@turkenf
Copy link
Collaborator

turkenf commented Jun 6, 2024

/test-examples="examples/codeguruprofiler/v1beta1/profilinggroup.yaml"

@turkenf
Copy link
Collaborator

turkenf commented Jun 6, 2024

Thanks, fixed! I see the terraform provider sets state.ID = profilingGroup.Name. I don't fully understand the pros and cons here (i.e. what is broken with using NameAsIdentifier). One thing is that we now both have name and external-name, but I think they will have to be the same to make any sense. Maybe we should have a cel-expression in the future to enforce that if external name is set, it must match the name?

Actually, you are right @chlunde, I misunderstood the situation here 🤦 I suggested the IdentifierFromProvider to you, assuming that there were special characters etc. in the spec.forProvider.name syntax (which we can not specify in the metadata.name). But now that I look at it again, I don't see such a necessity.

Screenshot 2024-06-06 at 12 21 14

After this enlightenment, I think it is more appropriate to use NameAsIdentifier in terms of API normalization and for the reasons you stated.

Sorry for the misunderstanding, if you don't mind, could you please set the external name configuration to NameAsIdentifier as you did in the first case?

chlunde added 2 commits June 6, 2024 11:37
Signed-off-by: Carl Henrik Lunde <chlunde@ifi.uio.no>
Signed-off-by: Carl Henrik Lunde <chlunde@ifi.uio.no>
@chlunde
Copy link
Contributor Author

chlunde commented Jun 6, 2024

@turkenf cool! I've updated (and retested)

@turkenf
Copy link
Collaborator

turkenf commented Jun 6, 2024

/test-examples="examples/codeguruprofiler/v1beta1/profilinggroup.yaml"

Copy link
Collaborator

@turkenf turkenf left a comment

Choose a reason for hiding this comment

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

Many thanks @chlunde 🙌

@turkenf turkenf merged commit e058992 into crossplane-contrib:main Jun 6, 2024
12 checks passed
@chlunde chlunde deleted the codeguruprofiler branch June 6, 2024 10:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Request for aws_codeguruprofiler_profiling_group resource
4 participants