-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial implementation supports provisioning data volumes, creates individual VMs for each machine request. Signed-off-by: Artem Chernyshev <[email protected]>
- Loading branch information
Showing
26 changed files
with
2,916 additions
and
23 deletions.
There are no files selected for viewing
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,18 @@ | ||
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. | ||
# | ||
# Generated on 2024-09-30T14:56:28Z by kres 8be5fa7. | ||
|
||
codecov: | ||
require_ci_to_pass: false | ||
|
||
coverage: | ||
status: | ||
project: | ||
default: | ||
target: 50% | ||
threshold: 0.5% | ||
base: auto | ||
if_ci_failed: success | ||
patch: off | ||
|
||
comment: false |
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,13 @@ | ||
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. | ||
# | ||
# Generated on 2024-09-30T14:56:28Z by kres 8be5fa7. | ||
|
||
* | ||
!api | ||
!cmd | ||
!internal | ||
!go.mod | ||
!go.sum | ||
!.golangci.yml | ||
!README.md | ||
!.markdownlint.json |
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,6 @@ | ||
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. | ||
# | ||
# Generated on 2024-09-30T14:59:39Z by kres 8be5fa7. | ||
|
||
_out | ||
hack/compose/docker-compose.override.yml |
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,150 @@ | ||
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. | ||
# | ||
# Generated on 2024-09-30T14:56:28Z by kres 8be5fa7. | ||
|
||
# options for analysis running | ||
run: | ||
timeout: 10m | ||
issues-exit-code: 1 | ||
tests: true | ||
build-tags: [ ] | ||
modules-download-mode: readonly | ||
|
||
# output configuration options | ||
output: | ||
formats: | ||
- format: colored-line-number | ||
path: stdout | ||
print-issued-lines: true | ||
print-linter-name: true | ||
uniq-by-line: true | ||
path-prefix: "" | ||
|
||
# all available settings of specific linters | ||
linters-settings: | ||
dogsled: | ||
max-blank-identifiers: 2 | ||
dupl: | ||
threshold: 150 | ||
errcheck: | ||
check-type-assertions: true | ||
check-blank: true | ||
exhaustive: | ||
default-signifies-exhaustive: false | ||
gci: | ||
sections: | ||
- standard # Standard section: captures all standard packages. | ||
- default # Default section: contains all imports that could not be matched to another section type. | ||
- localmodule # Imports from the same module. | ||
gocognit: | ||
min-complexity: 30 | ||
nestif: | ||
min-complexity: 5 | ||
goconst: | ||
min-len: 3 | ||
min-occurrences: 3 | ||
gocritic: | ||
disabled-checks: [ ] | ||
gocyclo: | ||
min-complexity: 20 | ||
godot: | ||
scope: declarations | ||
gofmt: | ||
simplify: true | ||
gomodguard: { } | ||
govet: | ||
enable-all: true | ||
lll: | ||
line-length: 200 | ||
tab-width: 4 | ||
misspell: | ||
locale: US | ||
ignore-words: [ ] | ||
nakedret: | ||
max-func-lines: 30 | ||
prealloc: | ||
simple: true | ||
range-loops: true # Report preallocation suggestions on range loops, true by default | ||
for-loops: false # Report preallocation suggestions on for loops, false by default | ||
nolintlint: | ||
allow-unused: false | ||
allow-no-explanation: [ ] | ||
require-explanation: false | ||
require-specific: true | ||
rowserrcheck: { } | ||
testpackage: { } | ||
unparam: | ||
check-exported: false | ||
unused: | ||
local-variables-are-used: false | ||
whitespace: | ||
multi-if: false # Enforces newlines (or comments) after every multi-line if statement | ||
multi-func: false # Enforces newlines (or comments) after every multi-line function signature | ||
wsl: | ||
strict-append: true | ||
allow-assign-and-call: true | ||
allow-multiline-assign: true | ||
allow-cuddle-declarations: false | ||
allow-trailing-comment: false | ||
force-case-trailing-whitespace: 0 | ||
force-err-cuddling: false | ||
allow-separated-leading-comment: false | ||
gofumpt: | ||
extra-rules: false | ||
cyclop: | ||
# the maximal code complexity to report | ||
max-complexity: 20 | ||
depguard: | ||
rules: | ||
prevent_unmaintained_packages: | ||
list-mode: lax # allow unless explicitly denied | ||
files: | ||
- $all | ||
deny: | ||
- pkg: io/ioutil | ||
desc: "replaced by io and os packages since Go 1.16: https://tip.golang.org/doc/go1.16#ioutil" | ||
|
||
linters: | ||
enable-all: true | ||
disable-all: false | ||
fast: false | ||
disable: | ||
- exhaustruct | ||
- err113 | ||
- forbidigo | ||
- funlen | ||
- gochecknoglobals | ||
- gochecknoinits | ||
- godox | ||
- gomnd | ||
- gomoddirectives | ||
- gosec | ||
- inamedparam | ||
- ireturn | ||
- mnd | ||
- nestif | ||
- nonamedreturns | ||
- paralleltest | ||
- tagalign | ||
- tagliatelle | ||
- thelper | ||
- varnamelen | ||
- wrapcheck | ||
- testifylint # complains about our assert recorder and has a number of false positives for assert.Greater(t, thing, 1) | ||
- protogetter # complains about us using Value field on typed spec, instead of GetValue which has a different signature | ||
- perfsprint # complains about us using fmt.Sprintf in non-performance critical code, updating just kres took too long | ||
- goimports # same as gci | ||
- musttag # seems to be broken - goes into imported libraries and reports issues there | ||
|
||
issues: | ||
exclude: [ ] | ||
exclude-rules: [ ] | ||
exclude-use-default: false | ||
exclude-case-sensitive: false | ||
max-issues-per-linter: 10 | ||
max-same-issues: 3 | ||
new: false | ||
|
||
severity: | ||
default-severity: error | ||
case-sensitive: false |
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,9 @@ | ||
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. | ||
# | ||
# Generated on 2024-09-30T14:56:28Z by kres 8be5fa7. | ||
|
||
{ | ||
"MD013": false, | ||
"MD033": false, | ||
"default": true | ||
} |
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,146 @@ | ||
# syntax = docker/dockerfile-upstream:1.10.0-labs | ||
|
||
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. | ||
# | ||
# Generated on 2024-10-02T19:28:55Z by kres 34e72ac. | ||
|
||
ARG TOOLCHAIN | ||
|
||
FROM ghcr.io/siderolabs/ca-certificates:v1.8.0 AS image-ca-certificates | ||
|
||
FROM ghcr.io/siderolabs/fhs:v1.8.0 AS image-fhs | ||
|
||
# runs markdownlint | ||
FROM docker.io/oven/bun:1.1.29-alpine AS lint-markdown | ||
WORKDIR /src | ||
RUN bun i [email protected] [email protected] | ||
COPY .markdownlint.json . | ||
COPY ./README.md ./README.md | ||
RUN bunx markdownlint --ignore "CHANGELOG.md" --ignore "**/node_modules/**" --ignore '**/hack/chglog/**' --rules node_modules/sentences-per-line/index.js . | ||
|
||
# collects proto specs | ||
FROM scratch AS proto-specs | ||
ADD api/specs/specs.proto /api/specs/ | ||
|
||
# base toolchain image | ||
FROM --platform=${BUILDPLATFORM} ${TOOLCHAIN} AS toolchain | ||
RUN apk --update --no-cache add bash curl build-base protoc protobuf-dev | ||
|
||
# build tools | ||
FROM --platform=${BUILDPLATFORM} toolchain AS tools | ||
ENV GO111MODULE=on | ||
ARG CGO_ENABLED | ||
ENV CGO_ENABLED=${CGO_ENABLED} | ||
ARG GOTOOLCHAIN | ||
ENV GOTOOLCHAIN=${GOTOOLCHAIN} | ||
ARG GOEXPERIMENT | ||
ENV GOEXPERIMENT=${GOEXPERIMENT} | ||
ENV GOPATH=/go | ||
ARG GOIMPORTS_VERSION | ||
RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install golang.org/x/tools/cmd/goimports@v${GOIMPORTS_VERSION} | ||
RUN mv /go/bin/goimports /bin | ||
ARG PROTOBUF_GO_VERSION | ||
RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install google.golang.org/protobuf/cmd/protoc-gen-go@v${PROTOBUF_GO_VERSION} | ||
RUN mv /go/bin/protoc-gen-go /bin | ||
ARG GRPC_GO_VERSION | ||
RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v${GRPC_GO_VERSION} | ||
RUN mv /go/bin/protoc-gen-go-grpc /bin | ||
ARG GRPC_GATEWAY_VERSION | ||
RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v${GRPC_GATEWAY_VERSION} | ||
RUN mv /go/bin/protoc-gen-grpc-gateway /bin | ||
ARG VTPROTOBUF_VERSION | ||
RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install github.com/planetscale/vtprotobuf/cmd/protoc-gen-go-vtproto@v${VTPROTOBUF_VERSION} | ||
RUN mv /go/bin/protoc-gen-go-vtproto /bin | ||
ARG DEEPCOPY_VERSION | ||
RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install github.com/siderolabs/deep-copy@${DEEPCOPY_VERSION} \ | ||
&& mv /go/bin/deep-copy /bin/deep-copy | ||
ARG GOLANGCILINT_VERSION | ||
RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install github.com/golangci/golangci-lint/cmd/golangci-lint@${GOLANGCILINT_VERSION} \ | ||
&& mv /go/bin/golangci-lint /bin/golangci-lint | ||
RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go install golang.org/x/vuln/cmd/govulncheck@latest \ | ||
&& mv /go/bin/govulncheck /bin/govulncheck | ||
ARG GOFUMPT_VERSION | ||
RUN go install mvdan.cc/gofumpt@${GOFUMPT_VERSION} \ | ||
&& mv /go/bin/gofumpt /bin/gofumpt | ||
|
||
# tools and sources | ||
FROM tools AS base | ||
WORKDIR /src | ||
COPY go.mod go.mod | ||
COPY go.sum go.sum | ||
RUN cd . | ||
RUN --mount=type=cache,target=/go/pkg go mod download | ||
RUN --mount=type=cache,target=/go/pkg go mod verify | ||
COPY ./api ./api | ||
COPY ./cmd ./cmd | ||
COPY ./internal ./internal | ||
RUN --mount=type=cache,target=/go/pkg go list -mod=readonly all >/dev/null | ||
|
||
# runs protobuf compiler | ||
FROM tools AS proto-compile | ||
COPY --from=proto-specs / / | ||
RUN protoc -I/api --go_out=paths=source_relative:/api --go-grpc_out=paths=source_relative:/api --go-vtproto_out=paths=source_relative:/api --go-vtproto_opt=features=marshal+unmarshal+size+equal+clone /api/specs/specs.proto | ||
RUN rm /api/specs/specs.proto | ||
RUN goimports -w -local github.com/siderolabs/omni-infra-provider-kubevirt /api | ||
RUN gofumpt -w /api | ||
|
||
# runs gofumpt | ||
FROM base AS lint-gofumpt | ||
RUN FILES="$(gofumpt -l .)" && test -z "${FILES}" || (echo -e "Source code is not formatted with 'gofumpt -w .':\n${FILES}"; exit 1) | ||
|
||
# runs golangci-lint | ||
FROM base AS lint-golangci-lint | ||
WORKDIR /src | ||
COPY .golangci.yml . | ||
ENV GOGC=50 | ||
RUN golangci-lint config verify --config .golangci.yml | ||
RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/root/.cache/golangci-lint --mount=type=cache,target=/go/pkg golangci-lint run --config .golangci.yml | ||
|
||
# runs govulncheck | ||
FROM base AS lint-govulncheck | ||
WORKDIR /src | ||
RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg govulncheck ./... | ||
|
||
# runs unit-tests with race detector | ||
FROM base AS unit-tests-race | ||
WORKDIR /src | ||
ARG TESTPKGS | ||
RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg --mount=type=cache,target=/tmp CGO_ENABLED=1 go test -v -race -count 1 ${TESTPKGS} | ||
|
||
# runs unit-tests | ||
FROM base AS unit-tests-run | ||
WORKDIR /src | ||
ARG TESTPKGS | ||
RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg --mount=type=cache,target=/tmp go test -v -covermode=atomic -coverprofile=coverage.txt -coverpkg=${TESTPKGS} -count 1 ${TESTPKGS} | ||
|
||
# cleaned up specs and compiled versions | ||
FROM scratch AS generate | ||
COPY --from=proto-compile /api/ /api/ | ||
|
||
FROM scratch AS unit-tests | ||
COPY --from=unit-tests-run /src/coverage.txt /coverage-unit-tests.txt | ||
|
||
# builds omni-infra-provider-kubevirt-linux-amd64 | ||
FROM base AS omni-infra-provider-kubevirt-linux-amd64-build | ||
COPY --from=generate / / | ||
WORKDIR /src/cmd/omni-infra-provider-kubevirt | ||
ARG GO_BUILDFLAGS | ||
ARG GO_LDFLAGS | ||
RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/go/pkg go build ${GO_BUILDFLAGS} -ldflags "${GO_LDFLAGS}" -o /omni-infra-provider-kubevirt-linux-amd64 | ||
|
||
FROM scratch AS omni-infra-provider-kubevirt-linux-amd64 | ||
COPY --from=omni-infra-provider-kubevirt-linux-amd64-build /omni-infra-provider-kubevirt-linux-amd64 /omni-infra-provider-kubevirt-linux-amd64 | ||
|
||
FROM omni-infra-provider-kubevirt-linux-${TARGETARCH} AS omni-infra-provider-kubevirt | ||
|
||
FROM scratch AS omni-infra-provider-kubevirt-all | ||
COPY --from=omni-infra-provider-kubevirt-linux-amd64 / / | ||
|
||
FROM scratch AS image-omni-infra-provider-kubevirt | ||
ARG TARGETARCH | ||
COPY --from=omni-infra-provider-kubevirt omni-infra-provider-kubevirt-linux-${TARGETARCH} /omni-infra-provider-kubevirt | ||
COPY --from=image-fhs / / | ||
COPY --from=image-ca-certificates / / | ||
LABEL org.opencontainers.image.source=https://github.com/siderolabs/omni-infra-provider-kubevirt | ||
ENTRYPOINT ["/omni-infra-provider-kubevirt"] | ||
|
Oops, something went wrong.