Skip to content

Commit 0e96cc4

Browse files
committed
Add verify-import-restrictions to enforce import restrictions
1 parent e90e266 commit 0e96cc4

12 files changed

+106
-11
lines changed

Makefile

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,11 @@ GOVULNCHECK_VER := v1.0.0
175175
GOVULNCHECK := $(abspath $(TOOLS_BIN_DIR)/$(GOVULNCHECK_BIN)-$(GOVULNCHECK_VER))
176176
GOVULNCHECK_PKG := golang.org/x/vuln/cmd/govulncheck
177177

178+
IMPORT_BOSS_BIN := import-boss
179+
IMPORT_BOSS_VER := v0.28.1
180+
IMPORT_BOSS := $(abspath $(TOOLS_BIN_DIR)/$(IMPORT_BOSS_BIN))
181+
IMPORT_BOSS_PKG := k8s.io/code-generator/cmd/import-boss
182+
178183
CONVERSION_VERIFIER_BIN := conversion-verifier
179184
CONVERSION_VERIFIER := $(abspath $(TOOLS_BIN_DIR)/$(CONVERSION_VERIFIER_BIN))
180185

@@ -607,7 +612,7 @@ APIDIFF_OLD_COMMIT ?= $(shell git rev-parse origin/main)
607612
apidiff: $(GO_APIDIFF) ## Check for API differences
608613
$(GO_APIDIFF) $(APIDIFF_OLD_COMMIT) --print-compatible
609614

610-
ALL_VERIFY_CHECKS = licenses boilerplate shellcheck tiltfile modules gen conversions doctoc capi-book-summary diagrams
615+
ALL_VERIFY_CHECKS = licenses boilerplate shellcheck tiltfile modules gen conversions doctoc capi-book-summary diagrams import-restrictions
611616

612617
.PHONY: verify
613618
verify: $(addprefix verify-,$(ALL_VERIFY_CHECKS)) lint-dockerfiles ## Run all verify-* targets
@@ -690,6 +695,10 @@ verify-security: ## Verify code and images for vulnerabilities
690695
exit 1; \
691696
fi
692697

698+
.PHONY: verify-import-restrictions
699+
verify-import-restrictions: $(IMPORT_BOSS) ## Verify import restrictions with import-boss
700+
./hack/verify-import-restrictions.sh
701+
693702
## --------------------------------------
694703
## Binaries
695704
## --------------------------------------
@@ -1305,6 +1314,9 @@ $(GOLANGCI_LINT_BIN): $(GOLANGCI_LINT) ## Build a local copy of golangci-lint.
13051314
.PHONY: $(GOVULNCHECK_BIN)
13061315
$(GOVULNCHECK_BIN): $(GOVULNCHECK) ## Build a local copy of govulncheck.
13071316

1317+
.PHONY: $(IMPORT_BOSS_BIN)
1318+
$(IMPORT_BOSS_BIN): $(IMPORT_BOSS)
1319+
13081320
$(CONTROLLER_GEN): # Build controller-gen from tools folder.
13091321
GOBIN=$(TOOLS_BIN_DIR) $(GO_INSTALL) $(CONTROLLER_GEN_PKG) $(CONTROLLER_GEN_BIN) $(CONTROLLER_GEN_VER)
13101322

@@ -1359,6 +1371,9 @@ $(GOLANGCI_LINT): # Build golangci-lint from tools folder.
13591371
$(GOVULNCHECK): # Build govulncheck.
13601372
GOBIN=$(TOOLS_BIN_DIR) $(GO_INSTALL) $(GOVULNCHECK_PKG) $(GOVULNCHECK_BIN) $(GOVULNCHECK_VER)
13611373

1374+
$(IMPORT_BOSS): # Build import-boss
1375+
GOBIN=$(TOOLS_BIN_DIR) $(GO_INSTALL) $(IMPORT_BOSS_PKG) $(IMPORT_BOSS_BIN) $(IMPORT_BOSS_VER)
1376+
13621377
## --------------------------------------
13631378
## Helpers
13641379
## --------------------------------------

api/.import-restrictions

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
rules:
2+
- selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3+
allowedPrefixes:
4+
- "sigs.k8s.io/controller-runtime/pkg/conversion"
5+
forbiddenPrefixes: []

api/v1alpha4/cluster_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ type ClusterList struct {
400400
}
401401

402402
func init() {
403-
SchemeBuilder.Register(&Cluster{}, &ClusterList{})
403+
objectTypes = append(objectTypes, &Cluster{}, &ClusterList{})
404404
}
405405

406406
// FailureDomains is a slice of FailureDomains.

api/v1alpha4/clusterclass_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,5 +134,5 @@ type ClusterClassList struct {
134134
}
135135

136136
func init() {
137-
SchemeBuilder.Register(&ClusterClass{}, &ClusterClassList{})
137+
objectTypes = append(objectTypes, &ClusterClass{}, &ClusterClassList{})
138138
}

api/v1alpha4/groupversion_info.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,29 @@ limitations under the License.
2020
package v1alpha4
2121

2222
import (
23+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
24+
"k8s.io/apimachinery/pkg/runtime"
2325
"k8s.io/apimachinery/pkg/runtime/schema"
24-
"sigs.k8s.io/controller-runtime/pkg/scheme"
2526
)
2627

2728
var (
2829
// GroupVersion is group version used to register these objects.
2930
GroupVersion = schema.GroupVersion{Group: "cluster.x-k8s.io", Version: "v1alpha4"}
3031

3132
// SchemeBuilder is used to add go types to the GroupVersionKind scheme.
32-
SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}
33+
schemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
3334

3435
// AddToScheme adds the types in this group-version to the given scheme.
35-
AddToScheme = SchemeBuilder.AddToScheme
36+
AddToScheme = schemeBuilder.AddToScheme
3637

37-
localSchemeBuilder = SchemeBuilder.SchemeBuilder
38+
objectTypes = []runtime.Object{}
39+
40+
// localSchemeBuilder is used for type conversions.
41+
localSchemeBuilder = schemeBuilder
3842
)
43+
44+
func addKnownTypes(scheme *runtime.Scheme) error {
45+
scheme.AddKnownTypes(GroupVersion, objectTypes...)
46+
metav1.AddToGroupVersion(scheme, GroupVersion)
47+
return nil
48+
}

api/v1alpha4/machine_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,5 +278,5 @@ type MachineList struct {
278278
}
279279

280280
func init() {
281-
SchemeBuilder.Register(&Machine{}, &MachineList{})
281+
objectTypes = append(objectTypes, &Machine{}, &MachineList{})
282282
}

api/v1alpha4/machinedeployment_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ type MachineDeploymentList struct {
306306
}
307307

308308
func init() {
309-
SchemeBuilder.Register(&MachineDeployment{}, &MachineDeploymentList{})
309+
objectTypes = append(objectTypes, &MachineDeployment{}, &MachineDeploymentList{})
310310
}
311311

312312
// GetConditions returns the set of conditions for the machinedeployment.

api/v1alpha4/machinehealthcheck_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,5 +171,5 @@ type MachineHealthCheckList struct {
171171
}
172172

173173
func init() {
174-
SchemeBuilder.Register(&MachineHealthCheck{}, &MachineHealthCheckList{})
174+
objectTypes = append(objectTypes, &MachineHealthCheck{}, &MachineHealthCheckList{})
175175
}

api/v1alpha4/machineset_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ type MachineSetList struct {
229229
}
230230

231231
func init() {
232-
SchemeBuilder.Register(&MachineSet{}, &MachineSetList{})
232+
objectTypes = append(objectTypes, &MachineSet{}, &MachineSetList{})
233233
}
234234

235235
// GetConditions returns the set of conditions for the MachineSet.

api/v1beta1/.import-restrictions

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
rules:
2+
- selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3+
allowedPrefixes: []
4+
forbiddenPrefixes:
5+
- "sigs.k8s.io/controller-runtime"

0 commit comments

Comments
 (0)