From 26b7f16bfc47feccdad7d742de3f4fcdb363bfbd Mon Sep 17 00:00:00 2001 From: Ricardo R Date: Mon, 21 Oct 2024 22:48:21 +1300 Subject: [PATCH] Security group only --- ...orn-cloud.org_openstacksecuritygroups.yaml | 59 ++++++ ...gion.unikorn-cloud.org_securitygroups.yaml | 174 ++++++++++++++++++ pkg/apis/unikorn/v1alpha1/types.go | 76 -------- 3 files changed, 233 insertions(+), 76 deletions(-) create mode 100644 charts/region/crds/region.unikorn-cloud.org_openstacksecuritygroups.yaml create mode 100644 charts/region/crds/region.unikorn-cloud.org_securitygroups.yaml diff --git a/charts/region/crds/region.unikorn-cloud.org_openstacksecuritygroups.yaml b/charts/region/crds/region.unikorn-cloud.org_openstacksecuritygroups.yaml new file mode 100644 index 0000000..e30ec03 --- /dev/null +++ b/charts/region/crds/region.unikorn-cloud.org_openstacksecuritygroups.yaml @@ -0,0 +1,59 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.1 + name: openstacksecuritygroups.region.unikorn-cloud.org +spec: + group: region.unikorn-cloud.org + names: + categories: + - unikorn + kind: OpenstackSecurityGroup + listKind: OpenstackSecurityGroupList + plural: openstacksecuritygroups + singular: openstacksecuritygroup + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .metadata.creationTimestamp + name: age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: OpenstackSecurityGroup has no controller, its a database record + of state. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + properties: + securityGroupID: + description: SecurityGroupID is the security group ID. + type: string + type: object + status: + type: object + required: + - spec + type: object + served: true + storage: true + subresources: {} diff --git a/charts/region/crds/region.unikorn-cloud.org_securitygroups.yaml b/charts/region/crds/region.unikorn-cloud.org_securitygroups.yaml new file mode 100644 index 0000000..b33a882 --- /dev/null +++ b/charts/region/crds/region.unikorn-cloud.org_securitygroups.yaml @@ -0,0 +1,174 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.1 + name: securitygroups.region.unikorn-cloud.org +spec: + group: region.unikorn-cloud.org + names: + categories: + - unikorn + kind: SecurityGroup + listKind: SecurityGroupList + plural: securitygroups + singular: securitygroup + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=="Available")].reason + name: status + type: string + - jsonPath: .metadata.creationTimestamp + name: age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: SecurityGroup defines a security group beloning to an identity. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + properties: + ingress: + description: Ingress are the ingress rules. + items: + properties: + port: + description: Port is the port or range of ports. + properties: + number: + description: Number is the port number. + type: integer + range: + description: Range is the port range. + properties: + end: + description: End is the end of the range. + maximum: 65535 + type: integer + start: + description: Start is the start of the range. + minimum: 1 + type: integer + required: + - end + - start + type: object + required: + - number + - range + type: object + protocol: + description: Protocol is the protocol of the rule. + enum: + - tcp + - udp + type: string + required: + - port + - protocol + type: object + type: array + pause: + description: Pause, if true, will inhibit reconciliation. + type: boolean + provider: + description: Provider defines the provider type. + enum: + - openstack + type: string + tags: + description: |- + Tags are an abitrary list of key/value pairs that a client + may populate to store metadata for the resource. + items: + description: Tag is an arbirary key/value. + properties: + name: + description: Name of the tag. + type: string + value: + description: Value of the tag. + type: string + required: + - name + - value + type: object + type: array + required: + - provider + type: object + status: + properties: + conditions: + description: Current service state of a cluster manager. + items: + description: |- + Condition is a generic condition type for use across all resource types. + It's generic so that the underlying controller-manager functionality can + be shared across all resources. + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + message: + description: Human-readable message indicating details about + last transition. + type: string + reason: + description: Unique, one-word, CamelCase reason for the condition's + last transition. + enum: + - Provisioning + - Provisioned + - Cancelled + - Errored + - Deprovisioning + - Deprovisioned + type: string + status: + description: |- + Status is the status of the condition. + Can be True, False, Unknown. + type: string + type: + description: Type is the type of the condition. + enum: + - Available + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/pkg/apis/unikorn/v1alpha1/types.go b/pkg/apis/unikorn/v1alpha1/types.go index a143f67..f25b0f1 100644 --- a/pkg/apis/unikorn/v1alpha1/types.go +++ b/pkg/apis/unikorn/v1alpha1/types.go @@ -615,79 +615,3 @@ type OpenstackSecurityGroupSpec struct { type OpenstackSecurityGroupStatus struct { } - -// ServerList is a typed list of servers. -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -type ServerList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []Server `json:"items"` -} - -// Server defines a server beloning to an identity. -// +genclient -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// +kubebuilder:resource:scope=Namespaced,categories=unikorn -// +kubebuilder:subresource:status -// +kubebuilder:printcolumn:name="status",type="string",JSONPath=".status.conditions[?(@.type==\"Available\")].reason" -// +kubebuilder:printcolumn:name="age",type="date",JSONPath=".metadata.creationTimestamp" -type Server struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - Spec ServerSpec `json:"spec"` - Status ServerStatus `json:"status,omitempty"` -} - -type ServerSpec struct { - // Pause, if true, will inhibit reconciliation. - Pause bool `json:"pause,omitempty"` - // Tags are an abitrary list of key/value pairs that a client - // may populate to store metadata for the resource. - Tags TagList `json:"tags,omitempty"` - // Provider defines the provider type. - Provider Provider `json:"provider"` - // FlavorID is the flavor ID. - FlavorID string `json:"flavorID"` - // ImageID is the image ID. - ImageID string `json:"imageID"` - // PublicIPAllocation is the public IP allocation. - PublicIPAllocation *ServerPublicIPAllocation `json:"publicIPAllocation"` - // SecurityGroups are the security groups. - SecurityGroups []string `json:"securityGroups"` -} - -type ServerPublicIPAllocation struct { - // Enabled is a flag to enable public IP allocation. - Enabled bool `json:"enabled"` -} - -type ServerStatus struct { - // Current service state of a cluster manager. - Conditions []unikornv1core.Condition `json:"conditions,omitempty"` -} - -// OpenstackServerList is a typed list of servers. -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -type OpenstackServerList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty"` - Items []OpenstackServer `json:"items"` -} - -// OpenstackServer has no controller, its a database record of state. -// +genclient -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// +kubebuilder:resource:scope=Namespaced,categories=unikorn -// +kubebuilder:printcolumn:name="age",type="date",JSONPath=".metadata.creationTimestamp" -type OpenstackServer struct { - metav1.TypeMeta `json:",inline"` - metav1.ObjectMeta `json:"metadata,omitempty"` - Spec OpenstackServerSpec `json:"spec"` - Status OpenstackServerStatus `json:"status,omitempty"` -} - -type OpenstackServerSpec struct { -} - -type OpenstackServerStatus struct { -}