Skip to content

Commit 9569937

Browse files
Merge pull request GoogleCloudPlatform#2820 from jasonvigil/fix-workstationcluster-types
fix: Make WorkstationCluster network/subnetwork required
2 parents f3a1083 + 556dfd1 commit 9569937

7 files changed

+36
-77
lines changed

apis/workstations/v1alpha1/workstationcluster_types.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,14 @@ type WorkstationClusterSpec struct {
5656

5757
// Immutable. Reference to the Compute Engine network in which instances associated
5858
// with this workstation cluster will be created.
59-
NetworkRef *refs.ComputeNetworkRef `json:"networkRef,omitempty"`
59+
// +required
60+
NetworkRef refs.ComputeNetworkRef `json:"networkRef"`
6061

6162
// Immutable. Reference to the Compute Engine subnetwork in which instances
6263
// associated with this workstation cluster will be created. Must be part of
6364
// the subnetwork specified for this workstation cluster.
64-
SubnetworkRef *refs.ComputeSubnetworkRef `json:"subnetworkRef,omitempty"`
65+
// +required
66+
SubnetworkRef refs.ComputeSubnetworkRef `json:"subnetworkRef"`
6567

6668
// Optional. Configuration for private workstation cluster.
6769
PrivateClusterConfig *WorkstationCluster_PrivateClusterConfig `json:"privateClusterConfig,omitempty"`

apis/workstations/v1alpha1/zz_generated.deepcopy.go

+2-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crds/resources/apiextensions.k8s.io_v1_customresourcedefinition_workstationclusters.workstations.cnrm.cloud.google.com.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,9 @@ spec:
240240
type: string
241241
type: object
242242
required:
243+
- networkRef
243244
- projectRef
245+
- subnetworkRef
244246
type: object
245247
status:
246248
description: WorkstationClusterStatus defines the config connector machine

pkg/clients/generated/apis/workstations/v1alpha1/workstationcluster_types.go

+2-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/clients/generated/apis/workstations/v1alpha1/zz_generated.deepcopy.go

+2-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/controller/direct/workstations/workstationcluster_mappings.go

+11-39
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ func WorkstationClusterSpec_ToProto(mapCtx *direct.MapContext, in *krm.Workstati
3131
DisplayName: direct.ValueOf(in.DisplayName),
3232
Annotations: WorkstationClusterAnnotations_ToProto(mapCtx, in.Annotations),
3333
Labels: WorkstationClusterLabels_ToProto(mapCtx, in.Labels),
34-
Network: WorkstationClusterNetworkRef_ToProto(mapCtx, in.NetworkRef),
35-
Subnetwork: WorkstationClusterSubnetworkRef_ToProto(mapCtx, in.SubnetworkRef),
34+
Network: in.NetworkRef.External,
35+
Subnetwork: in.SubnetworkRef.External,
3636
PrivateClusterConfig: WorkstationCluster_PrivateClusterConfig_ToProto(mapCtx, in.PrivateClusterConfig),
3737
}
3838
return out
@@ -60,20 +60,6 @@ func WorkstationClusterLabels_ToProto(mapCtx *direct.MapContext, in []krm.Workst
6060
return out
6161
}
6262

63-
func WorkstationClusterNetworkRef_ToProto(mapCtx *direct.MapContext, in *refs.ComputeNetworkRef) string {
64-
if in == nil {
65-
return ""
66-
}
67-
return in.External
68-
}
69-
70-
func WorkstationClusterSubnetworkRef_ToProto(mapCtx *direct.MapContext, in *refs.ComputeSubnetworkRef) string {
71-
if in == nil {
72-
return ""
73-
}
74-
return in.External
75-
}
76-
7763
func WorkstationCluster_PrivateClusterConfig_ToProto(mapCtx *direct.MapContext, in *krm.WorkstationCluster_PrivateClusterConfig) *pb.WorkstationCluster_PrivateClusterConfig {
7864
if in == nil {
7965
return nil
@@ -101,11 +87,15 @@ func WorkstationClusterSpec_FromProto(mapCtx *direct.MapContext, in *pb.Workstat
10187
return nil
10288
}
10389
out := &krm.WorkstationClusterSpec{
104-
DisplayName: direct.LazyPtr(in.GetDisplayName()),
105-
Annotations: WorkstationClusterAnnotations_FromProto(mapCtx, in.GetAnnotations()),
106-
Labels: WorkstationClusterLabels_FromProto(mapCtx, in.GetLabels()),
107-
NetworkRef: WorkstationClusterNetworkRef_FromProto(mapCtx, in.GetNetwork()),
108-
SubnetworkRef: WorkstationClusterSubnetworkRef_FromProto(mapCtx, in.GetSubnetwork()),
90+
DisplayName: direct.LazyPtr(in.GetDisplayName()),
91+
Annotations: WorkstationClusterAnnotations_FromProto(mapCtx, in.GetAnnotations()),
92+
Labels: WorkstationClusterLabels_FromProto(mapCtx, in.GetLabels()),
93+
NetworkRef: refs.ComputeNetworkRef{
94+
External: in.GetNetwork(),
95+
},
96+
SubnetworkRef: refs.ComputeSubnetworkRef{
97+
External: in.GetSubnetwork(),
98+
},
10999
PrivateClusterConfig: WorkstationCluster_PrivateClusterConfig_FromProto(mapCtx, in.GetPrivateClusterConfig()),
110100
}
111101
return out
@@ -139,24 +129,6 @@ func WorkstationClusterLabels_FromProto(mapCtx *direct.MapContext, in map[string
139129
return out
140130
}
141131

142-
func WorkstationClusterNetworkRef_FromProto(mapCtx *direct.MapContext, in string) *refs.ComputeNetworkRef {
143-
if in == "" {
144-
return nil
145-
}
146-
return &refs.ComputeNetworkRef{
147-
External: in,
148-
}
149-
}
150-
151-
func WorkstationClusterSubnetworkRef_FromProto(mapCtx *direct.MapContext, in string) *refs.ComputeSubnetworkRef {
152-
if in == "" {
153-
return nil
154-
}
155-
return &refs.ComputeSubnetworkRef{
156-
External: in,
157-
}
158-
}
159-
160132
func WorkstationCluster_PrivateClusterConfig_FromProto(mapCtx *direct.MapContext, in *pb.WorkstationCluster_PrivateClusterConfig) *krm.WorkstationCluster_PrivateClusterConfig {
161133
if in == nil {
162134
return nil

pkg/controller/direct/workstations/workstationcluster_normalize.go

+13-12
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,21 @@ import (
2424
)
2525

2626
func NormalizeWorkstationCluster(ctx context.Context, kube client.Reader, obj *krm.WorkstationCluster) error {
27-
if obj.Spec.NetworkRef != nil {
28-
network, err := refs.ResolveComputeNetwork(ctx, kube, obj, obj.Spec.NetworkRef)
29-
if err != nil {
30-
return err
31-
}
32-
obj.Spec.NetworkRef.External = network.String()
27+
// Resolve network.
28+
network, err := refs.ResolveComputeNetwork(ctx, kube, obj, &obj.Spec.NetworkRef)
29+
if err != nil {
30+
return err
3331
}
34-
if obj.Spec.SubnetworkRef != nil {
35-
subnet, err := refs.ResolveComputeSubnetwork(ctx, kube, obj, obj.Spec.SubnetworkRef)
36-
if err != nil {
37-
return err
38-
}
39-
obj.Spec.SubnetworkRef.External = subnet.External
32+
obj.Spec.NetworkRef.External = network.String()
33+
34+
// Resolve subnetwork.
35+
subnet, err := refs.ResolveComputeSubnetwork(ctx, kube, obj, &obj.Spec.SubnetworkRef)
36+
if err != nil {
37+
return err
4038
}
39+
obj.Spec.SubnetworkRef.External = subnet.External
40+
41+
// Resolve projects (in private cluster config).
4142
if obj.Spec.PrivateClusterConfig != nil && obj.Spec.PrivateClusterConfig.AllowedProjects != nil {
4243
var resolvedProjects []refs.ProjectRef
4344
for _, projectRef := range obj.Spec.PrivateClusterConfig.AllowedProjects {

0 commit comments

Comments
 (0)