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

remove hardcoded list of resource types from cli. #8286

Open
wants to merge 17 commits into
base: main
Choose a base branch
from

Conversation

nithyatsu
Copy link
Contributor

@nithyatsu nithyatsu commented Jan 23, 2025

Description

Since we now register resource provider manifests at startup and are in process of enabling UDT end to end, we should not use static resource type lists.

This PR removes static resource type lists in cli code.

Type of change

  • This pull request adds or changes features of Radius and has an approved issue (issue link required).

Part of #6688

Contributor checklist

Please verify that the PR meets the following requirements, where applicable:

  • An overview of proposed schema changes is included in a linked GitHub issue.
    • Yes
    • [X ] Not applicable
  • A design document PR is created in the design-notes repository, if new APIs are being introduced.
    • Yes
    • [X ] Not applicable
  • The design document has been reviewed and approved by Radius maintainers/approvers.
    • Yes
    • [ X] Not applicable
  • A PR for the samples repository is created, if existing samples are affected by the changes in this PR.
    • Yes
    • [X ] Not applicable
  • A PR for the documentation repository is created, if the changes in this PR affect the documentation or any user facing updates are made.
    • Yes
    • [X ] Not applicable
  • A PR for the recipes repository is created, if existing recipes are affected by the changes in this PR.
    • Yes
    • [ X] Not applicable

Copy link

codecov bot commented Jan 24, 2025

Codecov Report

Attention: Patch coverage is 62.50000% with 30 lines in your changes missing coverage. Please review.

Project coverage is 59.80%. Comparing base (4c769e9) to head (afa6423).
Report is 10 commits behind head on main.

Files with missing lines Patch % Lines
pkg/cli/clients/management.go 55.55% 16 Missing and 8 partials ⚠️
pkg/cli/cmd/resource/list/list.go 60.00% 4 Missing and 2 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8286      +/-   ##
==========================================
- Coverage   59.84%   59.80%   -0.04%     
==========================================
  Files         590      590              
  Lines       39513    39535      +22     
==========================================
- Hits        23645    23643       -2     
- Misses      14110    14126      +16     
- Partials     1758     1766       +8     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@radius-functional-tests
Copy link

radius-functional-tests bot commented Jan 24, 2025

Radius functional test overview

🔍 Go to test action run

Name Value
Repository nithyatsu/radius
Commit ref 303cf36
Unique ID func172c46f57a
Image tag pr-func172c46f57a
Click here to see the list of tools in the current test run
  • gotestsum 1.12.0
  • KinD: v0.20.0
  • Dapr:
  • Azure KeyVault CSI driver: 1.4.2
  • Azure Workload identity webhook: 1.3.0
  • Bicep recipe location ghcr.io/radius-project/dev/test/testrecipes/test-bicep-recipes/<name>:pr-func172c46f57a
  • Terraform recipe location http://tf-module-server.radius-test-tf-module-server.svc.cluster.local/<name>.zip (in cluster)
  • applications-rp test image location: ghcr.io/radius-project/dev/applications-rp:pr-func172c46f57a
  • dynamic-rp test image location: ghcr.io/radius-project/dev/dynamic-rp:pr-func172c46f57a
  • controller test image location: ghcr.io/radius-project/dev/controller:pr-func172c46f57a
  • ucp test image location: ghcr.io/radius-project/dev/ucpd:pr-func172c46f57a
  • deployment-engine test image location: ghcr.io/radius-project/deployment-engine:latest

Test Status

⌛ Building Radius and pushing container images for functional tests...
✅ Container images build succeeded
⌛ Publishing Bicep Recipes for functional tests...
✅ Recipe publishing succeeded
⌛ Starting corerp-cloud functional tests...
⌛ Starting ucp-cloud functional tests...
✅ ucp-cloud functional tests succeeded
✅ corerp-cloud functional tests succeeded

@radius-functional-tests
Copy link

radius-functional-tests bot commented Jan 24, 2025

Radius functional test overview

🔍 Go to test action run

Name Value
Repository nithyatsu/radius
Commit ref 2434061
Unique ID funcbbf2770f0e
Image tag pr-funcbbf2770f0e
Click here to see the list of tools in the current test run
  • gotestsum 1.12.0
  • KinD: v0.20.0
  • Dapr:
  • Azure KeyVault CSI driver: 1.4.2
  • Azure Workload identity webhook: 1.3.0
  • Bicep recipe location ghcr.io/radius-project/dev/test/testrecipes/test-bicep-recipes/<name>:pr-funcbbf2770f0e
  • Terraform recipe location http://tf-module-server.radius-test-tf-module-server.svc.cluster.local/<name>.zip (in cluster)
  • applications-rp test image location: ghcr.io/radius-project/dev/applications-rp:pr-funcbbf2770f0e
  • dynamic-rp test image location: ghcr.io/radius-project/dev/dynamic-rp:pr-funcbbf2770f0e
  • controller test image location: ghcr.io/radius-project/dev/controller:pr-funcbbf2770f0e
  • ucp test image location: ghcr.io/radius-project/dev/ucpd:pr-funcbbf2770f0e
  • deployment-engine test image location: ghcr.io/radius-project/deployment-engine:latest

Test Status

⌛ Building Radius and pushing container images for functional tests...
✅ Container images build succeeded
⌛ Publishing Bicep Recipes for functional tests...
✅ Recipe publishing succeeded
⌛ Starting ucp-cloud functional tests...
✅ ucp-cloud functional tests succeeded
✅ corerp-cloud functional tests succeeded

@nithyatsu nithyatsu marked this pull request as ready for review January 24, 2025 22:54
@nithyatsu nithyatsu requested review from a team as code owners January 24, 2025 22:54
@radius-functional-tests
Copy link

radius-functional-tests bot commented Jan 24, 2025

Radius functional test overview

🔍 Go to test action run

Name Value
Repository nithyatsu/radius
Commit ref f21c211
Unique ID func5b15493f3d
Image tag pr-func5b15493f3d
Click here to see the list of tools in the current test run
  • gotestsum 1.12.0
  • KinD: v0.20.0
  • Dapr:
  • Azure KeyVault CSI driver: 1.4.2
  • Azure Workload identity webhook: 1.3.0
  • Bicep recipe location ghcr.io/radius-project/dev/test/testrecipes/test-bicep-recipes/<name>:pr-func5b15493f3d
  • Terraform recipe location http://tf-module-server.radius-test-tf-module-server.svc.cluster.local/<name>.zip (in cluster)
  • applications-rp test image location: ghcr.io/radius-project/dev/applications-rp:pr-func5b15493f3d
  • dynamic-rp test image location: ghcr.io/radius-project/dev/dynamic-rp:pr-func5b15493f3d
  • controller test image location: ghcr.io/radius-project/dev/controller:pr-func5b15493f3d
  • ucp test image location: ghcr.io/radius-project/dev/ucpd:pr-func5b15493f3d
  • deployment-engine test image location: ghcr.io/radius-project/deployment-engine:latest

Test Status

⌛ Building Radius and pushing container images for functional tests...
✅ Container images build succeeded
⌛ Publishing Bicep Recipes for functional tests...
✅ Recipe publishing succeeded
⌛ Starting ucp-cloud functional tests...
⌛ Starting corerp-cloud functional tests...
✅ ucp-cloud functional tests succeeded
✅ corerp-cloud functional tests succeeded

@radius-functional-tests
Copy link

radius-functional-tests bot commented Jan 24, 2025

Radius functional test overview

🔍 Go to test action run

Name Value
Repository nithyatsu/radius
Commit ref afa6423
Unique ID func9145f55183
Image tag pr-func9145f55183
Click here to see the list of tools in the current test run
  • gotestsum 1.12.0
  • KinD: v0.20.0
  • Dapr:
  • Azure KeyVault CSI driver: 1.4.2
  • Azure Workload identity webhook: 1.3.0
  • Bicep recipe location ghcr.io/radius-project/dev/test/testrecipes/test-bicep-recipes/<name>:pr-func9145f55183
  • Terraform recipe location http://tf-module-server.radius-test-tf-module-server.svc.cluster.local/<name>.zip (in cluster)
  • applications-rp test image location: ghcr.io/radius-project/dev/applications-rp:pr-func9145f55183
  • dynamic-rp test image location: ghcr.io/radius-project/dev/dynamic-rp:pr-func9145f55183
  • controller test image location: ghcr.io/radius-project/dev/controller:pr-func9145f55183
  • ucp test image location: ghcr.io/radius-project/dev/ucpd:pr-func9145f55183
  • deployment-engine test image location: ghcr.io/radius-project/deployment-engine:latest

Test Status

⌛ Building Radius and pushing container images for functional tests...
✅ Container images build succeeded
⌛ Publishing Bicep Recipes for functional tests...
✅ Recipe publishing succeeded
⌛ Starting ucp-cloud functional tests...
⌛ Starting corerp-cloud functional tests...
✅ ucp-cloud functional tests succeeded
✅ corerp-cloud functional tests succeeded

pkg/cli/clients/management.go Show resolved Hide resolved
pkg/cli/clients/management.go Show resolved Hide resolved
pkg/cli/clients/management.go Show resolved Hide resolved
}

resourceTypeNames := []string{}
for _, summary := range resourceProviderSummaries {
Copy link
Contributor

Choose a reason for hiding this comment

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

Renaming summary to resourceProvider would make things clearer in the code below.

return nil, err
}

ResourceTypesList, err := amc.ListAllResourceTypesNames(ctx, "local")
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
ResourceTypesList, err := amc.ListAllResourceTypesNames(ctx, "local")
resourceTypesList, err := amc.ListAllResourceTypesNames(ctx, "local")

variables should start with lower case letters

pkg/cli/clients/management_test.go Show resolved Hide resolved
pkg/cli/clients/management_test.go Show resolved Hide resolved
} else if len(foundTypes) > 1 {
return "", fmt.Errorf("multiple resource types match '%s'. Please specify the full resource type and try again:\n\n%s\n",
resourceTypeName, strings.Join(foundTypes, "\n"))
if !strings.Contains(resourceTypeName, "/") {
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 the only check for the resource type?

rad resource create 'Applications.Core/containers' mycontainer -f /path/to/input.json`,
rad resource create 'applications.core/containers' mycontainer -f /path/to/input.json`,
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we only support the lower case now? Why not both?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

No, the types are stored normalized. I was just trying keep it consistent in docs. we soecify only the type name for creation so I have updated this text.

nithya@MacBook-Pro radius % rad resource-provider show applications.core  
RESOURCE           TYPE      STATE
Applications.Core 

pkg/cli/cmd/resource/list/list.go Show resolved Hide resolved
pkg/cli/clients/management.go Show resolved Hide resolved
pkg/cli/clients/management.go Show resolved Hide resolved
pkg/cli/clients/management.go Show resolved Hide resolved
pkg/cli/clients/management.go Show resolved Hide resolved
pkg/cli/clients/management_test.go Show resolved Hide resolved
pkg/cli/cmd/resource/delete/delete.go Show resolved Hide resolved
@@ -44,7 +44,7 @@ func Test_Validate(t *testing.T) {
testcases := []radcli.ValidateInput{
{
Name: "Valid Delete Command",
Copy link
Contributor

Choose a reason for hiding this comment

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

Can we add a test for delete with unsupported resource type?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

looks like all the rad resource commands will need a test for resource type and provider's existence before processing the request. Is it OK to create a ticket to address this as another task?

Comment on lines +150 to +159
parts := strings.Split(r.ResourceType, "/")
if len(parts) != 2 {
return clierrors.Message("Invalid resource type %q. Expected format: '<provider>/<type>'", r.ResourceType)
}
resourceProviderNamespace := parts[0]
resourceTypeSuffix := parts[1]
_, err = common.GetResourceTypeDetails(ctx, resourceProviderNamespace, resourceTypeSuffix, client)
if err != nil {
return err
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Why is this needed in addtion to RequireResourceType?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

the user enters a fully qualified name, liek applications.core/container, which is checked for correctness. But a lot of api calls need one of the provider or type. So we are having to split it again. Mostly this call is used in rad resource commands and I would like to talk a bit more about it, to discuss introducing another function RequireFullyQualifiedResourceType which can return in desired format.

Comment on lines -99 to -105
Name: "List Command with ambiguous args",
Input: []string{"secretStores"},
ExpectedValid: false,
ConfigHolder: framework.ConfigHolder{
ConfigFilePath: "",
Config: configWithWorkspace,
},
Copy link
Contributor

Choose a reason for hiding this comment

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

What did we change to remove this scenario?

Comment on lines +86 to +95
if strings.EqualFold(*resources[0].Type, "Applications.Datastores/mongoDatabases") {
require.Equal(t, mongoDBName, *resources[0].Name)
require.Equal(t, "Applications.Core/containers", *resources[1].Type)
require.Equal(t, containerName, *resources[1].Name)
} else {
require.Equal(t, "Applications.Core/containers", *resources[0].Type)
require.Equal(t, containerName, *resources[0].Name)
require.Equal(t, mongoDBName, *resources[1].Name)
require.Equal(t, "Applications.Datastores/mongoDatabases", *resources[1].Type)
}
Copy link
Contributor

Choose a reason for hiding this comment

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

This is interesting.. how was the order guaranteed before?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I am not sure .. but when I debuged I noticed only the order was different when it failed.

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.

3 participants