Skip to content

Keystone: User Controller#657

Open
dlaw4608 wants to merge 2 commits intok-orc:mainfrom
dlaw4608:keystone_user
Open

Keystone: User Controller#657
dlaw4608 wants to merge 2 commits intok-orc:mainfrom
dlaw4608:keystone_user

Conversation

@dlaw4608
Copy link
Contributor

Fixes #583
Add Support for the Identity service's User resource in ORC

CLI Command:
go run ./cmd/scaffold-controller -interactive=false \
 -kind User \
 -gophercloud-client NewIdentityV3 \
 -gophercloud-module github.com/gophercloud/gophercloud/v2/openstack/identity/v3/users \
 -import-dependency Domain \
 -optional-create-dependency Domain

Signed-off-by: Daniel Lawton <dlawton@redhat.com>
@github-actions github-actions bot added the semver:major Breaking change label Jan 28, 2026
@dlaw4608 dlaw4608 force-pushed the keystone_user branch 2 times, most recently from 23295c5 to dcfe645 Compare January 29, 2026 19:28
@dlaw4608 dlaw4608 marked this pull request as ready for review January 29, 2026 19:32
- E2E tests included
- API configured
- Controller

Note: small fix made to group-import test included
Signed-off-by: Daniel Lawton <dlawton@redhat.com>
Copy link
Contributor

@winiciusallan winiciusallan left a comment

Choose a reason for hiding this comment

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

Hi, @dlaw4608, that was a great job!

Left a few comments about using a Project object instead of the ID directly, LMK what you think.

// +kubebuilder:validation:MinLength:=1
// +kubebuilder:validation:MaxLength:=255
// +optional
DefaultProjectID *string `json:"defaultProjectID,omitempty"`
Copy link
Contributor

Choose a reason for hiding this comment

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

Isn't it better to use a ProjectRef here so we can better control the resource?

Suggested change
DefaultProjectID *string `json:"defaultProjectID,omitempty"`
DefaultProjectID *ProjectRef `json:"defaultProjectID,omitempty"`

Copy link
Collaborator

Choose a reason for hiding this comment

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

It should indeed be a reference, but would rather be in the form:

Suggested change
DefaultProjectID *string `json:"defaultProjectID,omitempty"`
DefaultProjectRef *KubernetesNameRef `json:"defaultProjectRef,omitempty"`

See https://k-orc.cloud/development/architecture/#api-design-philosophy.

I'd like to add a lint rule to flag these.

Also, since this is an optional dependency for your controller, you should have run the scaffolding tool with -optional-create-dependency Project.

}
}

func handleDefaultProjectIDUpdate(updateOpts *users.UpdateOpts, resource *resourceSpecT, osResource *osResourceT) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Possibly change this to use a reference instead of an ID as suggested above.

Comment on lines +29 to +33





Copy link
Contributor

Choose a reason for hiding this comment

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

Blank lines at the end. I would remove them to make it cleaner.

Comment on lines +7 to +8
resource:
name: user-create-minimal
Copy link
Contributor

Choose a reason for hiding this comment

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

I would also add enabled: true here.

// +kubebuilder:validation:MinLength:=1
// +kubebuilder:validation:MaxLength:=255
// +optional
DefaultProjectID *string `json:"defaultProjectID,omitempty"`
Copy link
Collaborator

Choose a reason for hiding this comment

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

It should indeed be a reference, but would rather be in the form:

Suggested change
DefaultProjectID *string `json:"defaultProjectID,omitempty"`
DefaultProjectRef *KubernetesNameRef `json:"defaultProjectRef,omitempty"`

See https://k-orc.cloud/development/architecture/#api-design-philosophy.

I'd like to add a lint rule to flag these.

Also, since this is an optional dependency for your controller, you should have run the scaffolding tool with -optional-create-dependency Project.

// +kubebuilder:validation:MinLength:=1
// +kubebuilder:validation:MaxLength:=255
// +optional
Password *string `json:"password,omitempty"`
Copy link
Collaborator

Choose a reason for hiding this comment

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

This must be stored in a secret. See how we do it for user data in the server controller.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

semver:major Breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Keystone User Controller

3 participants