Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(AwsVpcPeering): remote route table update strategy #1007

Merged
5 changes: 5 additions & 0 deletions api/cloud-control/v1beta1/vpcpeering_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,11 @@ func (b *VpcPeeringBuilder) WithLocalPeeringName(localPeeringName string) *VpcPe
return b
}

func (b *VpcPeeringBuilder) WithRemoteRouteTableUpdateStrategy(strategy AwsRouteTableUpdateStrategy) *VpcPeeringBuilder {
b.Obj.Spec.Details.RemoteRouteTableUpdateStrategy = strategy
return b
}

func (b *VpcPeeringBuilder) Build() *VpcPeering {
return &b.Obj
}
13 changes: 13 additions & 0 deletions api/cloud-control/v1beta1/vpcpeering_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,15 @@ const (
VpcPeeringRemoteNetworkField = ".spec.details.remoteNetwork"
)

type AwsRouteTableUpdateStrategy string

const (
AwsRouteTableUpdateStrategyAuto AwsRouteTableUpdateStrategy = "AUTO"
AwsRouteTableUpdateStrategyNone AwsRouteTableUpdateStrategy = "NONE"
AwsRouteTableUpdateStrategyMatched AwsRouteTableUpdateStrategy = "MATCHED"
AwsRouteTableUpdateStrategyUnmatched AwsRouteTableUpdateStrategy = "UNMATCHED"
)

// VpcPeeringSpec defines the desired state of VpcPeering
// +kubebuilder:validation:XValidation:rule=(has(self.vpcPeering) && !has(self.details) || !has(self.vpcPeering) && has(self.details)), message="Only one of details or vpcPeering can be specified."
type VpcPeeringSpec struct {
Expand Down Expand Up @@ -76,6 +85,10 @@ type VpcPeeringDetails struct {
ImportCustomRoutes bool `json:"importCustomRoutes,omitempty"`

DeleteRemotePeering bool `json:"deleteRemotePeering,omitempty"`

// +kubebuilder:default:=AUTO
// +kubebuilder:validation:Enum=AUTO;NONE;MATCHED;UNMATCHED
RemoteRouteTableUpdateStrategy AwsRouteTableUpdateStrategy `json:"remoteRouteTableUpdateStrategy,omitempty"`
}

// +kubebuilder:validation:MinProperties=1
Expand Down
14 changes: 14 additions & 0 deletions api/cloud-resources/v1beta1/awsvpcpeering_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,15 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

type AwsRouteTableUpdateStrategy string

const (
AwsRouteTableUpdateStrategyAuto AwsRouteTableUpdateStrategy = "AUTO"
AwsRouteTableUpdateStrategyNone AwsRouteTableUpdateStrategy = "NONE"
AwsRouteTableUpdateStrategyMatched AwsRouteTableUpdateStrategy = "MATCHED"
AwsRouteTableUpdateStrategyUnmatched AwsRouteTableUpdateStrategy = "UNMATCHED"
)

// AwsVpcPeeringSpec defines the desired state of AwsVpcPeering
type AwsVpcPeeringSpec struct {

Expand All @@ -37,6 +46,11 @@ type AwsVpcPeeringSpec struct {
RemoteAccountId string `json:"remoteAccountId"`

DeleteRemotePeering bool `json:"deleteRemotePeering,omitempty"`

// +kubebuilder:default:=AUTO
// +kubebuilder:validation:Enum=AUTO;NONE;MATCHED;UNMATCHED
// +kubebuilder:validation:XValidation:rule=(self == oldSelf), message="RemoteRouteTableUpdateStrategy is immutable."
RemoteRouteTableUpdateStrategy AwsRouteTableUpdateStrategy `json:"remoteRouteTableUpdateStrategy,omitempty"`
}

// AwsVpcPeeringStatus defines the observed state of AwsVpcPeering
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,14 @@ spec:
x-kubernetes-validations:
- message: Remote network name is required.
rule: (self.name != "")
remoteRouteTableUpdateStrategy:
default: AUTO
enum:
- AUTO
- NONE
- MATCHED
- UNMATCHED
type: string
required:
- localNetwork
- remoteNetwork
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.16.5
cloud-resources.kyma-project.io/version: v0.0.2
cloud-resources.kyma-project.io/version: v0.0.3
name: awsvpcpeerings.cloud-resources.kyma-project.io
spec:
group: cloud-resources.kyma-project.io
Expand Down Expand Up @@ -58,6 +58,17 @@ spec:
x-kubernetes-validations:
- message: RemoteRegion is immutable.
rule: (self == oldSelf)
remoteRouteTableUpdateStrategy:
default: AUTO
enum:
- AUTO
- NONE
- MATCHED
- UNMATCHED
type: string
x-kubernetes-validations:
- message: RemoteRouteTableUpdateStrategy is immutable.
rule: (self == oldSelf)
remoteVpcId:
type: string
x-kubernetes-validations:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,14 @@ spec:
x-kubernetes-validations:
- message: Remote network name is required.
rule: (self.name != "")
remoteRouteTableUpdateStrategy:
default: AUTO
enum:
- AUTO
- NONE
- MATCHED
- UNMATCHED
type: string
required:
- localNetwork
- remoteNetwork
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.16.5
cloud-resources.kyma-project.io/version: v0.0.2
cloud-resources.kyma-project.io/version: v0.0.3
name: awsvpcpeerings.cloud-resources.kyma-project.io
spec:
group: cloud-resources.kyma-project.io
Expand Down Expand Up @@ -58,6 +58,17 @@ spec:
x-kubernetes-validations:
- message: RemoteRegion is immutable.
rule: (self == oldSelf)
remoteRouteTableUpdateStrategy:
default: AUTO
enum:
- AUTO
- NONE
- MATCHED
- UNMATCHED
type: string
x-kubernetes-validations:
- message: RemoteRouteTableUpdateStrategy is immutable.
rule: (self == oldSelf)
remoteVpcId:
type: string
x-kubernetes-validations:
Expand Down
2 changes: 1 addition & 1 deletion config/patchAfterMakeManifests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.0.4
yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.0.3"' $SCRIPT_DIR/crd/bases/cloud-resources.kyma-project.io_gcpnfsvolumerestores.yaml
yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.0.4"' $SCRIPT_DIR/crd/bases/cloud-resources.kyma-project.io_gcpnfsbackupschedules.yaml
yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.0.3"' $SCRIPT_DIR/crd/bases/cloud-resources.kyma-project.io_gcpvpcpeerings.yaml
yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.0.2"' $SCRIPT_DIR/crd/bases/cloud-resources.kyma-project.io_awsvpcpeerings.yaml
yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.0.3"' $SCRIPT_DIR/crd/bases/cloud-resources.kyma-project.io_awsvpcpeerings.yaml
yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.0.1"' $SCRIPT_DIR/crd/bases/cloud-resources.kyma-project.io_cloudresources.yaml
yq -i '.metadata.annotations."cloud-resources.kyma-project.io/version" = "v0.0.3"' $SCRIPT_DIR/crd/bases/cloud-resources.kyma-project.io_awsnfsbackupschedules.yaml
Loading
Loading