Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions apis/resources/v1alpha1/domain_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ type DomainStatus struct {
// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name"
// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp"
// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,cloudfoundry}
// +kubebuilder:validation:XValidation:rule="self.spec.managementPolicies == ['Observe'] || has(self.spec.forProvider.name) || (has(self.spec.forProvider.subDomain) && has(self.spec.forProvider.domain))",message="either name or domain and subDomain must be set"
Comment thread
SatabdiG marked this conversation as resolved.
Outdated
type Domain struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Expand Down
5 changes: 4 additions & 1 deletion apis/resources/v1alpha1/orgmember_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ type OrgMembersParameters struct {
OrgReference `json:",inline"`

// (String) Org role type to assign to members; see valid role types https://v3-apidocs.cloudfoundry.org/version/3.127.0/index.html#valid-role-types
// +kubebuilder:validation:Required
// +kubebuilder:validation:Optional
// +kubebuilder:validation:Enum=User;Auditor;Manager;BillingManager;Users;Auditors;Managers;BillingManagers
RoleType string `json:"roleType"`
}
Expand All @@ -38,6 +38,9 @@ type OrgMembersStatus struct {
// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp"
// +kubebuilder:subresource:status
// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,cloudfoundry}
// +kubebuilder:validation:XValidation:rule="self.spec.managementPolicies == ['Observe'] || has(self.spec.forProvider.roleType)",message="roleType is required"
// +kubebuilder:validation:XValidation:rule="self.spec.managementPolicies == ['Observe'] || (has(self.spec.forProvider.orgName) || has(self.spec.forProvider.orgRef) || has(self.spec.forProvider.orgSelector))",message="OrgReference is required: exactly one of orgName, orgRef, or orgSelector must be set"
// +kubebuilder:validation:XValidation:rule="self.spec.managementPolicies == ['Observe'] || (has(self.spec.forProvider.members) && self.spec.forProvider.members.size() >= 1)",message="Members validation: at least one member must be set"
type OrgMembers struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Expand Down
5 changes: 3 additions & 2 deletions apis/resources/v1alpha1/orgrole_types.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions apis/resources/v1alpha1/role_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ type RoleAssignments struct {
// MemberList includes a list of members and an enforcement policy for role assignment.
type MemberList struct {
// (List of Attributes) List of members (usernames) to assign as org members with the specified role type. Defaults to empty list.
// +kubebuilder:validation:Optional
Members []*Member `json:"members"`

// (String) Set to `Lax` to enforce that the role is assigned to AT LEAST those members as defined in this CR. Set to `Strict` to enforce that the role is assigned to EXACTLY those members as defined in this CR and any other members will be removed. Defaults to `Lax`.
Expand Down
10 changes: 6 additions & 4 deletions apis/resources/v1alpha1/servicecredentialbinding_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,8 @@ type ServiceCredentialBindingObservation struct {
RetiredKeys []*SCBResource `json:"retiredKeys,omitempty"`
}

// +kubebuilder:validation:XValidation:rule="!(has(self.type) && self.type == 'app') || !has(self.rotation)",message="rotation cannot be enabled when type is app"
// +kubebuilder:validation:XValidation:rule="!(has(self.type) && self.type == 'key') || has(self.name)",message="name is required when type is key"
// +kubebuilder:validation:XValidation:rule="!(has(self.type) && self.type == 'app') || has(self.app) || has(self.appRef) || has(self.appSelector)",message="app, appRef, or appSelector is required when type is app"
type ServiceCredentialBindingParameters struct {
// (String) The type of the service credential binding in Cloud Foundry. Either "key" or "app".
// +kubebuilder:validation:Required
// +kubebuilder:validation:Enum=key;app
// +kubebuilder:default=key
Type string `json:"type,omitempty"`
Expand Down Expand Up @@ -122,6 +118,12 @@ type SCBResource struct {
// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp"
// +kubebuilder:subresource:status
// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,cloudfoundry}
// +kubebuilder:validation:XValidation:rule="self.spec.managementPolicies == ['Observe'] || has(self.spec.forProvider.type)",message="type is required"
// +kubebuilder:validation:XValidation:rule="self.spec.managementPolicies == ['Observe'] || !(has(self.spec.forProvider.type) && self.spec.forProvider.type == 'key') || has(self.spec.forProvider.name)",message="name is required when type is key"
// +kubebuilder:validation:XValidation:rule="self.spec.managementPolicies == ['Observe'] || !(has(self.spec.forProvider.type) && self.spec.forProvider.type == 'app') || !has(self.spec.forProvider.rotation)",message="rotation cannot be enabled when type is app"
// +kubebuilder:validation:XValidation:rule="self.spec.managementPolicies == ['Observe'] || !(has(self.spec.forProvider.type) && self.spec.forProvider.type == 'app') || (has(self.spec.forProvider.app) || has(self.spec.forProvider.appRef) || has(self.spec.forProvider.appSelector))",message="AppReference is required: exactly one of app, appRef, or appSelector must be set if type is app"
// +kubebuilder:validation:XValidation:rule="self.spec.managementPolicies == ['Observe'] || (has(self.spec.forProvider.serviceInstance) || has(self.spec.forProvider.serviceInstanceRef) || has(self.spec.forProvider.serviceInstanceSelector))",message="ServiceInstanceReference is required: exactly one of serviceInstance, serviceInstanceRef, or serviceInstanceSelector must be set"
// +kubebuilder:validation:XValidation:rule="[has(self.spec.forProvider.parameters), has(self.spec.forProvider.paramsSecretRef)].filter(x, x).size() <= 1",message="ParametersReference validation:either parameters or paramsSecretRef may be set but not both"
type ServiceCredentialBinding struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Expand Down
9 changes: 6 additions & 3 deletions apis/resources/v1alpha1/serviceinstance_types.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion apis/resources/v1alpha1/space_types.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions apis/resources/v1alpha1/spacemember_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ type SpaceMembersParameters struct {
SpaceReference `json:",inline"`

// (String) Space role type to assign to members; see valid role types https://v3-apidocs.cloudfoundry.space/version/3.127.0/index.html#valid-role-types
// +kubebuilder:validation:Optional
// +kubebuilder:validation:Enum=Developer;Auditor;Manager;Supporter;Developers;Auditors;Managers;Supporters
// +kubebuilder:validation:Required
RoleType string `json:"roleType"`

// (Attributes) List of members and enforcement policy for role assignment.
Expand Down Expand Up @@ -43,8 +43,9 @@ type SpaceMembersStatus struct {
// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp"
// +kubebuilder:subresource:status
// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,cloudfoundry}
// +kubebuilder:validation:XValidation:rule="self.spec.managementPolicies == ['Observe'] || has(self.spec.forProvider.roleType)",message="roleType is required"
// +kubebuilder:validation:XValidation:rule="self.spec.managementPolicies == ['Observe'] || (has(self.spec.forProvider.spaceName) || has(self.spec.forProvider.spaceRef) || has(self.spec.forProvider.spaceSelector))",message="SpaceReference is required: exactly one of spaceName, spaceRef, or spaceSelector must be set"
// +kubebuilder:validation:XValidation:rule="[has(self.spec.forProvider.spaceName), has(self.spec.forProvider.spaceRef), has(self.spec.forProvider.spaceSelector)].filter(x, x).size() <= 1",message="SpaceReference validation: only one of spaceName, spaceRef, or spaceSelector can be set"
// +kubebuilder:validation:XValidation:rule="self.spec.managementPolicies == ['Observe'] || (has(self.spec.forProvider.members) && self.spec.forProvider.members.size() >= 1)",message="Members validation: at least one member must be set"
type SpaceMembers struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Expand Down
5 changes: 2 additions & 3 deletions apis/resources/v1alpha1/spacerole_types.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions package/crds/cloudfoundry.crossplane.io_domains.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -494,6 +494,10 @@ spec:
required:
- spec
type: object
x-kubernetes-validations:
- message: either name or domain and subDomain must be set
rule: self.spec.managementPolicies == ['Observe'] || has(self.spec.forProvider.name)
|| (has(self.spec.forProvider.subDomain) && has(self.spec.forProvider.domain))
served: true
storage: true
subresources:
Expand Down
13 changes: 10 additions & 3 deletions package/crds/cloudfoundry.crossplane.io_orgmembers.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -198,9 +198,6 @@ spec:
- Managers
- BillingManagers
type: string
required:
- members
- roleType
type: object
managementPolicies:
default:
Expand Down Expand Up @@ -439,6 +436,16 @@ spec:
required:
- spec
type: object
x-kubernetes-validations:
- message: roleType is required
rule: self.spec.managementPolicies == ['Observe'] || has(self.spec.forProvider.roleType)
- message: 'OrgReference is required: exactly one of orgName, orgRef, or orgSelector
must be set'
rule: self.spec.managementPolicies == ['Observe'] || (has(self.spec.forProvider.orgName)
|| has(self.spec.forProvider.orgRef) || has(self.spec.forProvider.orgSelector))
- message: 'Members validation: at least one member must be set'
rule: self.spec.managementPolicies == ['Observe'] || (has(self.spec.forProvider.members)
&& self.spec.forProvider.members.size() >= 1)
served: true
storage: true
subresources:
Expand Down
12 changes: 9 additions & 3 deletions package/crds/cloudfoundry.crossplane.io_orgroles.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -176,9 +176,6 @@ spec:
description: (String) The username of the Cloud Foundry user to
assign the role to.
type: string
required:
- type
- username
type: object
managementPolicies:
default:
Expand Down Expand Up @@ -435,6 +432,15 @@ spec:
required:
- spec
type: object
x-kubernetes-validations:
- message: type is required
rule: self.spec.managementPolicies == ['Observe'] || has(self.spec.forProvider.type)
- message: username is required
rule: self.spec.managementPolicies == ['Observe'] || has(self.spec.forProvider.username)
- message: 'OrgReference is required: exactly one of orgName, orgRef, or orgSelector
must be set'
rule: self.spec.managementPolicies == ['Observe'] || (has(self.spec.forProvider.orgName)
|| has(self.spec.forProvider.orgRef) || has(self.spec.forProvider.orgSelector))
served: true
storage: true
subresources:
Expand Down
Loading
Loading