-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Split security group rules on its own CRD, controller and api
- Loading branch information
1 parent
da5512a
commit 54e2ccd
Showing
22 changed files
with
3,188 additions
and
619 deletions.
There are no files selected for viewing
59 changes: 59 additions & 0 deletions
59
charts/region/crds/region.unikorn-cloud.org_openstacksecuritygrouprules.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
--- | ||
apiVersion: apiextensions.k8s.io/v1 | ||
kind: CustomResourceDefinition | ||
metadata: | ||
annotations: | ||
controller-gen.kubebuilder.io/version: v0.16.1 | ||
name: openstacksecuritygrouprules.region.unikorn-cloud.org | ||
spec: | ||
group: region.unikorn-cloud.org | ||
names: | ||
categories: | ||
- unikorn | ||
kind: OpenstackSecurityGroupRule | ||
listKind: OpenstackSecurityGroupRuleList | ||
plural: openstacksecuritygrouprules | ||
singular: openstacksecuritygrouprule | ||
scope: Namespaced | ||
versions: | ||
- additionalPrinterColumns: | ||
- jsonPath: .metadata.creationTimestamp | ||
name: age | ||
type: date | ||
name: v1alpha1 | ||
schema: | ||
openAPIV3Schema: | ||
description: OpenstackSecurityGroupRule 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: | ||
securityGroupRuleID: | ||
description: SecurityGroupRuleID is the security group rule ID. | ||
type: string | ||
type: object | ||
status: | ||
type: object | ||
required: | ||
- spec | ||
type: object | ||
served: true | ||
storage: true | ||
subresources: {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
156 changes: 156 additions & 0 deletions
156
charts/region/crds/region.unikorn-cloud.org_securitygrouprules.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,156 @@ | ||
--- | ||
apiVersion: apiextensions.k8s.io/v1 | ||
kind: CustomResourceDefinition | ||
metadata: | ||
annotations: | ||
controller-gen.kubebuilder.io/version: v0.16.1 | ||
name: securitygrouprules.region.unikorn-cloud.org | ||
spec: | ||
group: region.unikorn-cloud.org | ||
names: | ||
categories: | ||
- unikorn | ||
kind: SecurityGroupRule | ||
listKind: SecurityGroupRuleList | ||
plural: securitygrouprules | ||
singular: securitygrouprule | ||
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: SecurityGroupRule defines a security group rule beloning to a | ||
security group. | ||
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: | ||
cidr: | ||
description: CIDR is the CIDR block to allow traffic from. | ||
pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\/(?:3[0-2]|[1-2]?[0-9])$ | ||
type: string | ||
direction: | ||
description: Direction is the direction of the rule. | ||
enum: | ||
- ingress | ||
- egress | ||
type: string | ||
pause: | ||
description: Pause, if true, will inhibit reconciliation. | ||
type: boolean | ||
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 | ||
type: object | ||
x-kubernetes-validations: | ||
- message: at least one of number or range must be defined | ||
rule: (has(self.number) || has(self.range)) | ||
protocol: | ||
description: Protocol is the protocol of the rule. | ||
enum: | ||
- tcp | ||
- udp | ||
type: string | ||
required: | ||
- cidr | ||
- direction | ||
- port | ||
- protocol | ||
type: object | ||
status: | ||
properties: | ||
conditions: | ||
description: Current service state of a security group rule. | ||
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: {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
/* | ||
Copyright 2024 the Unikorn Authors. | ||
Licensed under the Apache License, Version 2.0 (the "License"); | ||
you may not use this file except in compliance with the License. | ||
You may obtain a copy of the License at | ||
http://www.apache.org/licenses/LICENSE-2.0 | ||
Unless required by applicable law or agreed to in writing, software | ||
distributed under the License is distributed on an "AS IS" BASIS, | ||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
See the License for the specific language governing permissions and | ||
limitations under the License. | ||
*/ | ||
|
||
package main | ||
|
||
import ( | ||
"github.com/unikorn-cloud/core/pkg/manager" | ||
securitygrouprule "github.com/unikorn-cloud/region/pkg/managers/security-group-rule" | ||
) | ||
|
||
func main() { | ||
manager.Run(&securitygrouprule.Factory{}) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.