Skip to content

Commit 5319094

Browse files
Merge pull request #366 from shiftstack/4.19-sync-from-upstream-0.12
OCPBUGS-57891: Merge https://github.com/kubernetes-sigs/cluster-api-provider-openstack:release-0.12 into release-4.19
2 parents cc76099 + 735b907 commit 5319094

File tree

1,003 files changed

+52051
-121958
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,003 files changed

+52051
-121958
lines changed

.github/workflows/pr-dependabot.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ jobs:
2424
id: vars
2525
run: echo "go_version=$(make go-version)" >> $GITHUB_OUTPUT
2626
- name: Set up Go
27-
uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # tag=v5.3.0
27+
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # tag=v5.5.0
2828
with:
2929
go-version: ${{ steps.vars.outputs.go_version }}
30-
- uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # tag=v4.2.2
30+
- uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # tag=v4.2.3
3131
name: Restore go cache
3232
with:
3333
path: |

.github/workflows/release.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
- name: Calculate go version
2424
run: echo "go_version=$(make go-version)" >> $GITHUB_ENV
2525
- name: Set up Go
26-
uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # tag=v5.3.0
26+
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # tag=v5.5.0
2727
with:
2828
go-version: ${{ env.go_version }}
2929
- name: generate release artifacts
@@ -37,7 +37,7 @@ jobs:
3737
env:
3838
GH_TOKEN: ${{ github.token }}
3939
- name: Release
40-
uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda # tag=v2.2.1
40+
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # tag=v2.2.2
4141
with:
4242
draft: true
4343
files: out/*

.github/workflows/security-scan.yaml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Weekly security scan
2+
3+
on:
4+
schedule:
5+
# Cron for every Monday at 9:12 UTC.
6+
- cron: "12 9 * * 1"
7+
8+
# Remove all permissions from GITHUB_TOKEN except metadata.
9+
permissions: {}
10+
11+
jobs:
12+
scan:
13+
strategy:
14+
fail-fast: false
15+
matrix:
16+
branch: [main, release-0.12, release-0.11, release-0.10]
17+
name: Trivy
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Check out code
21+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2
22+
with:
23+
ref: ${{ matrix.branch }}
24+
- name: Calculate go version
25+
id: vars
26+
run: echo "go_version=$(make go-version)" >> $GITHUB_OUTPUT
27+
- name: Set up Go
28+
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # tag=v5.5.0
29+
with:
30+
go-version: ${{ steps.vars.outputs.go_version }}
31+
- name: Run verify security target
32+
run: make verify-security

Makefile

Lines changed: 48 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,19 @@ include $(ROOT_DIR_RELATIVE)/common.mk
2323
export GO111MODULE=on
2424
unexport GOPATH
2525

26+
# Enables shell script tracing. Enable by running: TRACE=1 make <target>
27+
TRACE ?= 0
28+
2629
# Go
27-
GO_VERSION ?= 1.23.4
30+
GO_VERSION ?= 1.23.8
2831

2932
# Directories.
3033
ARTIFACTS ?= $(REPO_ROOT)/_artifacts
3134
TOOLS_DIR := hack/tools
35+
BIN_DIR := bin
3236
TOOLS_DIR_DEPS := $(TOOLS_DIR)/go.sum $(TOOLS_DIR)/go.mod $(TOOLS_DIR)/Makefile
33-
TOOLS_BIN_DIR := $(TOOLS_DIR)/bin
37+
TOOLS_BIN_DIR := $(TOOLS_DIR)/$(BIN_DIR)
3438

35-
BIN_DIR := bin
3639
REPO_ROOT := $(shell git rev-parse --show-toplevel)
3740
GH_REPO ?= kubernetes-sigs/cluster-api-provider-openstack
3841
TEST_E2E_DIR := test/e2e
@@ -49,6 +52,13 @@ GO_APIDIFF_VER := v0.8.2
4952
GO_APIDIFF_BIN := go-apidiff
5053
GO_APIDIFF_PKG := github.com/joelanford/go-apidiff
5154

55+
# govulncheck
56+
GOVULNCHECK_VER := v1.1.4
57+
GOVULNCHECK_BIN := govulncheck
58+
GOVULNCHECK_PKG := golang.org/x/vuln/cmd/govulncheck
59+
60+
TRIVY_VER := 0.49.1
61+
5262
# Binaries.
5363
CONTROLLER_GEN := $(TOOLS_BIN_DIR)/controller-gen
5464
CONVERSION_GEN := $(TOOLS_BIN_DIR)/conversion-gen
@@ -63,6 +73,7 @@ RELEASE_NOTES := $(TOOLS_BIN_DIR)/release-notes
6373
SETUP_ENVTEST := $(TOOLS_BIN_DIR)/setup-envtest
6474
GEN_CRD_API_REFERENCE_DOCS := $(TOOLS_BIN_DIR)/gen-crd-api-reference-docs
6575
GO_APIDIFF := $(TOOLS_BIN_DIR)/$(GO_APIDIFF_BIN)-$(GO_APIDIFF_VER)
76+
GOVULNCHECK := $(TOOLS_BIN_DIR)/$(GOVULNCHECK_BIN)-$(GOVULNCHECK_VER)
6677

6778
# Kubebuilder
6879
export KUBEBUILDER_ENVTEST_KUBERNETES_VERSION ?= 1.28.0
@@ -166,14 +177,15 @@ E2E_NO_ARTIFACT_TEMPLATES_DIR=test/e2e/data/infrastructure-openstack-no-artifact
166177
e2e-templates: ## Generate cluster templates for e2e tests
167178
e2e-templates: $(addprefix $(E2E_NO_ARTIFACT_TEMPLATES_DIR)/, \
168179
cluster-template-v1alpha7.yaml \
180+
cluster-template-without-orc.yaml \
169181
cluster-template-md-remediation.yaml \
170182
cluster-template-kcp-remediation.yaml \
171183
cluster-template-multi-az.yaml \
172184
cluster-template-multi-network.yaml \
173185
cluster-template-without-lb.yaml \
174186
cluster-template.yaml \
175187
cluster-template-flatcar.yaml \
176-
cluster-template-k8s-upgrade.yaml \
188+
cluster-template-k8s-upgrade.yaml \
177189
cluster-template-flatcar-sysext.yaml \
178190
cluster-template-no-bastion.yaml)
179191
# Currently no templates that require CI artifacts
@@ -248,6 +260,12 @@ $(GO_APIDIFF_BIN): $(GO_APIDIFF)
248260
$(GO_APIDIFF): # Build go-apidiff.
249261
GOBIN=$(abspath $(TOOLS_BIN_DIR)) $(GO_INSTALL) $(GO_APIDIFF_PKG) $(GO_APIDIFF_BIN) $(GO_APIDIFF_VER)
250262

263+
.PHONY: $(GOVULNCHECK_BIN)
264+
$(GOVULNCHECK_BIN): $(GOVULNCHECK) ## Build a local copy of govulncheck.
265+
266+
$(GOVULNCHECK): # Build govulncheck.
267+
GOBIN=$(abspath $(TOOLS_BIN_DIR)) $(GO_INSTALL) $(GOVULNCHECK_PKG) $(GOVULNCHECK_BIN) $(GOVULNCHECK_VER)
268+
251269
## --------------------------------------
252270
##@ Linting
253271
## --------------------------------------
@@ -564,8 +582,12 @@ clean-temporary: ## Remove all temporary files and folders
564582
clean-release: ## Remove the release folder
565583
rm -rf $(RELEASE_DIR)
566584

585+
.PHONY: clean-release-git
586+
clean-release-git: ## Restores the git files usually modified during a release
587+
git restore ./*manager_image_patch.yaml ./*manager_pull_policy.yaml
588+
567589
.PHONY: verify
568-
verify: verify-boilerplate verify-modules verify-gen
590+
verify: verify-boilerplate verify-modules verify-gen verify-govulncheck
569591

570592
.PHONY: verify-boilerplate
571593
verify-boilerplate:
@@ -585,6 +607,27 @@ verify-gen: generate
585607
echo "generated files are out of date, run make generate"; exit 1; \
586608
fi
587609

610+
.PHONY: verify-container-images
611+
verify-container-images: ## Verify container images
612+
TRACE=$(TRACE) ./hack/verify-container-images.sh $(TRIVY_VER)
613+
614+
.PHONY: verify-govulncheck
615+
verify-govulncheck: $(GOVULNCHECK) ## Verify code for vulnerabilities
616+
$(GOVULNCHECK) ./... && R1=$$? || R1=$$?; \
617+
$(GOVULNCHECK) -C "$(TOOLS_DIR)" ./... && R2=$$? || R2=$$?; \
618+
if [ "$$R1" -ne "0" ] || [ "$$R2" -ne "0" ]; then \
619+
exit 1; \
620+
fi
621+
622+
.PHONY: verify-security
623+
verify-security: ## Verify code and images for vulnerabilities
624+
$(MAKE) verify-container-images && R1=$$? || R1=$$?; \
625+
$(MAKE) verify-govulncheck && R2=$$? || R2=$$?; \
626+
if [ "$$R1" -ne "0" ] || [ "$$R2" -ne "0" ]; then \
627+
echo "Check for vulnerabilities failed! There are vulnerabilities to be fixed"; \
628+
exit 1; \
629+
fi
630+
588631
.PHONY: vendor verify-vendoring
589632
vendor:
590633
go mod vendor

cmd/models-schema/zz_generated.openapi.go

Lines changed: 35 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

controllers/openstackmachine_controller.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,7 @@ func openStackMachineSpecToOpenStackServerSpec(openStackMachineSpec *infrav1.Ope
484484
AdditionalBlockDevices: openStackMachineSpec.AdditionalBlockDevices,
485485
ConfigDrive: openStackMachineSpec.ConfigDrive,
486486
Flavor: openStackMachineSpec.Flavor,
487+
FlavorID: openStackMachineSpec.FlavorID,
487488
IdentityRef: identityRef,
488489
Image: openStackMachineSpec.Image,
489490
RootVolume: openStackMachineSpec.RootVolume,

controllers/openstackmachine_controller_test.go

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
117117
},
118118
},
119119
{
120-
name: "Test a OpenStackMachineSpec to OpenStackServerSpec conversion with an additional security group",
120+
name: "Test an OpenStackMachineSpec to OpenStackServerSpec conversion with an additional security group",
121121
spec: &infrav1.OpenStackMachineSpec{
122122
Flavor: ptr.To(flavorName),
123123
Image: image,
@@ -138,6 +138,42 @@ func TestOpenStackMachineSpecToOpenStackServerSpec(t *testing.T) {
138138
UserDataRef: userData,
139139
},
140140
},
141+
{
142+
name: "Test an OpenStackMachineSpec to OpenStackServerSpec conversion with flavor and flavorID specified",
143+
spec: &infrav1.OpenStackMachineSpec{
144+
Flavor: ptr.To(flavorName),
145+
FlavorID: ptr.To(flavorUUID),
146+
Image: image,
147+
SSHKeyName: sshKeyName,
148+
},
149+
want: &infrav1alpha1.OpenStackServerSpec{
150+
Flavor: ptr.To(flavorName),
151+
FlavorID: ptr.To(flavorUUID),
152+
IdentityRef: identityRef,
153+
Image: image,
154+
SSHKeyName: sshKeyName,
155+
Ports: portOpts,
156+
Tags: tags,
157+
UserDataRef: userData,
158+
},
159+
},
160+
{
161+
name: "Test an OpenStackMachineSpec to OpenStackServerSpec conversion with flavorID specified but not flavor",
162+
spec: &infrav1.OpenStackMachineSpec{
163+
FlavorID: ptr.To(flavorUUID),
164+
Image: image,
165+
SSHKeyName: sshKeyName,
166+
},
167+
want: &infrav1alpha1.OpenStackServerSpec{
168+
FlavorID: ptr.To(flavorUUID),
169+
IdentityRef: identityRef,
170+
Image: image,
171+
SSHKeyName: sshKeyName,
172+
Ports: portOpts,
173+
Tags: tags,
174+
UserDataRef: userData,
175+
},
176+
},
141177
}
142178
for i := range tests {
143179
tt := tests[i]

controllers/openstackserver_controller.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ type OpenStackServerReconciler struct {
7777

7878
// +kubebuilder:rbac:groups=infrastructure.cluster.x-k8s.io,resources=openstackservers,verbs=get;list;watch;create;update;patch;delete
7979
// +kubebuilder:rbac:groups=infrastructure.cluster.x-k8s.io,resources=openstackservers/status,verbs=get;update;patch
80+
// +kubebuilder:rbac:groups=ipam.cluster.x-k8s.io,resources=ipaddressclaims;ipaddressclaims/status,verbs=get;watch;create;update;patch;delete
81+
// +kubebuilder:rbac:groups=ipam.cluster.x-k8s.io,resources=ipaddresses;ipaddresses/status,verbs=get;list;watch
8082
// +kubebuilder:rbac:groups=openstack.k-orc.cloud,resources=images,verbs=get;list;watch
8183

8284
func (r *OpenStackServerReconciler) Reconcile(ctx context.Context, req ctrl.Request) (result ctrl.Result, reterr error) {
@@ -170,7 +172,7 @@ func patchServer(ctx context.Context, patchHelper *patch.Helper, openStackServer
170172
return patchHelper.Patch(ctx, openStackServer, options...)
171173
}
172174

173-
func (r *OpenStackServerReconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager, _ controller.Options) error {
175+
func (r *OpenStackServerReconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager, options controller.Options) error {
174176
const imageRefPath = "spec.image.imageRef.name"
175177

176178
log := ctrl.LoggerFrom(ctx)
@@ -190,6 +192,7 @@ func (r *OpenStackServerReconciler) SetupWithManager(ctx context.Context, mgr ct
190192
}
191193

192194
return ctrl.NewControllerManagedBy(mgr).
195+
WithOptions(options).
193196
For(&infrav1alpha1.OpenStackServer{}).
194197
Watches(&orcv1alpha1.Image{},
195198
handler.EnqueueRequestsFromMapFunc(func(ctx context.Context, obj client.Object) []reconcile.Request {
@@ -214,6 +217,10 @@ func (r *OpenStackServerReconciler) SetupWithManager(ctx context.Context, mgr ct
214217
}),
215218
builder.WithPredicates(predicates.NewBecameAvailable(mgr.GetLogger(), &orcv1alpha1.Image{})),
216219
).
220+
Watches(
221+
&ipamv1.IPAddressClaim{},
222+
handler.EnqueueRequestForOwner(mgr.GetScheme(), mgr.GetRESTMapper(), &infrav1alpha1.OpenStackServer{}),
223+
).
217224
Complete(r)
218225
}
219226

0 commit comments

Comments
 (0)