🌱 ORC: Generate common parts of resource API#2203
🌱 ORC: Generate common parts of resource API#2203k8s-ci-robot merged 3 commits intokubernetes-sigs:mainfrom
Conversation
✅ Deploy Preview for kubernetes-sigs-cluster-api-openstack ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
lentzi90
left a comment
There was a problem hiding this comment.
/approve
(tiny typo below)
| // +kubebuilder:validation:Format:=uuid | ||
| ID *string `json:"id,omitempty"` | ||
|
|
||
| // Filter contains an resource query which is expected to return a single |
There was a problem hiding this comment.
| // Filter contains an resource query which is expected to return a single | |
| // Filter contains a resource query which is expected to return a single |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: lentzi90 The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
pierreprinetti
left a comment
There was a problem hiding this comment.
This is a great first step. Thank you for setting up this generator! I hope its life will be glorious and short, until we can use generics in the API.
| // Import refers to an existing ORC object which will be imported instead of | ||
| // creating a new resource. |
There was a problem hiding this comment.
An existing ORC object? Isn't this the ORC object?
| // Import refers to an existing ORC object which will be imported instead of | |
| // creating a new resource. | |
| // Import refers to an existing OpenStack resource which will be imported instead of | |
| // creating a new one. |
| Filter *{{ .Name }}Filter `json:"filter,omitempty"` | ||
| } | ||
|
|
||
| // {{ .Name }}Spec defines the desired state of a ORC object. |
| // | ||
| // Resource may not be specified if the management policy is `unmanaged`. | ||
| // | ||
| // Resource must be specified when the management policy is `managed`. |
There was a problem hiding this comment.
Unless an arcane grammar rule applies here, can we use if for both cases for consistency?
| // Resource must be specified when the management policy is `managed`. | |
| // Resource must be specified if the management policy is `managed`. |
|
|
||
| // ManagementPolicy defines how ORC will treat the object. Valid values are | ||
| // `managed`: ORC will create, update, and delete the resource; `unmanaged`: | ||
| // ORC will import an existing resource, and will not apply updates to it or |
There was a problem hiding this comment.
Is "nor" a word you'd use here?
| // ORC will import an existing resource, and will not apply updates to it or | |
| // ORC will import an existing resource, and will not apply updates to it nor |
There was a problem hiding this comment.
Honestly I can't think of a practical case when I'd use 'nor' outside of formal logic except: neither this not that. It would be weird here.
| // Progressing indicates the state of the OpenStack resource not currently | ||
| // reflect the desired state, but that reconciliation is progressing. |
There was a problem hiding this comment.
Is it just me or this sentence reads weird?
| APIVersion: "v1alpha1", | ||
| SpecExtraValidations: []specExtraValidation{ | ||
| { | ||
| Rule: "!has(self.__import__) ? has(self.resource.content) : true", |
There was a problem hiding this comment.
This is a good first step, but going forward we probably want a more structured way to define required fields in the spec...
There was a problem hiding this comment.
This particular one is special because the Image controller is a snowflake. This is a controller-specific validation at the spec level. I don't expect this to be a common pattern.
codegen depends on interfaces generated by controller-gen. However, controller-gen will fail during code inspection if the applyconfiguration package does not already exist because it is imported by the code being inspected. This is a bootstrapping problem. We ensure the applyconfiguration package exists by adding a doc.go.
5d4c506 to
d5e31bb
Compare
|
/lgtm |
|
Just discovered a templating bug in this PR while adding subnet: the spec ends up on the same line as the previous validation. Will fix. |
d5e31bb to
e4e85c3
Compare
|
/hold cancel |
|
/lgtm |
Adds a very simple code generator which simply uses a go template to generate the common parts of an ORC resource API.
My preference was to do this with generics, but for now this breaks controller-tools: kubernetes-sigs/controller-tools#844
/hold