From 254460d64c648b5ac328381f9e73bef0e21212ae Mon Sep 17 00:00:00 2001 From: Elmar Kresse Date: Mon, 12 Aug 2024 10:02:36 +0200 Subject: [PATCH] added poseidon with aws to k8s changes --- .gitignore | 27 + .gitmodules | 3 + CODE_OF_CONDUCT.md | 128 ++++ Dockerfile | 28 + Makefile | 196 +++++ api/swagger.yaml | 688 ++++++++++++++++++ api/websocket.schema.json | 42 ++ app.yaml | 6 + cmd/poseidon/main.go | 423 +++++++++++ configuration.example.yaml | 120 +++ docker-compose.yml | 12 + docs/configuration.md | 138 ++++ docs/development.md | 136 ++++ docs/nomad_usage.md | 44 ++ .../OverviewCodeOceanPoseidonNomad.png | Bin 0 -> 188728 bytes .../OverviewPoseidonNomadMapping.drawio | 1 + .../OverviewPoseidonNomadMapping.png | Bin 0 -> 1544958 bytes docs/resources/client.example.hcl | 17 + docs/resources/docker.daemon.json | 17 + docs/resources/nomad.example.hcl | 28 + docs/resources/poseidon_policy.hcl | 30 + docs/resources/secure-bridge.conflist | 105 +++ docs/resources/server.example.hcl | 15 + docs/security.md | 70 ++ go.mod | 141 ++++ go.sum | 514 +++++++++++++ internal/api/api.go | 98 +++ internal/api/auth/auth.go | 38 + internal/api/environments.go | 159 ++++ internal/api/health.go | 42 ++ internal/api/helpers.go | 41 ++ internal/api/runners.go | 259 +++++++ internal/api/websocket.go | 113 +++ internal/api/ws/codeocean_reader.go | 177 +++++ internal/api/ws/codeocean_writer.go | 174 +++++ internal/api/ws/connection.go | 14 + internal/config/config.go | 287 ++++++++ internal/environment/abstract_manager.go | 77 ++ internal/environment/k8s_env.go | 139 ++++ internal/environment/k8s_manager.go | 71 ++ internal/environment/manager.go | 43 ++ .../environment/template-environment-job.hcl | 84 +++ internal/runner/abstract_manager.go | 125 ++++ internal/runner/execution_environment.go | 66 ++ internal/runner/inactivity_timer.go | 111 +++ internal/runner/k8s_manager.go | 70 ++ internal/runner/k8s_runner.go | 251 +++++++ internal/runner/manager.go | 54 ++ internal/runner/runner.go | 91 +++ pkg/dto/dto.go | 344 +++++++++ pkg/logging/context_hook.go | 41 ++ pkg/logging/logging.go | 109 +++ pkg/logging/sentry_hook.go | 67 ++ pkg/monitoring/influxdb2_middleware.go | 194 +++++ pkg/nullio/content_length.go | 84 +++ pkg/nullio/ls2json.go | 184 +++++ pkg/nullio/nullio.go | 43 ++ pkg/storage/storage.go | 185 +++++ pkg/util/merge_context.go | 66 ++ pkg/util/util.go | 82 +++ 60 files changed, 6912 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 CODE_OF_CONDUCT.md create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 api/swagger.yaml create mode 100644 api/websocket.schema.json create mode 100644 app.yaml create mode 100644 cmd/poseidon/main.go create mode 100644 configuration.example.yaml create mode 100644 docker-compose.yml create mode 100644 docs/configuration.md create mode 100644 docs/development.md create mode 100644 docs/nomad_usage.md create mode 100644 docs/resources/OverviewCodeOceanPoseidonNomad.png create mode 100644 docs/resources/OverviewPoseidonNomadMapping.drawio create mode 100644 docs/resources/OverviewPoseidonNomadMapping.png create mode 100644 docs/resources/client.example.hcl create mode 100644 docs/resources/docker.daemon.json create mode 100644 docs/resources/nomad.example.hcl create mode 100644 docs/resources/poseidon_policy.hcl create mode 100644 docs/resources/secure-bridge.conflist create mode 100644 docs/resources/server.example.hcl create mode 100644 docs/security.md create mode 100644 go.mod create mode 100644 go.sum create mode 100644 internal/api/api.go create mode 100644 internal/api/auth/auth.go create mode 100644 internal/api/environments.go create mode 100644 internal/api/health.go create mode 100644 internal/api/helpers.go create mode 100644 internal/api/runners.go create mode 100644 internal/api/websocket.go create mode 100644 internal/api/ws/codeocean_reader.go create mode 100644 internal/api/ws/codeocean_writer.go create mode 100644 internal/api/ws/connection.go create mode 100644 internal/config/config.go create mode 100644 internal/environment/abstract_manager.go create mode 100644 internal/environment/k8s_env.go create mode 100644 internal/environment/k8s_manager.go create mode 100644 internal/environment/manager.go create mode 100644 internal/environment/template-environment-job.hcl create mode 100644 internal/runner/abstract_manager.go create mode 100644 internal/runner/execution_environment.go create mode 100644 internal/runner/inactivity_timer.go create mode 100644 internal/runner/k8s_manager.go create mode 100644 internal/runner/k8s_runner.go create mode 100644 internal/runner/manager.go create mode 100644 internal/runner/runner.go create mode 100644 pkg/dto/dto.go create mode 100644 pkg/logging/context_hook.go create mode 100644 pkg/logging/logging.go create mode 100644 pkg/logging/sentry_hook.go create mode 100644 pkg/monitoring/influxdb2_middleware.go create mode 100644 pkg/nullio/content_length.go create mode 100644 pkg/nullio/ls2json.go create mode 100644 pkg/nullio/nullio.go create mode 100644 pkg/storage/storage.go create mode 100644 pkg/util/merge_context.go create mode 100644 pkg/util/util.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..943451d --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# Project binary +/poseidon + +# CPU profiling information +cmd/poseidon/default.pgo + +# Configuration file +configuration.yaml +tests/e2e/configuration.yaml + +# TLS certificate/key +*.crt +*.key +*.pem + +# trivy artifacts +.trivy + +# coverage reports +/coverage + +# IDE files +/.idea +*.iml + +# Dockerfiles repository +deploy/dockerfiles diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..d1f9fe3 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "deploy/codeocean-terraform"] + path = deploy/codeocean-terraform + url = git@lab.xikolo.de:codeocean/codeocean-terraform.git diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..b5d577f --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +sebastian.serth@hpi.de. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d4b0326 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,28 @@ +# Use a Golang base image +FROM golang:latest + +# Set the working directory inside the container +WORKDIR /go/src/app + +# Install dependencies and clone Poseidon repository +RUN apt-get update + # && \ + #apt-get install -y git && \ + #git clone https://github.com/openHPI/poseidon.git . + +# Install make (required for building) +RUN apt-get install -y make + +COPY . . + +# Install required project libraries +RUN make bootstrap + +# Build the binary +RUN make build + +# Expose the port on which Poseidon runs (adjust if necessary) +EXPOSE 8080 + +# Command to run Poseidon +CMD ["./poseidon"] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..eff9632 --- /dev/null +++ b/Makefile @@ -0,0 +1,196 @@ +PROJECT_NAME = poseidon +REPOSITORY_OWNER = openHPI +PKG = github.com/$(REPOSITORY_OWNER)/$(PROJECT_NAME)/cmd/$(PROJECT_NAME) +UNIT_TESTS = $(shell go list ./... | grep -v /e2e | grep -v /recovery) +GOCOVERDIR=coverage + +# Define the PGO file to be used for the build +PGO_FILE = ./cmd/$(PROJECT_NAME)/default.pgo + +# Docker options +DOCKER_TAG = poseidon:latest +DOCKER_OPTS = -v $(shell pwd)/configuration.yaml:/configuration.yaml +LOWER_REPOSITORY_OWNER = $(shell echo $(REPOSITORY_OWNER) | tr A-Z a-z) + +# Define image to be used in e2e tests. Requires `make` to be available. +E2E_TEST_DOCKER_CONTAINER = co_execenv_java +E2E_TEST_DOCKER_TAG = 17 +E2E_TEST_DOCKER_IMAGE = $(LOWER_REPOSITORY_OWNER)/$(E2E_TEST_DOCKER_CONTAINER):$(E2E_TEST_DOCKER_TAG) +# The base image of the e2e test image. This is used to build the base image as well. +E2E_TEST_BASE_CONTAINER := docker_exec_phusion +E2E_TEST_BASE_IMAGE = $(LOWER_REPOSITORY_OWNER)/$(E2E_TEST_BASE_CONTAINER) + +default: help + +.PHONY: all +all: build + +.PHONY: bootstrap +bootstrap: deps lint-deps git-hooks ## Install all dependencies + +.PHONY: deps +deps: ## Get the dependencies + @go get -v -d ./... + @go install github.com/vektra/mockery/v2@latest + +.PHONY: upgrade-deps +upgrade-deps: ## Upgrade the dependencies + @go get -u -v -d ./... + +.PHONY: tidy-deps +tidy-deps: ## Remove unused dependencies + @go mod tidy + + +.PHONY: git-hooks +GIT_HOOKS_DIR := $(shell if [ -f .git ]; then echo $$(cat .git | sed 's/gitdir: //')/hooks; else echo .git/hooks; fi) +git-hooks: $(GIT_HOOKS_DIR)/pre-commit ## Install the git-hooks +$(GIT_HOOKS_DIR)/%: git_hooks/% + @if [ -d "$(GIT_HOOKS_DIR)" ]; then \ + cp $^ $@; \ + chmod 755 $@; \ + fi + +.PHONY: build +build: deps ## Build the binary +ifneq ("$(wildcard $(PGO_FILE))","") +# PGO_FILE exists + @go build -pgo=$(PGO_FILE) -ldflags "-X main.pgoEnabled=true" -o $(PROJECT_NAME) -v $(PKG) +else +# PGO_FILE does not exist + @go build -o $(PROJECT_NAME) -v $(PKG) +endif + +.PHONY: build-cover +build-cover: deps ## Build the binary and with coverage support for e2e-tests + @go build -cover -o $(PROJECT_NAME) -v $(PKG) + +.PHONY: clean +clean: ## Remove previous build + @rm -f poseidon + +.PHONY: docker +docker: + @CGO_ENABLED=0 make build + @docker build -t $(DOCKER_TAG) -f deploy/poseidon/Dockerfile . + +.PHONY: lint-deps +lint-deps: ## Install linter dependencies + @go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest + +.PHONY: golangci-lint +golangci-lint: ## Lint the source code using golangci-lint + @golangci-lint run ./... --timeout=3m + +.PHONY: lint +lint: golangci-lint ## Lint the source code using all linters + +.PHONY: mock +snaked_name=$(shell sed -e "s/\([a-z]\)\([A-Z]\)/\1_\2/g" -e "s/\([A-Z]\)/\L\1/g" -e "s/^_//" <<< "$(name)") +mock: deps ## Create/Update a mock. Example: make mock name=apiQuerier pkg=./nomad + @mockery \ + --name=$(name) \ + --structname=$(name)Mock \ + --filename=$(snaked_name)_mock.go \ + --inpackage \ + --srcpkg=$(pkg) + +.PHONY: test +test: deps ## Run unit tests + @go test -count=1 -short $(UNIT_TESTS) + +.PHONY: race +race: deps ## Run data race detector + @go test -race -count=1 -short $(UNIT_TESTS) + +.PHONY: coverage +coverage: deps ## Generate code coverage report + @mkdir -p $(GOCOVERDIR) + @go test $(UNIT_TESTS) -v -coverprofile $(GOCOVERDIR)/coverage_output.cov -covermode atomic + # exclude mock files from coverage + @cat $(GOCOVERDIR)/coverage_output.cov | grep -v _mock.go > $(GOCOVERDIR)/coverage.cov || true + @rm $(GOCOVERDIR)/coverage_output.cov + @go tool cover -func=$(GOCOVERDIR)/coverage.cov + +.PHONY: coverhtml +coverhtml: coverage ## Generate HTML coverage report + @go tool cover -html=$(GOCOVERDIR)/coverage.cov -o $(GOCOVERDIR)/coverage_unit.html + +deploy/dockerfiles: ## Clone Dockerfiles repository + @git clone git@github.com:$(REPOSITORY_OWNER)/dockerfiles.git deploy/dockerfiles + +.PHONY: run-with-coverage +run-with-coverage: build-cover ## Run binary and capture code coverage (during e2e tests) + @mkdir -p $(GOCOVERDIR) + @GOCOVERDIR=$(GOCOVERDIR) ./$(PROJECT_NAME) + +## This target uses `systemd-socket-activate` (only Linux) to create a systemd socket and makes it accessible to a new Poseidon execution. +.PHONY: run-with-socket +run-with-socket: build + @systemd-socket-activate -l 7200 ./$(PROJECT_NAME) + +.PHONY: convert-run-coverage +convert-run-coverage: ## Convert coverage data (created by `run-with-coverage`) to legacy text format + @go tool covdata textfmt -i $(GOCOVERDIR) -o $(GOCOVERDIR)/coverage_run.cov + @go tool cover -html=$(GOCOVERDIR)/coverage_run.cov -o $(GOCOVERDIR)/coverage_run.html + +.PHONY: e2e-test-docker-image +e2e-test-docker-image: deploy/dockerfiles ## Build Docker image that is used in e2e tests + @docker build -t $(E2E_TEST_BASE_IMAGE) deploy/dockerfiles/$(E2E_TEST_BASE_CONTAINER) + @docker build -t $(E2E_TEST_DOCKER_IMAGE) deploy/dockerfiles/$(E2E_TEST_DOCKER_CONTAINER)/$(E2E_TEST_DOCKER_TAG) + +.PHONY: e2e-test +e2e-test: deps ## Run e2e tests + @[ -z "$(docker images -q $(E2E_TEST_DOCKER_IMAGE))" ] || docker pull $(E2E_TEST_DOCKER_IMAGE) + @go test -count=1 ./tests/e2e -v -args -dockerImage="$(E2E_TEST_DOCKER_IMAGE)" + +.PHONY: e2e-test-recovery +e2e-test-recovery: deps ## Run recovery e2e tests + @go test -count=1 ./tests/recovery -v -args -dockerImage="$(E2E_TEST_DOCKER_IMAGE)" + +.PHONY: e2e-docker +e2e-docker: docker ## Run e2e tests against the Docker container + docker run --rm -p 127.0.0.1:7200:7200 \ + --name $(E2E_TEST_DOCKER_CONTAINER) \ + -e POSEIDON_SERVER_ADDRESS=0.0.0.0 \ + $(DOCKER_OPTS) \ + $(DOCKER_TAG) & + @timeout 30s bash -c "until curl -s -o /dev/null http://127.0.0.1:7200/; do sleep 0.1; done" + @make e2e-test || EXIT=$$?; docker stop $(E2E_TEST_DOCKER_CONTAINER); exit $$EXIT + +# See https://aquasecurity.github.io/trivy/v0.18.1/integrations/gitlab-ci/ +TRIVY_VERSION = $(shell wget -qO - "https://api.github.com/repos/aquasecurity/trivy/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/') +.trivy/trivy: + @mkdir -p .trivy + @wget --no-verbose https://github.com/aquasecurity/trivy/releases/download/v$(TRIVY_VERSION)/trivy_$(TRIVY_VERSION)_Linux-64bit.tar.gz -O - | tar -zxvf - -C .trivy + @chmod +x .trivy/trivy + +# trivy only comes with a template for container_scanning but we want dependency_scanning here +.trivy/contrib/gitlab-dep.tpl: .trivy/trivy + @sed -e "s/container_scanning/dependency_scanning/" .trivy/contrib/gitlab.tpl > $@ + +.PHONY: trivy-scan-deps +trivy-scan-deps: poseidon .trivy/contrib/gitlab-dep.tpl ## Run trivy vulnerability against our dependencies + make trivy TRIVY_COMMAND="fs" TRIVY_TARGET="--skip-dirs .trivy --skip-files go.sum ." TRIVY_TEMPLATE="@.trivy/contrib/gitlab-dep.tpl" + +.PHONY: trivy-scan-docker +trivy-scan-docker: ## Run trivy vulnerability scanner against the docker image + make trivy TRIVY_COMMAND="i" TRIVY_TARGET="--skip-files home/api/poseidon $(DOCKER_TAG)" TRIVY_TEMPLATE="@.trivy/contrib/gitlab.tpl" + +.PHONY: trivy +trivy: .trivy/trivy + # Build report + @.trivy/trivy --cache-dir .trivy/.trivycache/ $(TRIVY_COMMAND) --exit-code 0 --no-progress --format template --template $(TRIVY_TEMPLATE) -o .trivy/gl-scanning-report.json $(TRIVY_TARGET) + # Print report + @.trivy/trivy --cache-dir .trivy/.trivycache/ $(TRIVY_COMMAND) --exit-code 0 --no-progress $(TRIVY_TARGET) + # Fail on severe vulnerabilities + @.trivy/trivy --cache-dir .trivy/.trivycache/ $(TRIVY_COMMAND) --exit-code 1 --severity HIGH,CRITICAL --no-progress $(TRIVY_TARGET) + +.PHONY: help +HELP_FORMAT=" \033[36m%-25s\033[0m %s\n" +help: ## Display this help screen + @echo "Valid targets:" + @grep -E '^[^ ]+:.*?## .*$$' $(MAKEFILE_LIST) | \ + sort | \ + awk 'BEGIN {FS = ":.*?## "}; \ + {printf $(HELP_FORMAT), $$1, $$2}' diff --git a/api/swagger.yaml b/api/swagger.yaml new file mode 100644 index 0000000..8d84475 --- /dev/null +++ b/api/swagger.yaml @@ -0,0 +1,688 @@ +openapi: 3.0.0 +info: + title: Poseidon API + description: | + This API is used by CodeOcean to run code in runners. + version: '0.2.2' + +servers: + - url: '/api/v1' + +components: + schemas: + ExecutionEnvironment: + type: object + properties: + id: + description: The id of the execution environment + type: integer + example: 6 + image: + description: The name of the OCI image used for this execution environment + type: string + example: openhpi/co_execenv_python:latest + prewarmingPoolSize: + description: Number of runners with this configuration to prewarm + type: integer + example: 50 + cpuLimit: + description: CPU limit for one runner in MHz + type: number + example: 100 + memoryLimit: + description: Memory limit for one runner in MB. Exceeding the limit may result in termination of the runner. + type: integer + example: 256 + networkAccess: + description: Whether the runner is allowed to access the network or not + type: boolean + example: true + exposedPorts: + description: A list of ports inside the runner to expose to the outside + type: array + items: + type: integer + minimum: 1 + maximum: 65535 + example: [80, 443] + required: + - id + - image + - prewarmingPoolSize + - cpuLimit + - memoryLimit + - networkAccess + - exposedPorts + additionalProperties: false + FileHeader: + type: object + properties: + name: + description: The path of the file. + type: string + example: ./logs/last.log + entryType: + description: The type of the object (file). See the man page `info ls` for all the meanings. + type: string + minLength: 1 + maxLength: 1 + enum: ["-", "a", "A", "b", "c", "C", "d", "D", "l", "M", "n", "p", "P", "s", "w", "?"] + default: "-" + size: + description: The size of the file in bytes. + type: integer + example: 42 + modificationTime: + description: The Unix Time Stamp of the last modification. + type: integer + example: 1654201799 + required: + - name + - size + - modificationTime + additionalProperties: false + ClientError: + type: object + properties: + message: + description: Explanation on why the request could not be handled + type: string + example: Nomad server unreachable + required: + - message + additionalProperties: false + + securitySchemes: + poseidonAuthToken: + type: apiKey + in: header + name: Poseidon-Token + description: A security token that might be required depending on the Poseidon configuration. + + responses: + BadRequest: + description: Request is invalid. E.g. request body does not follow the json schema required by the given route or url parameters are invalid. + content: + application/json: + schema: + type: object + properties: + message: + description: Explanation on why the request is invalid + type: string + Unauthorized: + description: Client could not be authenticated + NotFound: + description: The entity with the given identifier does not exist. + RunnerGone: + description: The runner is not available any longer. + content: + application/json: + schema: + $ref: "#/components/schemas/ClientError" + FailedFileDependency: + description: The file is not available. + content: + application/json: + schema: + $ref: "#/components/schemas/ClientError" + InternalServerError: + description: Request could not be handled + content: + application/json: + schema: + allOf: + - $ref: "#/components/schemas/ClientError" + - type: object + properties: + errorCode: + description: Machine readable error description + type: string + enum: + - NOMAD_UNREACHABLE + - NOMAD_OVERLOAD + - NOMAD_INTERNAL_SERVER_ERROR + - PREWARMING_POOL_DEPLETING + - UNKNOWN + example: NOMAD_UNREACHABLE + +tags: + - name: runner + description: A unit of execution + - name: execution environment + description: A template for runners + - name: miscellaneous + +paths: + /health: + get: + summary: Check if the API is available + description: If this route does not return, the API is not available. + tags: + - miscellaneous + responses: + "204": + description: Everything okay + "503": + $ref: "#/components/responses/InternalServerError" + /version: + get: + summary: Retrieve the version of Poseidon + description: Return hash-like release information. + tags: + - miscellaneous + responses: + "200": + description: The release information could be returned. + "404": + $ref: "#/components/responses/NotFound" + "500": + $ref: "#/components/responses/InternalServerError" + + /statistics/execution-environments: + get: + summary: Retrieve the statistics about the execution environments of Poseidon + description: Return Return the current availability and usage of runners. + tags: + - miscellaneous + security: + - poseidonAuthToken: [ ] + responses: + "200": + description: Success. Returns all execution environments + content: + application/json: + schema: + type: object + additionalProperties: + type: object + properties: + id: + description: The id of the execution environment. + type: integer + prewarmingPoolSize: + description: Number of runners with this configuration to prewarm. + type: integer + example: 50 + idleRunners: + description: Number of runners currently prewarmed. + type: number + example: 45 + usedRunners: + description: Number of runners currently in use. + type: number + example: 20 + example: + 21: + id: 21 + prewarmingPoolSize: 50 + idleRunners: 45 + usedRunners: 20 + 42: + id: 42 + prewarmingPoolSize: 50 + idleRunners: 45 + usedRunners: 20 + "500": + $ref: "#/components/responses/InternalServerError" + + /runners: + post: + summary: Provide a runner + description: Provide a runner with the requested execution environment to the client (CodeOcean). + tags: + - runner + security: + - poseidonAuthToken: [ ] + requestBody: + description: Runner attributes + required: true + content: + application/json: + schema: + type: object + properties: + inactivityTimeout: + description: Specify how long the runner should be available when there is no activity (execution or file copy). Activity resets this timer. 0 means no timeout + type: integer + default: 0 + example: 60 + executionEnvironmentId: + description: Specifies the execution environment of the runner + type: integer + example: 6 + required: + - executionEnvironmentId + additionalProperties: false + responses: + "200": + description: A runner was successfully reserved + content: + application/json: + schema: + type: object + properties: + runnerId: + description: The UUID of the provided runner + type: string + example: 123e4567-e89b-12d3-a456-426614174000 + mappedPorts: + description: Array containing the addresses of the mapped ports specified in the execution environment. + type: array + items: + description: The exposedPort inside the container is reachable on the returned hostAddress. + type: object + properties: + exposedPort: + description: The port inside the container. + type: integer + minimum: 0 + maximum: 65535 + example: 80 + hostAddress: + description: The address which can be contacted to reach the mapped port. + type: string + example: 10.224.6.18:23832 + "400": + $ref: "#/components/responses/BadRequest" + "401": + $ref: "#/components/responses/Unauthorized" + "404": + $ref: "#/components/responses/NotFound" + "500": + $ref: "#/components/responses/InternalServerError" + + /runners/{runnerId}: + delete: + summary: Destroy the runner + description: The runner is no longer in use and should be destroyed. + tags: + - runner + security: + - poseidonAuthToken: [ ] + parameters: + - name: runnerId + in: path + schema: + description: The UUID of the runner that should be destroyed + type: string + example: 123e4567-e89b-12d3-a456-426614174000 + required: true + responses: + "204": + description: Success + "401": + $ref: "#/components/responses/Unauthorized" + "410": + $ref: "#/components/responses/RunnerGone" + "500": + $ref: "#/components/responses/InternalServerError" + + /runners/{runnerId}/files: + parameters: + - name: runnerId + in: path + schema: + description: Runner on which the files should be placed + type: string + example: 123e4567-e89b-12d3-a456-426614174000 + required: true + get: + summary: List filesystem. + description: List all files available in the runner. + tags: + - runner + security: + - poseidonAuthToken: [ ] + parameters: + - name: recursive + in: query + description: Specify if the filesystem should be listed recursively. + schema: + type: boolean + default: true + required: false + - name: path + in: query + description: Specify the directory from where the filesystem is listed. + schema: + type: string + format: pct-encoded # rfc 3986 + default: "./" + required: false + - name: privilegedExecution + in: query + description: Specifies if the command should be executed as an privileged user. + schema: + type: boolean + default: false + responses: + "200": + description: Success. Returns the listing of the runner's filesystem. + content: + application/json: + schema: + type: object + properties: + files: + description: A list of all Files + type: array + items: + $ref: "#/components/schemas/FileHeader" + "401": + $ref: "#/components/responses/Unauthorized" + "410": + $ref: "#/components/responses/RunnerGone" + "424": + $ref: "#/components/responses/FailedFileDependency" + "500": + $ref: "#/components/responses/InternalServerError" + patch: + summary: Manipulate runner file system + description: Delete the files with the given paths from the file system of the specified runner. Afterwards, copy the enclosed files to the runner. Existing files get overwritten and results of previous file copy operations on the same runner are present when executing multiple requests. + tags: + - runner + security: + - poseidonAuthToken: [ ] + requestBody: + description: Files to copy or delete + required: true + content: + application/json: + schema: + type: object + properties: + delete: + description: Array of filepaths that should be deleted. Each of the given files or directories should be deleted recursively. + type: array + items: + description: Location of the file or directory that should be deleted. Can be absolute (starting with /) or relative to the workspace directory. + type: string + example: /workspace + copy: + description: Array of files that should be placed in the runner. + type: array + items: + type: object + properties: + path: + description: Location where the file should be placed. Can be absolute (starting with /) or relative to the workspace directory. Missing parent directories are created. If this ends with a /, the path is interpreted as a directory and content is ignored. Currently, every file/directory is owned by root but the directories have the sticky bit set to allow unprivileged file creation. + type: string + example: /etc/passwd + content: + description: The content of the file. MUST be base64 encoded. If this is not given, the file is created with no content. + type: string + example: cm9vdDp4OjA6MDo6L3Jvb3Q6L2Jpbi9iYXNo # root:x:0:0::/root:/bin/bash + required: + - path + additionalProperties: false + additionalProperties: false + responses: + "204": + description: All files were saved + "400": + $ref: "#/components/responses/BadRequest" + "401": + $ref: "#/components/responses/Unauthorized" + "410": + $ref: "#/components/responses/RunnerGone" + "500": + $ref: "#/components/responses/InternalServerError" + + /runners/{runnerId}/files/raw: + get: + summary: Download the file. + description: Download the specified file from the selected runner. + tags: + - runner + security: + - poseidonAuthToken: [ ] + parameters: + - name: runnerId + description: Runner on which the command should be executed + in: path + schema: + type: string + example: 123e4567-e89b-12d3-a456-426614174000 + required: true + - name: path + in: query + description: Specify the file that should be returned by its filename including its path and extension. + schema: + type: string + format: pct-encoded # rfc 3986 + example: "./flag.txt" + required: true + - name: privilegedExecution + in: query + description: Specifies if the command should be executed as an privileged user. + schema: + type: boolean + default: false + responses: + "200": + description: Success. Returns the file. + content: + application/octet-stream: + schema: + type: string + format: binary + "401": + $ref: "#/components/responses/Unauthorized" + "410": + $ref: "#/components/responses/RunnerGone" + "424": + $ref: "#/components/responses/FailedFileDependency" + + /runners/{runnerId}/execute: + post: + summary: Execute a command + description: Execute a command in the runner. Whether this starts the actual execution or only prepares a Websocket URL to start it depends on the implementation. + tags: + - runner + security: + - poseidonAuthToken: [ ] + parameters: + - name: runnerId + description: Runner on which the command should be executed + in: path + schema: + type: string + example: 123e4567-e89b-12d3-a456-426614174000 + required: true + requestBody: + description: Description what and how to execute + required: true + content: + application/json: + schema: + type: object + properties: + command: + description: The command to be executed. The working directory for this execution is the working directory of the image of the execution environment. Single quotation ' can not be used. + type: string + example: python exercise.py + privilegedExecution: + description: Specifies if the command should be executed as an privileged user. + type: boolean + default: false + environment: + description: Environment variables for this execution. The keys of this object are the variable names and the value of each key is the value of the variable with the same name. The environment variables of the system remain accessible. + type: object + additionalProperties: + type: string + pattern: "[a-zA-Z_][a-zA-Z0-9_]+" + default: {} + example: + PATH: /bin + timeLimit: + description: Specifies the time in seconds until this execution should be killed. 0 means do not kill + type: integer + default: 0 + example: 5 + required: + - command + additionalProperties: false + responses: + "200": + description: Success. Returns a Websocket URL to connect to + content: + application/json: + schema: + type: object + properties: + websocketUrl: + description: A Websocket endpoint to connect to communicate with the process running in the runner + type: string + example: "ws://ws.example.com/path/to/websocket" + "400": + $ref: "#/components/responses/BadRequest" + "401": + $ref: "#/components/responses/Unauthorized" + "410": + $ref: "#/components/responses/RunnerGone" + "500": + $ref: "#/components/responses/InternalServerError" + + /runners/{runnerId}/websocket: + get: + summary: Connect to an execution. + description: The url including all parameters will be generated and returned by the `execute` route. This is a WebSocket endpoint. The schema for the WS communication is described in `websocket.schema.json`. + tags: + - runner + security: + - poseidonAuthToken: [ ] + parameters: + - name: runnerId + description: Runner on which the execution is created. + in: path + schema: + type: string + example: 123e4567-e89b-12d3-a456-426614174000 + required: true + - name: executionID + description: The execution of the runner that you want to connect to. + in: query + schema: + type: string + example: 123e4567-e89b-12d3-a456-426614174000 + required: true + responses: + "101": + description: Success. Switching protocols to WebSocket. + "401": + $ref: "#/components/responses/Unauthorized" + "404": + $ref: "#/components/responses/NotFound" + "410": + $ref: "#/components/responses/RunnerGone" + "500": + $ref: "#/components/responses/InternalServerError" + + /execution-environments: + get: + summary: List execution environments + description: List all execution environments the API is aware of. + tags: + - execution environment + security: + - poseidonAuthToken: [ ] + parameters: + - name: fetch + in: query + description: Specify whether environments should be fetched again from the executor before returning. Otherwise, the data currently in cache is returned. + schema: + type: boolean + default: false + required: false + responses: + "200": + description: Success. Returns all execution environments + content: + application/json: + schema: + type: object + properties: + executionEnvironments: + description: A list of all execution environments + type: array + items: + $ref: "#/components/schemas/ExecutionEnvironment" + "401": + $ref: "#/components/responses/Unauthorized" + + /execution-environments/{executionEnvironmentId}: + parameters: + - name: executionEnvironmentId + in: path + description: Id of the execution environment + required: true + schema: + type: integer + get: + summary: Show an execution environment + description: Get a representation of the execution environment specified by the id. + tags: + - execution environment + security: + - poseidonAuthToken: [ ] + parameters: + - name: fetch + in: query + description: Specify whether the environment should be fetched again from the executor before returning. Otherwise, the data currently in cache is returned. + schema: + type: boolean + default: false + required: false + responses: + "200": + description: Success. Returns the execution environment + content: + application/json: + schema: + $ref: "#/components/schemas/ExecutionEnvironment" + "400": + $ref: "#/components/responses/BadRequest" + "401": + $ref: "#/components/responses/Unauthorized" + "404": + $ref: "#/components/responses/NotFound" + put: + summary: Create or replace the execution environment + description: This is used for keeping execution environments in sync between the client and the provider of this API. By sending a request with an id, the execution environment is created if it does not exist and updated otherwise. + tags: + - execution environment + security: + - poseidonAuthToken: [ ] + requestBody: + description: The new execution environment + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ExecutionEnvironment" + responses: + "201": + description: The executions environment did not exist and was created + "204": + description: The execution environment was replaced + "400": + $ref: "#/components/responses/BadRequest" + "401": + $ref: "#/components/responses/Unauthorized" + delete: + summary: Delete the execution environment + description: Remove the specified execution environment from the API. + tags: + - execution environment + security: + - poseidonAuthToken: [ ] + responses: + "204": + description: The execution environment was deleted. + "400": + $ref: "#/components/responses/BadRequest" + "401": + $ref: "#/components/responses/Unauthorized" + "404": + $ref: "#/components/responses/NotFound" diff --git a/api/websocket.schema.json b/api/websocket.schema.json new file mode 100644 index 0000000..eaafdff --- /dev/null +++ b/api/websocket.schema.json @@ -0,0 +1,42 @@ +{ + "$schema": "http://json-schema.org/schema#", + "title": "event", + "type": "object", + "oneOf": [ + { + "properties": { + "type": { + "const": "exit" + }, + "data": { + "type": "integer", + "minimum": 0, + "maximum": 255 + } + }, + "required": ["type", "data"], + "additionalProperties": false + }, + { + "properties": { + "type": { + "enum": [ "stdout", "stderr", "error" ] + }, + "data": { + "type": "string" + } + }, + "required": ["type", "data"], + "additionalProperties": false + }, + { + "properties": { + "type": { + "enum": [ "start", "timeout" ] + } + }, + "required": ["type"], + "additionalProperties": false + } + ] +} diff --git a/app.yaml b/app.yaml new file mode 100644 index 0000000..cd8d1c2 --- /dev/null +++ b/app.yaml @@ -0,0 +1,6 @@ +runtime: go122 +api_version: go1 + +handlers: +- url: /.* + script: _go_app \ No newline at end of file diff --git a/cmd/poseidon/main.go b/cmd/poseidon/main.go new file mode 100644 index 0000000..3705351 --- /dev/null +++ b/cmd/poseidon/main.go @@ -0,0 +1,423 @@ +package main + +import ( + "context" + "crypto/tls" + "crypto/x509" + "errors" + "github.com/coreos/go-systemd/v22/activation" + "github.com/coreos/go-systemd/v22/daemon" + "github.com/getsentry/sentry-go" + sentryhttp "github.com/getsentry/sentry-go/http" + "github.com/gorilla/mux" + "github.com/openHPI/poseidon/internal/api" + "github.com/openHPI/poseidon/internal/config" + "github.com/openHPI/poseidon/internal/environment" + "github.com/openHPI/poseidon/internal/runner" + "github.com/openHPI/poseidon/pkg/dto" + "github.com/openHPI/poseidon/pkg/logging" + "github.com/openHPI/poseidon/pkg/monitoring" + "k8s.io/client-go/kubernetes" + "net" + "net/http" + "os" + "os/signal" + "regexp" + "runtime" + "runtime/debug" + "runtime/pprof" + "strconv" + "strings" + "sync" + "syscall" + "time" +) + +var ( + gracefulShutdownWait = 15 * time.Second + log = logging.GetLogger("main") + // If pgoEnabled is true, the binary was built with PGO enabled. + // This is set during compilation with our Makefile as a STRING. + pgoEnabled = "false" +) + +func getVcsRevision(short bool) string { + vcsRevision := "unknown" + vcsModified := false + + if info, ok := debug.ReadBuildInfo(); ok { + for _, setting := range info.Settings { + if setting.Key == "vcs.revision" { + vcsRevision = setting.Value + } else if setting.Key == "vcs.modified" { + var err error + vcsModified, err = strconv.ParseBool(setting.Value) + if err != nil { + vcsModified = true // fallback to true, so we can see that something is wrong + log.WithError(err).Error("Could not parse the vcs.modified setting") + } + } + } + } + + if short { + vcsRevision = vcsRevision[:7] + } + + if vcsModified { + return vcsRevision + "-modified" + } else { + return vcsRevision + } +} + +func initializeUserAgent() { + dto.UserAgentOut = strings.ReplaceAll(dto.UserAgentOut, dto.UserAgentVCSPlaceholder, getVcsRevision(true)) + dto.UserAgentFiltered = strings.ReplaceAll(dto.UserAgentFiltered, dto.UserAgentVCSPlaceholder, getVcsRevision(true)) + dto.UserAgentFiltered = strings.ReplaceAll(dto.UserAgentFiltered, dto.UserAgentFilterTokenPlaceholder, config.Config.Server.LoggingFilterToken) +} + +func initSentry(options *sentry.ClientOptions, profilingEnabled bool) { + if options.Release == "" { + commit := getVcsRevision(false) + options.Release = commit + } + + options.BeforeSendTransaction = func(event *sentry.Event, _ *sentry.EventHint) *sentry.Event { + if event.Tags == nil { + event.Tags = make(map[string]string) + } + event.Tags["go_pgo"] = pgoEnabled + event.Tags["go_profiling"] = strconv.FormatBool(profilingEnabled) + return event + } + + if err := sentry.Init(*options); err != nil { + log.Errorf("sentry.Init: %s", err) + } +} + +func shutdownSentry() { + if err := recover(); err != nil { + sentry.CurrentHub().Recover(err) + sentry.Flush(logging.GracefulSentryShutdown) + } +} + +func initProfiling(options config.Profiling) (cancel func()) { + if options.CPUEnabled { + profile, err := os.Create(options.CPUFile) + if err != nil { + log.WithError(err).Error("Error while opening the profile file") + } + + log.Debug("Starting CPU profiler") + if err := pprof.StartCPUProfile(profile); err != nil { + log.WithError(err).Error("Error while starting the CPU profiler!!") + } + + cancel = func() { + if options.CPUEnabled { + log.Debug("Stopping CPU profiler") + pprof.StopCPUProfile() + if err := profile.Close(); err != nil { + log.WithError(err).Error("Error while closing profile file") + } + } + } + } else { + cancel = func() {} + } + return cancel +} + +// watchMemoryAndAlert monitors the memory usage of Poseidon and sends an alert if it exceeds a threshold. +func watchMemoryAndAlert(options config.Profiling) { + if options.MemoryInterval == 0 { + return + } + + var exceeded bool + for { + var stats runtime.MemStats + runtime.ReadMemStats(&stats) + log.WithField("heap", stats.HeapAlloc).Trace("Current Memory Usage") + + const megabytesToBytes = 1000 * 1000 + if !exceeded && stats.HeapAlloc >= uint64(options.MemoryThreshold)*megabytesToBytes { + exceeded = true + log.WithField("heap", stats.HeapAlloc).Warn("Memory Threshold exceeded") + + err := pprof.Lookup("heap").WriteTo(os.Stderr, 1) + if err != nil { + log.WithError(err).Warn("Failed to log the heap profile") + } + + err = pprof.Lookup("goroutine").WriteTo(os.Stderr, 1) + if err != nil { + log.WithError(err).Warn("Failed to log the goroutines") + } + } else if exceeded { + exceeded = false + log.WithField("heap", stats.HeapAlloc).Info("Memory Threshold no longer exceeded") + } + + select { + case <-time.After(time.Duration(options.MemoryInterval) * time.Millisecond): + continue + case <-context.Background().Done(): + return + } + } +} + +func runServer(router *mux.Router, server *http.Server, cancel context.CancelFunc) { + defer cancel() + defer shutdownSentry() // shutdownSentry must be executed in the main goroutine. + + httpListeners := getHTTPListeners(server) + notifySystemd(router) + serveHTTPListeners(server, httpListeners) +} + +func getHTTPListeners(server *http.Server) (httpListeners []net.Listener) { + var err error + if config.Config.Server.SystemdSocketActivation { + httpListeners, err = activation.Listeners() + } else { + var httpListener net.Listener + httpListener, err = net.Listen("tcp", server.Addr) + httpListeners = append(httpListeners, httpListener) + } + if err != nil || httpListeners == nil || len(httpListeners) == 0 { + log.WithError(err). + WithField("listeners", httpListeners). + WithField("systemd_socket", config.Config.Server.SystemdSocketActivation). + Fatal("Failed listening to any socket") + return nil + } + return httpListeners +} + +func serveHTTPListeners(server *http.Server, httpListeners []net.Listener) { + var wg sync.WaitGroup + wg.Add(len(httpListeners)) + for _, l := range httpListeners { + go func(listener net.Listener) { + defer wg.Done() + log.WithField("address", listener.Addr()).Info("Serving Listener") + serveHTTPListener(server, listener) + }(l) + } + wg.Wait() +} + +func serveHTTPListener(server *http.Server, l net.Listener) { + var err error + if config.Config.Server.TLS.Active { + server.TLSConfig = config.TLSConfig + log.WithField("CertFile", config.Config.Server.TLS.CertFile). + WithField("KeyFile", config.Config.Server.TLS.KeyFile). + Debug("Using TLS") + err = server.ServeTLS(l, config.Config.Server.TLS.CertFile, config.Config.Server.TLS.KeyFile) + } else { + err = server.Serve(l) + } + + if errors.Is(err, http.ErrServerClosed) { + log.WithError(err).WithField("listener", l.Addr()).Info("Server closed") + } else { + log.WithError(err).WithField("listener", l.Addr()).Error("Error during listening and serving") + } +} + +func notifySystemd(router *mux.Router) { + notify, err := daemon.SdNotify(false, daemon.SdNotifyReady) + switch { + case err == nil && !notify: + log.Debug("Systemd Readiness Notification not supported") + case err != nil: + log.WithError(err).WithField("notify", notify).Warn("Failed notifying Readiness to Systemd") + default: + log.Trace("Notified Readiness to Systemd") + } + + interval, err := daemon.SdWatchdogEnabled(false) + if err != nil || interval == 0 { + log.WithError(err).Error("Systemd Watchdog not supported") + return + } + go systemdWatchdogLoop(context.Background(), router, interval) +} + +func systemdWatchdogLoop(ctx context.Context, router *mux.Router, interval time.Duration) { + healthRoute, err := router.Get(api.HealthPath).URL() + if err != nil { + log.WithError(err).Error("Failed to parse Health route") + return + } + healthURL := config.Config.Server.URL().String() + healthRoute.String() + + // Workaround for certificate subject names + unspecifiedAddresses := regexp.MustCompile(`0\.0\.0\.0|\[::]`) + healthURL = unspecifiedAddresses.ReplaceAllString(healthURL, "localhost") + + client := &http.Client{} + if config.Config.Server.TLS.Active { + tlsConfig := &tls.Config{RootCAs: x509.NewCertPool()} // #nosec G402 The default MinTLSVersion is secure. + caCertBytes, err := os.ReadFile(config.Config.Server.TLS.CAFile) + if err != nil { + log.WithError(err).Warn("Cannot read tls ca file") + } else { + ok := tlsConfig.RootCAs.AppendCertsFromPEM(caCertBytes) + log.WithField("success", ok).Trace("Loaded CA certificate") + } + client.Transport = &http.Transport{TLSClientConfig: tlsConfig} + } + + // notificationIntervalFactor defines how many more notifications we send than required. + const notificationIntervalFactor = 2 + for { + select { + case <-ctx.Done(): + return + case <-time.After(interval / notificationIntervalFactor): + notifySystemdWatchdog(ctx, healthURL, client) + } + } +} + +func notifySystemdWatchdog(ctx context.Context, healthURL string, client *http.Client) { + req, err := http.NewRequestWithContext(ctx, http.MethodGet, healthURL, http.NoBody) + if err != nil { + return + } + + req.Header.Set("User-Agent", dto.UserAgentFiltered) + resp, err := client.Do(req) + if err != nil { + log.WithError(err).Debug("Failed watchdog health check") + // We do not check for resp.StatusCode == 503 as Poseidon's error recovery will try to handle such errors + // by itself. The Watchdog should just check that Poseidon handles http requests at all. + return + } + _ = resp.Body.Close() + + notify, err := daemon.SdNotify(false, daemon.SdNotifyWatchdog) + switch { + case err == nil && !notify: + log.Debug("Systemd Watchdog Notification not supported") + case err != nil: + log.WithError(err).WithField("notify", notify).Warn("Failed notifying Systemd Watchdog") + default: + log.Trace("Notified Systemd Watchdog") + } +} + +type managerCreator func(ctx context.Context) ( + runnerManager runner.Manager, environmentManager environment.ManagerHandler) + +// createManagerHandler adds the managers of the passed managerCreator to the chain of responsibility. +func createManagerHandler(handler managerCreator, enabled bool, + nextRunnerManager runner.Manager, nextEnvironmentManager environment.ManagerHandler, ctx context.Context) ( + runnerManager runner.Manager, environmentManager environment.ManagerHandler) { + if !enabled { + return nextRunnerManager, nextEnvironmentManager + } + + runnerManager, environmentManager = handler(ctx) + runnerManager.SetNextHandler(nextRunnerManager) + environmentManager.SetNextHandler(nextEnvironmentManager) + return runnerManager, environmentManager +} + +func createKubernetesManager(ctx context.Context) (runner.Manager, environment.ManagerHandler) { + // API initialization + kubernetesClient, err := kubernetes.NewForConfig(config.Config.Kubernetes.Config) + if err != nil { + log.WithError(err).Fatal("Failed to create kubernetes client") + } + runnerManager := runner.NewKubernetesRunnerManager(ctx, kubernetesClient) + environmentManager := environment.NewKubernetesEnvironmentManager(runnerManager, kubernetesClient) + return runnerManager, environmentManager +} + +// initRouter builds a router that serves the API with the chain of responsibility for multiple managers. +func initRouter(ctx context.Context) *mux.Router { + + runnerManager, environmentManager := createManagerHandler(createKubernetesManager, config.Config.Kubernetes.Enabled, + nil, nil, ctx) + + return api.NewRouter(runnerManager, environmentManager) +} + +// initServer creates a server that serves the routes provided by the router. +func initServer(router *mux.Router) *http.Server { + sentryHandler := sentryhttp.New(sentryhttp.Options{}).Handle(router) + const readTimeout = 15 * time.Second + const idleTimeout = 60 * time.Second + + return &http.Server{ + Addr: config.Config.Server.URL().Host, + // A WriteTimeout would prohibit long-running requests such as creating an execution environment. + // See also https://github.com/openHPI/poseidon/pull/68. + // WriteTimeout: time.Second * 15, + ReadHeaderTimeout: readTimeout, + ReadTimeout: readTimeout, + IdleTimeout: idleTimeout, + Handler: sentryHandler, + } +} + +// shutdownOnOSSignal listens for a signal from the operating system +// When receiving a signal the server shuts down but waits up to 15 seconds to close remaining connections. +func shutdownOnOSSignal(server *http.Server, ctx context.Context, stopProfiling func()) { + // wait for SIGINT + shutdownSignals := make(chan os.Signal, 1) + signal.Notify(shutdownSignals, syscall.Signal(0x2), syscall.Signal(0xf), syscall.Signal(0x6)) + + // wait for SIGUSR1 + writeProfileSignal := make(chan os.Signal, 1) + signal.Notify(writeProfileSignal, syscall.Signal(0xa)) + + select { + case <-ctx.Done(): + os.Exit(1) + case <-writeProfileSignal: + log.Info("Received SIGUSR1...") + + stopProfiling() + // Continue listening on signals and replace `stopProfiling` with an empty function + shutdownOnOSSignal(server, ctx, func() {}) + case <-shutdownSignals: + log.Info("Received SIGINT, shutting down...") + + defer stopProfiling() + ctx, cancel := context.WithTimeout(context.Background(), gracefulShutdownWait) + defer cancel() + if err := server.Shutdown(ctx); err != nil { + log.WithError(err).Warn("error shutting server down") + } + } +} + +func main() { + if err := config.InitConfig(); err != nil { + log.WithError(err).Warn("Could not initialize configuration") + } + initializeUserAgent() + logging.InitializeLogging(config.Config.Logger.Level, config.Config.Logger.Formatter) + initSentry(&config.Config.Sentry, config.Config.Profiling.CPUEnabled) + + cancelInflux := monitoring.InitializeInfluxDB(&config.Config.InfluxDB) + defer cancelInflux() + + stopProfiling := initProfiling(config.Config.Profiling) + go watchMemoryAndAlert(config.Config.Profiling) + + ctx, cancel := context.WithCancel(context.Background()) + router := initRouter(ctx) + server := initServer(router) + go runServer(router, server, cancel) + shutdownOnOSSignal(server, ctx, stopProfiling) +} diff --git a/configuration.example.yaml b/configuration.example.yaml new file mode 100644 index 0000000..185edc0 --- /dev/null +++ b/configuration.example.yaml @@ -0,0 +1,120 @@ +# Configuration of the Poseidon webserver +server: + # Address or hostname on which the webserver listens + # If a hostname is specified, the server might listen on only one of the resolved IPv4 or IPv6 addresses + address: 127.0.0.1 + # Port on which the webserver listens + port: 7200 + # When using Systemd socket activation, Poseidon tries to connect to an existing systemd socket instead of creating its own. + # This is useful for zero downtime deployments as the systemd sockets hold up the connections while Poseidon is restarting. + # Iff systemdsocketactivation, the configured address and port will not be used, instead the provided systemd socket will be. + systemdsocketactivation: false + # If set, this token is required in the `Poseidon-Token` header for each route except /health + # token: SECRET + # Configuration of TLS between the web client and Poseidon. + tls: + # If set, the API uses TLS for all incoming connections. + active: false + # The path to the certificate of the CA authority used for TLS + # cafile: ./ca.crt + # The path to the certificate file used for TLS + # certfile: ./poseidon.crt + # The path to the key file used for TLS + # keyfile: ./poseidon.key + # If true, an additional WebSocket connection will be opened to split stdout and stderr when executing interactively + interactivestderr: true + # If set, the file at the given path overwrites the default Nomad job file in internal/environment/template-environment-job.hcl + # templatejobfile: ./poseidon.hcl + # The LoggingFilterToken filters out Systemd Watchdog requests from the logs and is preconfigured with a random value. + # It can also be manually configured to hide additional requests from the logs, such as those from monitoring systems. + # To use this feature, the respective user agent must be set according to `dto.UserAgentFiltered`. + # However, it is important to consider the security implications of using this expert-level setting for manual values. + # loggingfiltertoken: secret + # alert defines how poseidon should handle specific risks. + alert: + # The prewarming pool threshold [0, 1) defines which part of the prewarming pool should always be filled. + # Setting it to 0 will disable the alert. + # If the prewarming pool is filled for less than, i.e., 50%, the health route of Poseidon will return a warning. + prewarmingpoolthreshold: 0.5 + # The prewarming pool reload timeout (in seconds) defines for how long the low prewarming pool warning (above) + # should be active before Poseidon automatically reloads the environment. + # Setting it to 0 will disable the automatic reload. + prewarmingpoolreloadtimeout: 300 + +aws: + # Specifies whether AWS should be used as executor. + enabled: false + # The endpoint of the WebSocket API + # endpoint: wss://abcdef1234.execute-api.eu-central-1.amazonaws.com/production + # Currently, only static AWS environments are supported. + # For setting this via environment variables you have to use a string separated by spaces, like: POSEIDON_AWS_FUNCTIONS="java11Exec go118Exec". + # functions: + # - java11Exec + # - go118Exec + +kubernetes: + # Specifies whether Kubernetes should be used as executor. + enabled: false + # The namespace in which the Kubernetes pods are created. + namespace: default + config: + host: "" + apiPath: "" + username: "" + password: "" + token: "" + + + + +# Configuration of the logger +logger: + # Log level that is used after reading the config (INFO until then) + level: DEBUG + +# Configuration of the embedded profiler +profiling: + # Enables the runtime profiler + cpuenabled: false + # The file to which the profile is written to. + # The default location `cmd/poseidon/default.pgo` will be picked up during the build process to create a profile-guided build. + cpufile: cmd/poseidon/default.pgo + # If set, a memory watchdog will be started that monitors the memory usage of Poseidon and alerts if the threshold is exceeded. + # The value defines the interval in milliseconds in which the memory usage is checked. + memoryinterval: 30_000 + # The Threshold in MB of memory usage at which Poseidon will start alerting. + memorythreshold: 1_000 + +# Configuration of the sentry logging +sentry: + # The DSN of the sentry endpoint to use. + # If the DSN is not set, the client is effectively disabled. + # dsn: https://example.io + # The environment to be sent with events. + # environment: staging + # This release information is used by Poseidon to provide the version route and tag events in Sentry. + # If no specific value is set, the git commit hash used to build the binary is used. + # release: development + # In debug mode, the debug information is printed to stdout to help you understand what sentry is doing. + # debug: true + # Enable performance tracing. + # enabletracing: true + # The sample rate for sampling traces in the range [0.0, 1.0]. + # tracessamplerate: 1.0 + # The sample rate for sampling performance profiles in the range [0.0, 1.0]. + # This is only used if enabletracing is set to true and is relative to tracessamplerate. + # profilessamplerate: 1.0 + +# Configuration of the influxdb monitoring +influxdb: + # The url of the influxdb endpoint. + # If the url is not set, the influxdb monitoring is disabled. + # url: http://localhost:8086 + # The token to secure the influxdb endpoint. + # token: SecretBase64Token== + # The organization set in your influxdb configuration. + # organization: PoseidonOrg + # The influxdb bucket to store the data in. + # bucket: poseidon + # The stage to be sent with events. + # stage: staging diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..00f481a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +services: + poseidon: + build: + context: . + dockerfile: Dockerfile + ports: + - "7200:7200" + extra_hosts: + - "host.docker.internal:host-gateway" + volumes: + - ./configuration.yaml:/go/src/app/configuration.yaml + restart: unless-stopped diff --git a/docs/configuration.md b/docs/configuration.md new file mode 100644 index 0000000..c51b31b --- /dev/null +++ b/docs/configuration.md @@ -0,0 +1,138 @@ +# Configuration + +Poseidon can be configured to suit different use cases. + + +## Poseidon + +The file `config/config.go` contains a configuration struct containing all possible configuration options for Poseidon. The file also defines default values for most of the configuration options. +The options *can* be overridden with a yaml configuration file whose path can be configured with the flag `-config`. By default, Poseidon searches for `configuration.yaml` in the working directory. `configuration.example.yaml` is an example for a configuration file and contains explanations for all options. The keys of the options specified in the configuration file must be written in lowercase. +The options *can* also be overridden by environment variables. Currently, only the Go types `string`, `int`, `bool` and `struct` (nested) are implemented. The name of the environment variable is constructed as follows: `POSEIDON_(_)*` (all letters are uppercase). + +The precedence of configuration possibilities is: + +1. Environment variables +2. Configuration file +3. Default values + +If a value is not specified, the value of the subsequent possibility is used. + +### Example + +- The default value for the `Port` (type `int`) field in the `Server` field (type `struct`) of the configuration is `7200`. +- This can be overwritten with the following `configuration.yaml`: + + ```yaml + server: + port: 4000 + ``` + +- Again, this can be overwritten by the environment variable `POSEIDON_SERVER_PORT`, e.g., using `export POSEIDON_SERVER_PORT=5000`. + +### Systemd + +Poseidon can be configured to run as a systemd service. Poseidon can optionally also be configured to use a systemd socket. +The use of systemd provides capabilities for managing Poseidon's state and zero downtime deployments. +Minimal examples for systemd configurations can be found in `.github/workflows/resources`. + + +## Nomad + +As a subsystem of Poseidon, Nomad can and should also be configured accordingly. + +### Memory Oversubscription + +Poseidon is using Nomad's feature of memory oversubscription. This way all Runner are allocated with just 16MB. The memory limit defined per execution environment is used as an upper bound for the memory oversubscription. +On the one hand, this feature allows Nomad to execute much more Runner in parallel but, on the other hand, it introduces a risk of overloading the Nomad host. Still, this feature is obligatory for Poseidon to work and therefore needs to be enabled. [Example Configuration](./resources/server.example.hcl) + +```hcl +default_scheduler_config { + memory_oversubscription_enabled = true +} +``` + + +### Scheduler + +By default, Nomad uses a bin-packing scheduler. This places all Jobs on one host. In our case, a high load then leads to one Nomad client being fully utilised while the others remain mostly idle. +To mitigate the overload of a Nomad client, the ["spread" scheduler algorithm](https://www.nomadproject.io/api-docs/operator/scheduler#update-scheduler-configuration) should be used. + +### Maximum Connections per Client + +By default, Nomad only allows 100 maximum concurrent connections per client. However, as Poseidon is a client, this would significantly impair and limit the performance of Poseidon. Thus, this limit should be disabled. + +To do so, ensure the following configuration is set in your Nomad agents, for example by adding it to `/etc/nomad.d/base.hcl`: + +```hcl +limits { + http_max_conns_per_client = 0 +} +``` + +### Enable Networking Support in Nomad + +In order to allow full networking support in Nomad, the `containernetworking-plugins` are required on the host. They can be either installed manually or through a package manager. In the latter case, the installation path might differ. Hence, add the following line to the `client` directive of the Nomad configuration in `/etc/nomad.d/client.hcl`: + +```hcl + cni_path = "/usr/lib/cni" +``` + +If the path is not set up correctly or the dependency is missing, the following error will be shown in Nomad: `failed to find plugin "bridge" in path [/opt/cni/bin]` + +Additionally, we provide a [secure-bridge](./resources/secure-bridge.conflist) configuration for the `containernetworking-plugins`. We highly recommend to use this configuration, as it will automatically configure an appropriate firewall and isolate your local network. Store the [secure-bridge](./resources/secure-bridge.conflist) in an (otherwise) empty folder and specify that folder in `/etc/nomad.d/client.hcl`: + +```hcl + cni_config_dir = "" +``` + +If the path is not set up correctly or with a different name, the placement of allocations will fail in Nomad: `Constraint missing network filtered [all] nodes`. Be sure to set the "dns" and "dns-search" options in `/etc/docker/daemon.json` with reasonable defaults, for example with those shown in our [example configuration for Docker](./resources/docker.daemon.json). + +### Network range + +The default subnet range for Docker containers can be adjusted. +This can be done both in the Docker daemon configuration and the CNI secure-bridge configuration. +Accordingly, every container using the secure-bridge will receive an IP of the CNI configuration. +Both subnet range configurations should not be overlapping. + +An example configuration could use `10.151.0.0/20` for all containers without the CNI secure-bridge and `10.151.16.0/20` +for all containers using the CNI secure bridge. +This would grant 4096 IPs to both subnets and keep 14 network range blocks of the `10.151.0.0/16` network free for future use (e.g., in other CNI configs). + +### Use gVisor as a sandbox + +We recommend using gVisor as a sandbox for the execution environments. First, [install gVisor following the official documentation](https://gvisor.dev/docs/user_guide/install/) and second, adapt the `/etc/docker/daemon.json` with reasonable defaults as shown in our [example configuration for Docker](./resources/docker.daemon.json). + +## Supported Docker Images + +In general, any Docker image can be used as an execution environment. + +### Users + +If the `privilegedExecution` flag is set to `true` during execution, no additional user is required. Otherwise, the following two requirements must be met: + +- A non-privileged user called `user` needs to be present in the image. This user is used to execute the code. +- The Docker image needs to have a `/sbin/setuser` script allowing the execution of the user code as a non-root user, similar to `/usr/bin/su`. + +### Executable Commands + +In order to function properly, Poseidon expects the following commands to be available within the PATH: + +- `cat` +- `env` +- `ls` +- `mkfifo` +- `rm` +- `bash` (not compatible with `sh` or `zsh`) +- `sleep` +- `tar` (including the `--absolute-names` option) +- `true` +- `unset` +- `whoami` + +Tests need additional commands: + +- `echo` +- `head` +- `id` +- `make` +- `tail` diff --git a/docs/development.md b/docs/development.md new file mode 100644 index 0000000..4d2f966 --- /dev/null +++ b/docs/development.md @@ -0,0 +1,136 @@ +# Development + +## Setup + +If you haven't installed Go on your system yet, follow the [golang installation guide](https://golang.org/doc/install). + +To get your local setup going, run `make bootstrap`. It will install all required dependencies as well as setting up our git hooks. Run `make help` to get an overview of available make targets. + +The project can be compiled using `make build`. This should create a binary which can then be executed. + +Alternatively, the `go run ./cmd/poseidon` command can be used to automatically compile and run the project. + +### URLs + +Once you completed the project setup, you can check the availability using the following URL: + +```http request +http://localhost:7200/api/v1/version +``` + +Using the prefix `/api/v1`, all routes as described in [API documentation](../api/swagger.yaml) are available and thus can be used in conjunction with [CodeOcean](https://github.com/openHPI/codeocean). + +## Tests + +As testing framework we use the [testify](https://github.com/stretchr/testify) toolkit. + +Run `make test` to run the unit tests. + +### Mocks + +For mocks we use [mockery](https://github.com/vektra/mockery). You can create a mock for the interface of your choice by running + +```bash +make mock name=INTERFACE_NAME pkg=./PATH/TO/PKG +``` + +on a specific interface. + +For example, for an interface called `ExecutorApi` in the package `nomad`, you might run + +```bash +make mock name=ExecutorApi pkg=./nomad +``` + +If the interface changes, you can rerun this command (deleting the mock file first to avoid errors may be necessary). + +Mocks can also be generated by using mockery directly on a specific interface. To do this, first navigate to the package the interface is defined in. Then run + +```bash +mockery \ + --name=<> \ + --structname=<>Mock \ + --filename=<>Mock.go \ + --inpackage +``` + +For example, for an interface called `ExecutorApi` in the package `nomad`, you might run + +```bash +mockery \ +--name=ExecutorApi \ +--structname=ExecutorAPIMock \ +--filename=ExecutorAPIMock.go \ +--inpackage +``` + +Note that per default, the mocks are created in a `mocks` sub-folder. However, in some cases (if the mock implements private interface methods), it needs to be in the same package as the interface it is mocking. The `--inpackage` flag can be used to avoid creating it in a subdirectory. + +### End-to-end tests + +For e2e tests we provide a separate package. e2e tests require the connection to a Nomad cluster. +Run `make e2e-tests` to run the e2e tests. This requires Poseidon to be already running. +Instead, you can run `make e2e-docker` to run the API in a Docker container, and the e2e tests afterwards. +You can use the `DOCKER_OPTS` variable to add additional arguments to the Docker run command that runs the API. By default, it is set to `-v $(shell pwd)/configuraton.yaml:/configuration.yaml`, which means, your local configuration file is mapped to the container. If you don't want this, use the following command. + +```shell +$ make e2e-docker DOCKER_OPTS="" +``` + +### Local Nomad + +In order to support the development of Poseidon, a local Nomad dev server is recommended. Following the instructions below, you can setup a Nomad server on your local system that won't persist any data between restarts. More details can be found on [Nomad's official website](https://www.nomadproject.io/docs/install). + +#### macOS + +```shell +brew tap hashicorp/tap +brew install hashicorp/tap/nomad +brew services start nomad +``` + +**Prerequisites**: [Docker for Mac](https://docs.docker.com/desktop/mac/install/) is installed and started: +```shell +brew install --cask docker +``` + +**Note**: Due to architecture of Docker networking on macOS, the bridge network is not available with Nomad. Please refer to the [Nomad FAQ](https://www.nomadproject.io/docs/faq#q-how-to-connect-to-my-host-network-when-using-docker-desktop-windows-and-macos) for more information. As a result, those environments having network access enabled won't sync properly to Nomad and thus cannot be started. + +#### Linux + +```shell +curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - +sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" +sudo apt-get update && sudo apt-get install nomad +sudo nomad agent -dev +``` + +#### Namespace registration + +As the Nomad dev serer does not persist any data, the namespace selected in the configuration of Poseidon needs to be created each time the Nomad server is started. This can be done with the following command: + +```shell +nomad namespace apply -description "Poseidon development namespace" poseidon +``` + +Alternatively, the namespace used by Poseidon can be updated to `default` so that no additional namespace is required. + +## Coding Style + +### Git hooks + +The repository contains a git pre-commit hook which runs the go formatting tool `gofmt` to ensure the code is formatted properly before committing. To enable them, run `make git-hooks`. + +### Linter + +To lint our source code and ensure a common code style in the codebase we use [Golang CI Lint](https://golangci-lint.run/usage/install/#local-installation) as a linter. Use `make lint` to execute it. + +## Continuous Integration + +We use the Gitlab CI to automatically build the project, run unit and e2e-tests, perform an automated dependency check and deploy instances of the API. + +### Docker + +The CI builds a Docker image and pushes it to the Docker registry associated with this repo. Execute `sudo docker run -p 7200:7200 ghcr.io/openhpi/poseidon` to run the image locally. You can find all available images on the [package listing on GitHub](https://github.com/openHPI/poseidon/pkgs/container/poseidon). Once started, you can then interact with the webserver on your local port 7200. + +You can also build the Docker image locally by executing `make docker` in the root directory of this project. It builds the binary first and a container with the tag `poseidon:latest` afterwards. You can then start a Docker container with `sudo docker run --rm -p 7200:7200 poseidon:latest`. diff --git a/docs/nomad_usage.md b/docs/nomad_usage.md new file mode 100644 index 0000000..8f1c68f --- /dev/null +++ b/docs/nomad_usage.md @@ -0,0 +1,44 @@ +# Nomad Usage + +Poseidon is an abstraction of the functionality provided by Nomad. In the following we will look at how Poseidon uses Nomad's functionality. + +Nomad is structured in different levels of abstraction. Jobs are collected in namespaces. Each Job can contain several Task Groups. Each Task Group can contain several Tasks. Finally, Allocations map Task Groups to Nomad Clients. For more insights take a look at [the official description](https://www.nomadproject.io/docs/internals/architecture). +In our case, a Task is executed in a Docker container. + +![Overview Poseidon-Nomad mapping](resources/OverviewPoseidonNomadMapping.png) + +## Execution environments as template Jobs + +Execution Environments are mapped to Nomad Jobs. In the following, we will call these Jobs `Template Jobs`. +The naming schema for Template Jobs is "template-\". + +The last figure shows the structure in Nomad. +Each template Job contains a "config" Task Group including a "config" Task. This Task does not perform any computations but is used to store environment-specific attributes, such as the prewarming pool size. +In addition, the template Job contains a "default-group" Task Group with a "default-task" Task. In this Task, `sleep infinity` is executed so that the Task remains active and is ready for dynamic executions in the container. + +As shown in the figure, the "config" Task Group has no Allocation, while the "default-group" has an Allocation. +This is because the "config" Task Group only stores information but does not execute anything. +In the "default-group" the user's code submissions are executed. Therefore, Nomad creates an Allocation that points the Task Group to a Nomad Client for execution. + +## Runner as Nomad Jobs + +As an abstraction of the execution engine, we use `Runner` as a description for Docker containers (currently used) or microVMs. +If a user requests a new runner, Poseidon duplicates the template Job of the corresponding environment. + +When a user then executes their code, Poseidon copies the code into the container and executes it. + +## Prewarming + +To reduce the response time in the process of claiming a runner, Poseidon creates a pool of runners that have been started in advance. +When a user requests a runner, a runner from this pool can be used. +In the background, a new runner is created, thus replenishing the pool. +By running in the background, the user does not have to wait as long as the runner needs to start. +The implementation of this concept can be seen in [the Runner Manager](/internal/runner/manager.go). + +### Lifecycle + +The prewarming pool is initiated when a new environment is requested/created according to the requested prewarming pool size. + +Every change on the environment (resource constraints, prewarming pool size, network access) leads to the destruction of the environment including all used and idle runners (the prewarming pool). After that, the environment and its prewarming pool is re-created. + +Other causes which lead to the destruction of the prewarming pool are the explicit deletion of the environment by using the API route or when the corresponding template job for a given enviornment is no longer available on Nomad but a force update is requested using the `GET /execution-environments/{id}?fetch=true` route. The issue described in the latter case should not occur in normal operation, but could arise from either manually deleting the template job, scheduling issues on Nomad or other unforseenable edge cases. diff --git a/docs/resources/OverviewCodeOceanPoseidonNomad.png b/docs/resources/OverviewCodeOceanPoseidonNomad.png new file mode 100644 index 0000000000000000000000000000000000000000..558402af39075953b7f434683c9affe5be88a852 GIT binary patch literal 188728 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%0D)`NG6Db1dA7Gi06!X2VeK6{flbT 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

k7ld~g&d9?^rLwU;0seZx}k~| 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%0DSa;F<;&FM%*slm$Dh8|O|TzXaEXVc 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

>vzV=GIDavapKCibI7qffqZ!3sR(z}We4mx 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�k-9KY0B+vgsSu8d{}vdka;;{+l8E* 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 L^@{Xm8~6SnL)8cX literal 0 HcmV?d00001 diff --git a/docs/resources/OverviewPoseidonNomadMapping.drawio b/docs/resources/OverviewPoseidonNomadMapping.drawio new file mode 100644 index 0000000..cced3da --- /dev/null +++ b/docs/resources/OverviewPoseidonNomadMapping.drawio @@ -0,0 +1 @@ +7Vxbc+I2FP41PCZjyxfgMckm23bSTtpkp7uPCha2urZFbUGgv76SLeGLDDEYEE4gmcE6ulg+3/mOdGSJgXUXLb8mcBb8TjwUDoDhLQfWlwEApg3AgP8b3iqXDF07F/gJ9kShQvCM/0NCaAjpHHsorRSkhIQUz6rCCYljNKEVGUwS8lYtNiVh9a4z6CNF8DyBoSr9G3s0yKUjMCzkvyDsB/LOpjvOcyIoC4snSQPokbeSyLofWHcJITS/ipZ3KOTKk3rJ6z1syF13LEExbVNh/P3XW/LtzwUdBuljtHiYPl75V6KVBQzn4oEHwA1Ze7dTwpplvaYroQr33zmRGVdpBtQNK8C6sCwy2ZUvvrNWXqXgiaQIeySWGayfr/XCTJbfVYpBpQMgIfPYQ/xxDJb9FmCKnmdwwnPfmPUxWUCjkKVMdrlACcUMx5sQ+zGTUTJbt8nz0HKjHs01OsysEYkQTVasyFuBP3AEqEEJ+6FEGgqb89d1C1jYhUBmB5TARpQUHXaD7Q8SQW8jHE3InRdEogJwBRIlyBx3eErIrM7EMl2GUKb2OkgwQmmm1FPwJsKexxu6neIwvCMhSbJGranD/5g8pQn5iUo5bvYRD1SS5x8hF57edA+DuD1y8ipimGkwABM0cNY9Fv5DBQXksYFFJElCA+KTGIb3hfS2ilNR5pFwYmTo/IMoXQndwTklVezQEtPvvPq1I1I/RGP8+suynFjJRMwet1SJJ3/I9niiqJalZL06iCj2bvh4y9IehhGJvZcAx3nGA+bKE43IQR4Ya+i5arYDzzRJ5skEbdG4mFdQmPiIvsdM1ZASFEKKF9V+HNwsbMUt/EZe08/IWDA0Kow1Rw0+u2mYBdaxOOsq4LygaMbMgnlag+HUDaa6DjfCdgDluk5VuWudafOHpqlo7wQOcYuTmoQwTfGk4qDMioNyO3jHfTzxAX3hqKUvdDr6QlH1ieBsTiOszxpXrc8yalaV90vUKgyLQQNXpWIzXiDdch9QHfQtsxYBvdevanl2kfegsPK1TjoYvtFPw9drwONTGvCudmfbPbC7sTKYXV9f92cEs42azoA6go1POoCpQfgLTH8yyVemxNllDsdBawCpcQ43PhpKatx9E4ZkwrwBiT8nRu7ouuquHP0oqWEQ59LnxKfGIVc7OgDomLEcYR2i3UzngLMW0205bXE7Tlu6sU+NcycknmK/P7ODNUnkwGM5emcHQEt4+yE4M2zJGVMvaYYfjjSudtJYF9LsSZq2Czx6OTNSOOOhKZyH9MrnMVN/qDM8u/HGuVBnT+q0XVoqbdLQwR11/UZyh2bLDn2ljv5Rx75QZz/qSCTfn6qNdFJHdrNEHbheA+ovcRzdxLEuxNmXOG3XBfTypv/rAmB0bvM0PfuAPgJn2oY4QGuMA9QYp++k0T5Dsy7Bzb6kaRvcdB1o9ntvXtuvId/xbnxvvr38cd6bg82BV88WLaxzGwzlJrQLr3fltSWPvry7uVXr7lbZzd4vWtSpo39IBBfq7Ekdq+08cqyVOurGlT4uWtSJo3/RQnMAVqZNiUW7EycmMaqwxlBY48E0yHrNu5BvbpFnFsGBSdV2QUPvcKQuaMgjUx5eyONSz5QfAS2OUpWyGkrvfIoLNJ2ze0qIN5/k1GbPZvA+4NjPE9k+za1H8F6ThkN5lU528Rf93EflntkBMFvzjpAP6njaBrhaF4UsNYa8X6LJPCe8cR8vcELiCInjD5+bqfrPJjkKWn0992VZxpnp1ta8x2c3N1hxZN184lHdoA1aukGtMY3s5fb511/zOEbJZSKzwT02HXw5LYXVNxwSsn45x/p7jiMeKWLJ4odd8pXp4udxrPv/AQ== \ No newline at end of file diff --git a/docs/resources/OverviewPoseidonNomadMapping.png b/docs/resources/OverviewPoseidonNomadMapping.png new file mode 100644 index 0000000000000000000000000000000000000000..4c7716c8eb85ab00c7f28a6b027444ab7ecdf23b GIT binary patch literal 1544958 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

*i%WZrU@ls+&zylax^+=a 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

1o!Q#u&|xV*xwPlD_apE~Q%FXoe{XrX-k> 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 z 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
N_I_Bk@Xc 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

`N4py49BC(bap!bvQl_yjn*uPV9KZe|2 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

#VhFdnF?ApFf)y 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

-Uki(L={MgfeRO~w5yB`6v-v|X?8dg;aJhl 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

Si;K1=X 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 i|`P+y5lKSkGnrFh4NcqSJ>2ss(lToJ_M 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

|$`XB(pG~<)@6cuD9TSgQXTz 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"] + retry_max = 3 + retry_interval = "15s" + } + + # https://www.nomadproject.io/docs/configuration/server + default_scheduler_config { + scheduler_algorithm = "spread" + memory_oversubscription_enabled = true + } +} diff --git a/docs/security.md b/docs/security.md new file mode 100644 index 0000000..cd8f949 --- /dev/null +++ b/docs/security.md @@ -0,0 +1,70 @@ +# Security configurations + +## TLS + +⚠️ We highly encourage the use of TLS in this API to increase the security. + +### Poseidon + +To enable TLS, you need to create an appropriate certificate first. +You can do this in the same way [as for Nomad](https://learn.hashicorp.com/tutorials/nomad/security-enable-tls): +- `cfssl print-defaults csr | cfssl gencert -initca - | cfssljson -bare poseidon-ca` +- Copy `cfssl.json` +- `echo '{}' | cfssl gencert -ca=poseidon-ca.pem -ca-key=poseidon-ca-key.pem -config=cfssl.json -hostname="<>,localhost,127.0.0.1" - | cfssljson -bare poseidon-server` + + +Then, set `server.tls.active` or the corresponding environment variable to `true` and specify the `server.tls.certfile` and `server.tls.keyfile` options. + +### Nomad + +To enable TLS between Poseidon and Nomad, TLS needs to be first activated in Nomad. See [the Nomad documentation](https://learn.hashicorp.com/collections/nomad/transport-security) for a guideline on how to do that. + +Afterwards, it is *required* to set the `nomad.tls.active` config option to `true`, as Nomad will no longer accept any connections over HTTP. To make sure the authenticity of the Nomad host can be validated, the `nomad.tls.cafile` option has to point to a certificate of the signing authority. + +If using mutual TLS between Poseidon and Nomad is desired, the `nomad.tls.certfile` and `nomad.tls.keyfile` options can hold a client certificate. This certificate must be signed by the same CA as the certificates of the Nomad hosts. Note that mTLS can (and should) be enforced by Nomad in this case using the [verify_https_client](https://www.nomadproject.io/docs/configuration/tls#verify_https_client) configuration option. + +Here are sample configurations for [all Nomad nodes](resources/nomad.example.hcl), [the Nomad servers](resources/server.example.hcl) and [the Nomad clients](resources/client.example.hcl). + + +## Authentication + +⚠️ Don't use authentication without TLS enabled, as otherwise the token will be transmitted in clear text. + +### Poseidon + +⚠️ We encourage you to enable authentication for this API. If disabled, everyone with access to your API has also indirectly access to your Nomad cluster as this API uses it. + +The API supports authentication via an HTTP header. To enable it, specify the `server.token` value in the `configuration.yaml` or the corresponding environment variable `POSEIDON_SERVER_TOKEN`. + +Once configured, all requests to the API, except the `health` route require the configured token in the `Poseidon-Token` header. + +An example `curl` command with the configured token being `SECRET` looks as follows: + +```bash +$ curl -H "Poseidon-Token: SECRET" http://localhost:7200/api/v1/some-protected-route +``` + +### Nomad + +An alternative or additional measure to mTLS (as mentioned above) is to enable access control in the Nomad cluster to prevent unauthorised actors from performing unwanted actions in the cluster. + Instructions on setting up the cluster appropriately can be found in [the Nomad documentation](https://learn.hashicorp.com/collections/nomad/access-control). + +Afterwards, it is recommended to create a specific [Access Policy](https://learn.hashicorp.com/tutorials/nomad/access-control-policies?in=nomad/access-control) for Poseidon with the minimal set of capabilities it needs for operating the cluster. A non-minimal example with complete permissions can be found [here](resources/poseidon_policy.hcl). Poseidon requires a corresponding [Access Token](https://learn.hashicorp.com/tutorials/nomad/access-control-tokens?in=nomad/access-control) to send commands to Nomad. A Token looks like this: + +```text +Accessor ID = 463d3216-dc16-570f-380c-a48f5d26d955 +Secret ID = ea1ac4c5-892b-0bcc-9fc5-5faeb5273a13 +Name = Poseidon access token +Type = client +Global = false +Policies = [poseidon] +Create Time = 2021-07-26 12:45:11.437786378 +0000 UTC +Create Index = 246238 +Modify Index = 246238 +``` + +The `Secret ID` of the Token needs to be specified as the value of `nomad.token` value in the `configuration.yaml` or the corresponding environment variable `POSEIDON_NOMAD_TOKEN`. It may also be required for authentication in the Nomad Web UI and for using the Nomad CLI on the Nomad hosts (where the token can be specified via the `NOMAD_TOKEN` environment variable). + +Once configured, all requests to the Nomad API automatically contain a `X-Nomad-Token` header containing the token. + +⚠️ Make sure that no (overly permissive) `anonymous` access policy is present in the cluster after the policy for Poseidon has been added. Anyone can perform actions as specified by this special policy without authenticating! diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..68ff922 --- /dev/null +++ b/go.mod @@ -0,0 +1,141 @@ +module github.com/openHPI/poseidon + +go 1.22.4 + +require ( + github.com/coreos/go-systemd/v22 v22.5.0 + github.com/getsentry/sentry-go v0.28.1 + github.com/google/uuid v1.6.0 + github.com/gorilla/mux v1.8.1 + github.com/gorilla/websocket v1.5.3 + github.com/hashicorp/nomad v1.8.1 + github.com/hashicorp/nomad/api v0.0.0-20240624153520-bbdc8b7fa758 + github.com/influxdata/influxdb-client-go/v2 v2.13.0 + github.com/sirupsen/logrus v1.9.3 + gopkg.in/yaml.v3 v3.0.1 + k8s.io/client-go v0.30.3 +) + +replace ( + // Some Hashicorp dependencies still use the old package name (and version). See https://github.com/hashicorp/nomad/issues/11826. + github.com/armon/go-metrics => github.com/hashicorp/go-metrics v0.5.3 + // Nomad is not compatible with newer versions of HCLv2 yet. See https://github.com/hashicorp/nomad/issues/11826. + github.com/hashicorp/hcl/v2 => github.com/hashicorp/hcl/v2 v2.20.2-0.20240517235513-55d9c02d147d +) + +require ( + github.com/agext/levenshtein v1.2.3 // indirect + github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect + github.com/apparentlymart/go-cidr v1.1.0 // indirect + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect + github.com/armon/go-metrics v0.5.3 // indirect + github.com/bmatcuk/doublestar v1.3.4 // indirect + github.com/cenkalti/backoff/v3 v3.2.2 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/emicklei/go-restful/v3 v3.11.0 // indirect + github.com/fatih/color v1.17.0 // indirect + github.com/go-jose/go-jose/v3 v3.0.3 // indirect + github.com/go-jose/go-jose/v4 v4.0.2 // indirect + github.com/go-logr/logr v1.4.1 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect + github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/swag v0.22.3 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/gojuno/minimock/v3 v3.3.13 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/btree v1.1.2 // indirect + github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/gofuzz v1.2.0 // indirect + github.com/hashicorp/consul/api v1.29.1 // indirect + github.com/hashicorp/cronexpr v1.1.2 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-bexpr v0.1.14 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-cty-funcs v0.0.0-20240510212344-9599f7024f07 // indirect + github.com/hashicorp/go-hclog v1.6.3 // indirect + github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect + github.com/hashicorp/go-msgpack/v2 v2.1.2 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-plugin v1.6.1 // indirect + github.com/hashicorp/go-retryablehttp v0.7.7 // indirect + github.com/hashicorp/go-rootcerts v1.0.2 // indirect + github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 // indirect + github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect + github.com/hashicorp/go-set/v2 v2.1.0 // indirect + github.com/hashicorp/go-sockaddr v1.0.6 // indirect + github.com/hashicorp/go-uuid v1.0.3 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect + github.com/hashicorp/hcl v1.0.1-vault-5 // indirect + github.com/hashicorp/hcl/v2 v2.21.0 // indirect + github.com/hashicorp/memberlist v0.5.1 // indirect + github.com/hashicorp/raft v1.7.0 // indirect + github.com/hashicorp/raft-autopilot v0.2.0 // indirect + github.com/hashicorp/serf v0.10.2-0.20240320153621-5d32001edfaa // indirect + github.com/hashicorp/vault/api v1.14.0 // indirect + github.com/hashicorp/yamux v0.1.1 // indirect + github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/miekg/dns v1.1.61 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 // indirect + github.com/mitchellh/go-wordwrap v1.0.1 // indirect + github.com/mitchellh/hashstructure v1.1.0 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mitchellh/pointerstructure v1.2.1 // indirect + github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/oapi-codegen/runtime v1.1.1 // indirect + github.com/oklog/run v1.1.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect + github.com/ryanuber/go-glob v1.0.0 // indirect + github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect + github.com/shirou/gopsutil/v3 v3.24.5 // indirect + github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/stretchr/objx v0.5.2 // indirect + github.com/stretchr/testify v1.9.0 // indirect + github.com/tklauser/go-sysconf v0.3.14 // indirect + github.com/tklauser/numcpus v0.8.0 // indirect + github.com/yusufpapurcu/wmi v1.2.4 // indirect + github.com/zclconf/go-cty v1.14.4 // indirect + github.com/zclconf/go-cty-yaml v1.0.3 // indirect + golang.org/x/crypto v0.24.0 // indirect + golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect + golang.org/x/mod v0.18.0 // indirect + golang.org/x/net v0.26.0 // indirect + golang.org/x/oauth2 v0.18.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect + golang.org/x/time v0.5.0 // indirect + golang.org/x/tools v0.22.0 // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d // indirect + google.golang.org/grpc v1.64.1 // indirect + google.golang.org/protobuf v1.34.2 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + k8s.io/api v0.30.3 // indirect + k8s.io/apimachinery v0.30.3 // indirect + k8s.io/klog/v2 v2.120.1 // indirect + k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect + k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect + oss.indeed.com/go/libtime v1.6.0 // indirect + sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..8f6cff7 --- /dev/null +++ b/go.sum @@ -0,0 +1,514 @@ +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/RaveNoX/go-jsoncommentstrip v1.0.0/go.mod h1:78ihd09MekBnJnxpICcwzCMzGrKSKYe4AqU6PDYYpjk= +github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= +github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7Dml6nw9rQ= +github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk= +github.com/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= +github.com/apparentlymart/go-cidr v1.1.0 h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU= +github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= +github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= +github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= +github.com/bmatcuk/doublestar v1.1.5/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= +github.com/bmatcuk/doublestar v1.3.4 h1:gPypJ5xD31uhX6Tf54sDPUOBXTqKH4c9aPY66CyQrS0= +github.com/bmatcuk/doublestar v1.3.4/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= +github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= +github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M= +github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= +github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= +github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= +github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= +github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/getsentry/sentry-go v0.28.1 h1:zzaSm/vHmGllRM6Tpx1492r0YDzauArdBfkJRtY6P5k= +github.com/getsentry/sentry-go v0.28.1/go.mod h1:1fQZ+7l7eeJ3wYi82q5Hg8GqAPgefRq+FP/QhafYVgg= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k= +github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= +github.com/go-jose/go-jose/v4 v4.0.2 h1:R3l3kkBds16bO7ZFAEEcofK0MkrAJt3jlJznWZG0nvk= +github.com/go-jose/go-jose/v4 v4.0.2/go.mod h1:WVf9LFMHh/QVrmqrOfqun0C45tMe3RoiKJMPvgWwLfY= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= +github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/gojuno/minimock/v3 v3.0.4/go.mod h1:HqeqnwV8mAABn3pO5hqF+RE7gjA0jsN8cbbSogoGrzI= +github.com/gojuno/minimock/v3 v3.0.6/go.mod h1:v61ZjAKHr+WnEkND63nQPCZ/DTfQgJdvbCi3IuoMblY= +github.com/gojuno/minimock/v3 v3.3.13 h1:sXFO7RbB4JnZiKhgMO4BU4RLYcfhcOSepfiv4wPgGNY= +github.com/gojuno/minimock/v3 v3.3.13/go.mod h1:WtJbR+15lbzpUHoOFtT7Sv1rR885bFxoyHrzoMOmK/k= +github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= +github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= +github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/hashicorp/consul/api v1.29.1 h1:UEwOjYJrd3lG1x5w7HxDRMGiAUPrb3f103EoeKuuEcc= +github.com/hashicorp/consul/api v1.29.1/go.mod h1:lumfRkY/coLuqMICkI7Fh3ylMG31mQSRZyef2c5YvJI= +github.com/hashicorp/consul/proto-public v0.6.1 h1:+uzH3olCrksXYWAYHKqK782CtK9scfqH+Unlw3UHhCg= +github.com/hashicorp/consul/proto-public v0.6.1/go.mod h1:cXXbOg74KBNGajC+o8RlA502Esf0R9prcoJgiOX/2Tg= +github.com/hashicorp/consul/sdk v0.16.1 h1:V8TxTnImoPD5cj0U9Spl0TUxcytjcbbJeADFF07KdHg= +github.com/hashicorp/consul/sdk v0.16.1/go.mod h1:fSXvwxB2hmh1FMZCNl6PwX0Q/1wdWtHJcZ7Ea5tns0s= +github.com/hashicorp/cronexpr v1.1.2 h1:wG/ZYIKT+RT3QkOdgYc+xsKWVRgnxJ1OJtjjy84fJ9A= +github.com/hashicorp/cronexpr v1.1.2/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-bexpr v0.1.14 h1:uKDeyuOhWhT1r5CiMTjdVY4Aoxdxs6EtwgTGnlosyp4= +github.com/hashicorp/go-bexpr v0.1.14/go.mod h1:gN7hRKB3s7yT+YvTdnhZVLTENejvhlkZ8UE4YVBS+Q8= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-cty-funcs v0.0.0-20240510212344-9599f7024f07 h1:gfDsyjG59qNfpOXgv9mJbo4ooJMRWyZxs8mUlk/F1u0= +github.com/hashicorp/go-cty-funcs v0.0.0-20240510212344-9599f7024f07/go.mod h1:Abjk0jbRkDaNCzsRhOv2iDCofYpX1eVsjozoiK63qLA= +github.com/hashicorp/go-hclog v0.9.1/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= +github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= +github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE= +github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= +github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-msgpack/v2 v2.1.2 h1:4Ee8FTp834e+ewB71RDrQ0VKpyFdrKOjvYtnQ/ltVj0= +github.com/hashicorp/go-msgpack/v2 v2.1.2/go.mod h1:upybraOAblm4S7rx0+jeNy+CWWhzywQsSRV5033mMu4= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI= +github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= +github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= +github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 h1:iBt4Ew4XEGLfh6/bPk4rSYmuZJGizr6/x/AEizP0CQc= +github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8/go.mod h1:aiJI+PIApBRQG7FZTEBx5GiiX+HbOHilUdNxUZi4eV0= +github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts= +github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4= +github.com/hashicorp/go-set/v2 v2.1.0 h1:iERPCQWks+I+4bTgy0CT2myZsCqNgBg79ZHqwniohXo= +github.com/hashicorp/go-set/v2 v2.1.0/go.mod h1:6q4nh8UCVZODn2tJ5RbJi8+ki7pjZBsAEYGt6yaGeTo= +github.com/hashicorp/go-sockaddr v1.0.6 h1:RSG8rKU28VTUTvEKghe5gIhIQpv8evvNpnDEyqO4u9I= +github.com/hashicorp/go-sockaddr v1.0.6/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hashicorp/hcl v1.0.1-vault-5 h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM= +github.com/hashicorp/hcl v1.0.1-vault-5/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM= +github.com/hashicorp/hcl/v2 v2.20.2-0.20240517235513-55d9c02d147d h1:7abftkc86B+tlA/0cDy5f6C4LgWfFOCpsGg3RJZsfbw= +github.com/hashicorp/hcl/v2 v2.20.2-0.20240517235513-55d9c02d147d/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= +github.com/hashicorp/memberlist v0.5.1 h1:mk5dRuzeDNis2bi6LLoQIXfMH7JQvAzt3mQD0vNZZUo= +github.com/hashicorp/memberlist v0.5.1/go.mod h1:zGDXV6AqbDTKTM6yxW0I4+JtFzZAJVoIPvss4hV8F24= +github.com/hashicorp/nomad v1.8.1 h1:WDVz8z0Szx9gfPNje+jIFqUZroJ4nXbWHSNcc0hzpe0= +github.com/hashicorp/nomad v1.8.1/go.mod h1:boe1jvdt70t0kCOAg0y4HDjW4ZWHLPvfMKz+cbeiTDg= +github.com/hashicorp/nomad/api v0.0.0-20240624153520-bbdc8b7fa758 h1:zCwy94icHDtxYWqdCeJBBwFblJhHa/l2x0CA8m0K84g= +github.com/hashicorp/nomad/api v0.0.0-20240624153520-bbdc8b7fa758/go.mod h1:svtxn6QnrQ69P23VvIWMR34tg3vmwLz4UdUzm1dSCgE= +github.com/hashicorp/raft v1.2.0/go.mod h1:vPAJM8Asw6u8LxC3eJCUZmRP/E4QmUGE1R7g7k8sG/8= +github.com/hashicorp/raft v1.7.0 h1:4u24Qn6lQ6uwziM++UgsyiT64Q8GyRn43CV41qPiz1o= +github.com/hashicorp/raft v1.7.0/go.mod h1:N1sKh6Vn47mrWvEArQgILTyng8GoDRNYlgKyK7PMjs0= +github.com/hashicorp/raft-autopilot v0.2.0 h1:2/R2RPgamgRKgNWGQioULZvjeKXQZmDuw5Ty+6c+H7Y= +github.com/hashicorp/raft-autopilot v0.2.0/go.mod h1:q6tZ8UAZ5xio2gv2JvjgmtOlh80M6ic8xQYBe2Egkg8= +github.com/hashicorp/raft-boltdb v0.0.0-20171010151810-6e5ba93211ea/go.mod h1:pNv7Wc3ycL6F5oOWn+tPGo2gWD4a5X+yp/ntwdKLjRk= +github.com/hashicorp/serf v0.10.2-0.20240320153621-5d32001edfaa h1:UXgK+AZPfeQ1vOXXXfBj7C7mZpWUgRFcMAKpyyYrYgU= +github.com/hashicorp/serf v0.10.2-0.20240320153621-5d32001edfaa/go.mod h1:RiISHML4PEb0ZN6S6uNW04TO8D6EUtTIOpCzzDnZeGk= +github.com/hashicorp/vault/api v1.14.0 h1:Ah3CFLixD5jmjusOgm8grfN9M0d+Y8fVR2SW0K6pJLU= +github.com/hashicorp/vault/api v1.14.0/go.mod h1:pV9YLxBGSz+cItFDd8Ii4G17waWOQ32zVjMWHe/cOqk= +github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= +github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +github.com/hexdigest/gowrap v1.1.7/go.mod h1:Z+nBFUDLa01iaNM+/jzoOA1JJ7sm51rnYFauKFUB5fs= +github.com/influxdata/influxdb-client-go/v2 v2.13.0 h1:ioBbLmR5NMbAjP4UVA5r9b5xGjpABD7j65pI8kFphDM= +github.com/influxdata/influxdb-client-go/v2 v2.13.0/go.mod h1:k+spCbt9hcvqvUiz0sr5D8LolXHqAAOfPw9v/RIRHl4= +github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf h1:7JTmneyiNEwVBOHSjoMxiWAqB992atOeepeFYegn5RU= +github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= +github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae h1:dIZY4ULFcto4tAFlj1FYZl8ztUZ13bdq+PLY+NOfbyI= +github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/miekg/dns v1.1.61 h1:nLxbwF3XxhwVSm8g9Dghm9MHPaUZuqhPiGL+675ZmEs= +github.com/miekg/dns v1.1.61/go.mod h1:mnAarhS3nWaW+NVP2wTkYVIZyHNJ098SJZUki3eykwQ= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770 h1:drhDO54gdT/a15GBcMRmunZiNcLgPiFIJa23KzmcvcU= +github.com/mitchellh/go-testing-interface v1.14.2-0.20210821155943-2d9075ca8770/go.mod h1:SO/iHr6q2EzbqRApt+8/E9wqebTwQn5y+UlB04bxzo0= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= +github.com/mitchellh/hashstructure v1.1.0 h1:P6P1hdjqAAknpY/M1CGipelZgp+4y9ja9kmUZPXP+H0= +github.com/mitchellh/hashstructure v1.1.0/go.mod h1:xUDAozZz0Wmdiufv0uyhnHkUTN6/6d8ulp4AwfLKrmA= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/pointerstructure v1.2.1 h1:ZhBBeX8tSlRpu/FFhXH4RC4OJzFlqsQhoHZAz4x7TIw= +github.com/mitchellh/pointerstructure v1.2.1/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro= +github.com/oapi-codegen/runtime v1.1.1/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg= +github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= +github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= +github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= +github.com/onsi/gomega v1.31.0 h1:54UJxxj6cPInHS3a35wm6BK/F9nHYueZ1NVujHDrnXE= +github.com/onsi/gomega v1.31.0/go.mod h1:DW9aCi7U6Yi40wNVAvT6kzFnEVEI5n3DloYBiKiT6zk= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= +github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= +github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI= +github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v1.7.1 h1:UJcjSAI3aUKx52kfcfhblgyhZceouhvvs3OYdWgn+PY= +github.com/shoenig/test v1.7.1/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU= +github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY= +github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY= +github.com/tklauser/numcpus v0.8.0/go.mod h1:ZJZlAY+dmR4eut8epnzf0u/VwodKmryxR8txiloSqBE= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= +github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zclconf/go-cty v1.4.0/go.mod h1:nHzOclRkoj++EU9ZjSrZvRG0BXIWt8c7loYc0qXAFGQ= +github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= +github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= +github.com/zclconf/go-cty-yaml v1.0.3 h1:og/eOQ7lvA/WWhHGFETVWNduJM7Rjsv2RRpx1sdFMLc= +github.com/zclconf/go-cty-yaml v1.0.3/go.mod h1:9YLUH4g7lOhVWqUbctnVlZ5KLpg7JAprQNgxSZ1Gyxs= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= +go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190523142557-0e01d883c5c5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d h1:k3zyW3BYYR30e8v3x0bTDdE9vpYFjZHK+HcyqkrppWk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= +google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +k8s.io/api v0.30.3 h1:ImHwK9DCsPA9uoU3rVh4QHAHHK5dTSv1nxJUapx8hoQ= +k8s.io/api v0.30.3/go.mod h1:GPc8jlzoe5JG3pb0KJCSLX5oAFIW3/qNJITlDj8BH04= +k8s.io/apimachinery v0.30.3 h1:q1laaWCmrszyQuSQCfNB8cFgCuDAoPszKY4ucAjDwHc= +k8s.io/apimachinery v0.30.3/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc= +k8s.io/client-go v0.30.3 h1:bHrJu3xQZNXIi8/MoxYtZBBWQQXwy16zqJwloXXfD3k= +k8s.io/client-go v0.30.3/go.mod h1:8d4pf8vYu665/kUbsxWAQ/JDBNWqfFeZnvFiVdmx89U= +k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= +k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= +k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +oss.indeed.com/go/libtime v1.6.0 h1:XQyczJihse/wQGo59OfPF3f4f+Sywv4R8vdGB3S9BfU= +oss.indeed.com/go/libtime v1.6.0/go.mod h1:B2sdEcuzB0zhTKkAuHy4JInKRc7Al3tME4qWam6R7mA= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/internal/api/api.go b/internal/api/api.go new file mode 100644 index 0000000..4f36839 --- /dev/null +++ b/internal/api/api.go @@ -0,0 +1,98 @@ +package api + +import ( + "github.com/gorilla/mux" + "github.com/openHPI/poseidon/internal/api/auth" + "github.com/openHPI/poseidon/internal/config" + "github.com/openHPI/poseidon/internal/environment" + "github.com/openHPI/poseidon/internal/runner" + "github.com/openHPI/poseidon/pkg/dto" + "github.com/openHPI/poseidon/pkg/logging" + "github.com/openHPI/poseidon/pkg/monitoring" + "net/http" +) + +var log = logging.GetLogger("api") + +const ( + BasePath = "/api/v1" + HealthPath = "/health" + VersionPath = "/version" + RunnersPath = "/runners" + EnvironmentsPath = "/execution-environments" + StatisticsPath = "/statistics" +) + +// NewRouter returns a *mux.Router which can be +// used by the net/http package to serve the routes of our API. It +// always returns a router for the newest version of our API. We +// use gorilla/mux because it is more convenient than net/http, e.g. +// when extracting path parameters. +func NewRouter(runnerManager runner.Manager, environmentManager environment.ManagerHandler) *mux.Router { + router := mux.NewRouter() + // this can later be restricted to a specific host with + // `router.Host(...)` and to HTTPS with `router.Schemes("https")` + configureV1Router(router, runnerManager, environmentManager) + router.Use(logging.HTTPLoggingMiddleware) + router.Use(monitoring.InfluxDB2Middleware) + return router +} + +// configureV1Router configures a given router with the routes of version 1 of the Poseidon API. +func configureV1Router(router *mux.Router, + runnerManager runner.Manager, environmentManager environment.ManagerHandler) { + router.NotFoundHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + log.WithContext(r.Context()).WithField("request", r).Debug("Not Found Handler") + w.WriteHeader(http.StatusNotFound) + }) + v1 := router.PathPrefix(BasePath).Subrouter() + v1.HandleFunc(HealthPath, Health(environmentManager)).Methods(http.MethodGet).Name(HealthPath) + v1.HandleFunc(VersionPath, Version).Methods(http.MethodGet).Name(VersionPath) + + runnerController := &RunnerController{manager: runnerManager} + environmentController := &EnvironmentController{manager: environmentManager} + configureRoutes := func(router *mux.Router) { + runnerController.ConfigureRoutes(router) + environmentController.ConfigureRoutes(router) + + // May add a statistics controller if another route joins + statisticsRouter := router.PathPrefix(StatisticsPath).Subrouter() + statisticsRouter. + HandleFunc(EnvironmentsPath, StatisticsExecutionEnvironments(environmentManager)). + Methods(http.MethodGet).Name(EnvironmentsPath) + } + + if auth.InitializeAuthentication() { + // Create new authenticated subrouter. + // All routes added to v1 after this require authentication. + authenticatedV1Router := v1.PathPrefix("").Subrouter() + authenticatedV1Router.Use(auth.HTTPAuthenticationMiddleware) + configureRoutes(authenticatedV1Router) + } else { + configureRoutes(v1) + } +} + +// Version handles the version route. +// It responds the release information stored in the configuration. +func Version(writer http.ResponseWriter, request *http.Request) { + release := config.Config.Sentry.Release + if release != "" { + sendJSON(writer, release, http.StatusOK, request.Context()) + } else { + writer.WriteHeader(http.StatusNotFound) + } +} + +// StatisticsExecutionEnvironments handles the route for statistics about execution environments. +// It responds the prewarming pool size and the number of idle runners and used runners. +func StatisticsExecutionEnvironments(manager environment.Manager) http.HandlerFunc { + return func(writer http.ResponseWriter, request *http.Request) { + result := make(map[string]*dto.StatisticalExecutionEnvironmentData) + environmentsData := manager.Statistics() + for id, data := range environmentsData { + result[id.ToString()] = data + } + sendJSON(writer, result, http.StatusOK, request.Context()) + } +} diff --git a/internal/api/auth/auth.go b/internal/api/auth/auth.go new file mode 100644 index 0000000..1439c04 --- /dev/null +++ b/internal/api/auth/auth.go @@ -0,0 +1,38 @@ +package auth + +import ( + "crypto/subtle" + "github.com/openHPI/poseidon/internal/config" + "github.com/openHPI/poseidon/pkg/logging" + "net/http" +) + +var log = logging.GetLogger("api/auth") + +const TokenHeader = "Poseidon-Token" + +var correctAuthenticationToken []byte + +// InitializeAuthentication returns true iff the authentication is initialized successfully and can be used. +func InitializeAuthentication() bool { + token := config.Config.Server.Token + if token == "" { + return false + } + correctAuthenticationToken = []byte(token) + return true +} + +func HTTPAuthenticationMiddleware(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + token := r.Header.Get(TokenHeader) + if subtle.ConstantTimeCompare([]byte(token), correctAuthenticationToken) == 0 { + log.WithContext(r.Context()). + WithField("token", logging.RemoveNewlineSymbol(token)). + Warn("Incorrect token") + w.WriteHeader(http.StatusUnauthorized) + return + } + next.ServeHTTP(w, r) + }) +} diff --git a/internal/api/environments.go b/internal/api/environments.go new file mode 100644 index 0000000..6c822c3 --- /dev/null +++ b/internal/api/environments.go @@ -0,0 +1,159 @@ +package api + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "github.com/gorilla/mux" + "github.com/openHPI/poseidon/internal/environment" + "github.com/openHPI/poseidon/internal/runner" + "github.com/openHPI/poseidon/pkg/dto" + "github.com/openHPI/poseidon/pkg/logging" + "net/http" + "strconv" +) + +const ( + executionEnvironmentIDKey = "executionEnvironmentId" + fetchEnvironmentKey = "fetch" + listRouteName = "list" + getRouteName = "get" + createOrUpdateRouteName = "createOrUpdate" + deleteRouteName = "delete" +) + +var ErrMissingURLParameter = errors.New("url parameter missing") + +type EnvironmentController struct { + manager environment.ManagerHandler +} + +type ExecutionEnvironmentsResponse struct { + ExecutionEnvironments []runner.ExecutionEnvironment `json:"executionEnvironments"` +} + +func (e *EnvironmentController) ConfigureRoutes(router *mux.Router) { + environmentRouter := router.PathPrefix(EnvironmentsPath).Subrouter() + environmentRouter.HandleFunc("", e.list).Methods(http.MethodGet).Name(listRouteName) + + specificEnvironmentRouter := environmentRouter.Path(fmt.Sprintf("/{%s:[0-9]+}", executionEnvironmentIDKey)).Subrouter() + specificEnvironmentRouter.HandleFunc("", e.get).Methods(http.MethodGet).Name(getRouteName) + specificEnvironmentRouter.HandleFunc("", e.createOrUpdate).Methods(http.MethodPut).Name(createOrUpdateRouteName) + specificEnvironmentRouter.HandleFunc("", e.delete).Methods(http.MethodDelete).Name(deleteRouteName) +} + +// list returns all information about available execution environments. +func (e *EnvironmentController) list(writer http.ResponseWriter, request *http.Request) { + fetch, err := parseFetchParameter(request) + if err != nil { + writeClientError(writer, err, http.StatusBadRequest, request.Context()) + return + } + + environments, err := e.manager.List(fetch) + if err != nil { + writeInternalServerError(writer, err, dto.ErrorUnknown, request.Context()) + return + } + + sendJSON(writer, ExecutionEnvironmentsResponse{environments}, http.StatusOK, request.Context()) +} + +// get returns all information about the requested execution environment. +func (e *EnvironmentController) get(writer http.ResponseWriter, request *http.Request) { + environmentID, err := parseEnvironmentID(request) + if err != nil { + // This case is never used as the router validates the id format + writeClientError(writer, err, http.StatusBadRequest, request.Context()) + return + } + fetch, err := parseFetchParameter(request) + if err != nil { + writeClientError(writer, err, http.StatusBadRequest, request.Context()) + return + } + + executionEnvironment, err := e.manager.Get(environmentID, fetch) + if errors.Is(err, runner.ErrUnknownExecutionEnvironment) { + writer.WriteHeader(http.StatusNotFound) + return + } else if err != nil { + writeInternalServerError(writer, err, dto.ErrorUnknown, request.Context()) + return + } + + sendJSON(writer, executionEnvironment, http.StatusOK, request.Context()) +} + +// delete removes the specified execution environment. +func (e *EnvironmentController) delete(writer http.ResponseWriter, request *http.Request) { + environmentID, err := parseEnvironmentID(request) + if err != nil { + // This case is never used as the router validates the id format + writeClientError(writer, err, http.StatusBadRequest, request.Context()) + return + } + + found, err := e.manager.Delete(environmentID) + if err != nil { + writeInternalServerError(writer, err, dto.ErrorUnknown, request.Context()) + return + } else if !found { + writer.WriteHeader(http.StatusNotFound) + return + } + + writer.WriteHeader(http.StatusNoContent) +} + +// createOrUpdate creates/updates an execution environment on the executor. +func (e *EnvironmentController) createOrUpdate(writer http.ResponseWriter, request *http.Request) { + req := new(dto.ExecutionEnvironmentRequest) + if err := json.NewDecoder(request.Body).Decode(req); err != nil { + writeClientError(writer, err, http.StatusBadRequest, request.Context()) + return + } + environmentID, err := parseEnvironmentID(request) + if err != nil { + writeClientError(writer, err, http.StatusBadRequest, request.Context()) + return + } + + var created bool + logging.StartSpan("api.env.update", "Create Environment", request.Context(), func(ctx context.Context) { + created, err = e.manager.CreateOrUpdate(environmentID, *req, ctx) + }) + if err != nil { + writeInternalServerError(writer, err, dto.ErrorUnknown, request.Context()) + } + + if created { + writer.WriteHeader(http.StatusCreated) + } else { + writer.WriteHeader(http.StatusNoContent) + } +} + +func parseEnvironmentID(request *http.Request) (dto.EnvironmentID, error) { + id, ok := mux.Vars(request)[executionEnvironmentIDKey] + if !ok { + return 0, fmt.Errorf("could not find %s: %w", executionEnvironmentIDKey, ErrMissingURLParameter) + } + environmentID, err := dto.NewEnvironmentID(id) + if err != nil { + return 0, fmt.Errorf("could not update environment: %w", err) + } + return environmentID, nil +} + +func parseFetchParameter(request *http.Request) (fetch bool, err error) { + fetchString := request.FormValue(fetchEnvironmentKey) + if fetchString != "" { + fetch, err = strconv.ParseBool(fetchString) + if err != nil { + return false, fmt.Errorf("could not parse fetch parameter: %w", err) + } + } + return fetch, nil +} diff --git a/internal/api/health.go b/internal/api/health.go new file mode 100644 index 0000000..5c2699f --- /dev/null +++ b/internal/api/health.go @@ -0,0 +1,42 @@ +package api + +import ( + "errors" + "fmt" + "github.com/openHPI/poseidon/internal/config" + "github.com/openHPI/poseidon/internal/environment" + "github.com/openHPI/poseidon/pkg/dto" + "net/http" + "strings" +) + +var ErrorPrewarmingPoolDepleting = errors.New("the prewarming pool is depleting") + +// Health handles the health route. +// It responds that the server is alive. +// If it is not, the response won't reach the client. +func Health(manager environment.Manager) http.HandlerFunc { + return func(writer http.ResponseWriter, request *http.Request) { + if err := checkPrewarmingPool(manager); err != nil { + sendJSON(writer, &dto.InternalServerError{Message: err.Error(), ErrorCode: dto.PrewarmingPoolDepleting}, + http.StatusServiceUnavailable, request.Context()) + return + } + + writer.WriteHeader(http.StatusNoContent) + } +} + +func checkPrewarmingPool(manager environment.Manager) error { + var depletingEnvironments []int + for _, data := range manager.Statistics() { + if float64(data.IdleRunners)/float64(data.PrewarmingPoolSize) < config.Config.Server.Alert.PrewarmingPoolThreshold { + depletingEnvironments = append(depletingEnvironments, data.ID) + } + } + if len(depletingEnvironments) > 0 { + arrayToString := strings.Trim(strings.Join(strings.Fields(fmt.Sprint(depletingEnvironments)), ", "), "[]") + return fmt.Errorf("%w: environments %s", ErrorPrewarmingPoolDepleting, arrayToString) + } + return nil +} diff --git a/internal/api/helpers.go b/internal/api/helpers.go new file mode 100644 index 0000000..eb3cad4 --- /dev/null +++ b/internal/api/helpers.go @@ -0,0 +1,41 @@ +package api + +import ( + "context" + "encoding/json" + "fmt" + "github.com/openHPI/poseidon/pkg/dto" + "net/http" +) + +func writeInternalServerError(writer http.ResponseWriter, err error, errorCode dto.ErrorCode, ctx context.Context) { + sendJSON(writer, &dto.InternalServerError{Message: err.Error(), ErrorCode: errorCode}, + http.StatusInternalServerError, ctx) +} + +func writeClientError(writer http.ResponseWriter, err error, status uint16, ctx context.Context) { + sendJSON(writer, &dto.ClientError{Message: err.Error()}, int(status), ctx) +} + +func sendJSON(writer http.ResponseWriter, content interface{}, httpStatusCode int, ctx context.Context) { + writer.Header().Set("Content-Type", "application/json") + writer.WriteHeader(httpStatusCode) + response, err := json.Marshal(content) + if err != nil { + // cannot produce infinite recursive loop, since json.Marshal of dto.InternalServerError won't return an error + writeInternalServerError(writer, err, dto.ErrorUnknown, ctx) + return + } + if _, err = writer.Write(response); err != nil { + log.WithError(err).WithContext(ctx).Error("Could not write JSON response") + http.Error(writer, err.Error(), http.StatusInternalServerError) + } +} + +func parseJSONRequestBody(writer http.ResponseWriter, request *http.Request, structure interface{}) error { + if err := json.NewDecoder(request.Body).Decode(structure); err != nil { + writeClientError(writer, err, http.StatusBadRequest, request.Context()) + return fmt.Errorf("error parsing JSON request body: %w", err) + } + return nil +} diff --git a/internal/api/runners.go b/internal/api/runners.go new file mode 100644 index 0000000..20d007e --- /dev/null +++ b/internal/api/runners.go @@ -0,0 +1,259 @@ +package api + +import ( + "context" + "errors" + "fmt" + "github.com/google/uuid" + "github.com/gorilla/mux" + "github.com/openHPI/poseidon/internal/config" + "github.com/openHPI/poseidon/internal/runner" + "github.com/openHPI/poseidon/pkg/dto" + "github.com/openHPI/poseidon/pkg/logging" + "github.com/openHPI/poseidon/pkg/monitoring" + "io" + "net/http" + "net/url" + "strconv" + "strings" +) + +const ( + ExecutePath = "/execute" + WebsocketPath = "/websocket" + UpdateFileSystemPath = "/files" + ListFileSystemRouteName = UpdateFileSystemPath + "_list" + FileContentRawPath = UpdateFileSystemPath + "/raw" + ProvideRoute = "provideRunner" + DeleteRoute = "deleteRunner" + RunnerIDKey = "runnerId" + ExecutionIDKey = "executionID" + PathKey = "path" + RecursiveKey = "recursive" + PrivilegedExecutionKey = "privilegedExecution" +) + +var ErrForbiddenCharacter = errors.New("use of forbidden character") + +type RunnerController struct { + manager runner.Accessor + runnerRouter *mux.Router +} + +// ConfigureRoutes configures a given router with the runner routes of our API. +func (r *RunnerController) ConfigureRoutes(router *mux.Router) { + runnersRouter := router.PathPrefix(RunnersPath).Subrouter() + runnersRouter.HandleFunc("", r.provide).Methods(http.MethodPost).Name(ProvideRoute) + r.runnerRouter = runnersRouter.PathPrefix(fmt.Sprintf("/{%s}", RunnerIDKey)).Subrouter() + r.runnerRouter.Use(r.findRunnerMiddleware) + r.runnerRouter.HandleFunc(UpdateFileSystemPath, r.listFileSystem).Methods(http.MethodGet). + Name(ListFileSystemRouteName) + r.runnerRouter.HandleFunc(UpdateFileSystemPath, r.updateFileSystem).Methods(http.MethodPatch). + Name(UpdateFileSystemPath) + r.runnerRouter.HandleFunc(FileContentRawPath, r.fileContent).Methods(http.MethodGet).Name(FileContentRawPath) + r.runnerRouter.HandleFunc(ExecutePath, r.execute).Methods(http.MethodPost).Name(ExecutePath) + r.runnerRouter.HandleFunc(WebsocketPath, r.connectToRunner).Methods(http.MethodGet).Name(WebsocketPath) + r.runnerRouter.HandleFunc("", r.delete).Methods(http.MethodDelete).Name(DeleteRoute) +} + +// provide handles the provide runners API route. +// It tries to respond with the id of a unused runner. +// This runner is then reserved for future use. +func (r *RunnerController) provide(writer http.ResponseWriter, request *http.Request) { + runnerRequest := new(dto.RunnerRequest) + if err := parseJSONRequestBody(writer, request, runnerRequest); err != nil { + return + } + environmentID := dto.EnvironmentID(runnerRequest.ExecutionEnvironmentID) + + var nextRunner runner.Runner + var err error + logging.StartSpan("api.runner.claim", "Claim Runner", request.Context(), func(_ context.Context) { + nextRunner, err = r.manager.Claim(environmentID, runnerRequest.InactivityTimeout) + }) + if err != nil { + switch { + case errors.Is(err, runner.ErrUnknownExecutionEnvironment): + writeClientError(writer, err, http.StatusNotFound, request.Context()) + case errors.Is(err, runner.ErrNoRunnersAvailable): + log.WithContext(request.Context()).Warn("No runners available") + writeInternalServerError(writer, err, dto.Errork8sOverload, request.Context()) + default: + writeInternalServerError(writer, err, dto.ErrorUnknown, request.Context()) + } + return + } + monitoring.AddRunnerMonitoringData(request, nextRunner.ID(), nextRunner.Environment()) + sendJSON(writer, &dto.RunnerResponse{ID: nextRunner.ID(), MappedPorts: nextRunner.MappedPorts()}, + http.StatusOK, request.Context()) +} + +// listFileSystem handles the files API route with the method GET. +// It returns a listing of the file system of the provided runner. +func (r *RunnerController) listFileSystem(writer http.ResponseWriter, request *http.Request) { + targetRunner, _ := runner.FromContext(request.Context()) + + recursiveRaw := request.URL.Query().Get(RecursiveKey) + recursive, err := strconv.ParseBool(recursiveRaw) + recursive = err != nil || recursive + + path := request.URL.Query().Get(PathKey) + if path == "" { + path = "./" + } + privilegedExecution, err := strconv.ParseBool(request.URL.Query().Get(PrivilegedExecutionKey)) + if err != nil { + privilegedExecution = false + } + + writer.Header().Set("Content-Type", "application/json") + logging.StartSpan("api.fs.list", "List File System", request.Context(), func(ctx context.Context) { + err = targetRunner.ListFileSystem(path, recursive, writer, privilegedExecution, ctx) + }) + if errors.Is(err, runner.ErrFileNotFound) { + writeClientError(writer, err, http.StatusFailedDependency, request.Context()) + return + } else if err != nil { + log.WithContext(request.Context()).WithError(err).Error("Could not perform the requested listFileSystem.") + writeInternalServerError(writer, err, dto.ErrorUnknown, request.Context()) + return + } +} + +// updateFileSystem handles the files API route. +// It takes an dto.UpdateFileSystemRequest and sends it to the runner for processing. +func (r *RunnerController) updateFileSystem(writer http.ResponseWriter, request *http.Request) { + monitoring.AddRequestSize(request) + fileCopyRequest := new(dto.UpdateFileSystemRequest) + if err := parseJSONRequestBody(writer, request, fileCopyRequest); err != nil { + return + } + + targetRunner, _ := runner.FromContext(request.Context()) + + var err error + logging.StartSpan("api.fs.update", "Update File System", request.Context(), func(ctx context.Context) { + err = targetRunner.UpdateFileSystem(fileCopyRequest, ctx) + }) + if err != nil { + log.WithContext(request.Context()).WithError(err).Error("Could not perform the requested updateFileSystem.") + writeInternalServerError(writer, err, dto.ErrorUnknown, request.Context()) + return + } + + writer.WriteHeader(http.StatusNoContent) +} + +func (r *RunnerController) fileContent(writer http.ResponseWriter, request *http.Request) { + targetRunner, _ := runner.FromContext(request.Context()) + path := request.URL.Query().Get(PathKey) + privilegedExecution, err := strconv.ParseBool(request.URL.Query().Get(PrivilegedExecutionKey)) + if err != nil { + privilegedExecution = false + } + + writer.Header().Set("Content-Disposition", "attachment; filename=\""+path+"\"") + logging.StartSpan("api.fs.read", "File Content", request.Context(), func(ctx context.Context) { + err = targetRunner.GetFileContent(path, writer, privilegedExecution, ctx) + }) + if errors.Is(err, runner.ErrFileNotFound) { + writeClientError(writer, err, http.StatusFailedDependency, request.Context()) + return + } else if err != nil { + log.WithContext(request.Context()).WithError(err).Error("Could not retrieve the requested file.") + writeInternalServerError(writer, err, dto.ErrorUnknown, request.Context()) + return + } +} + +// execute handles the execute API route. +// It takes an ExecutionRequest and stores it for a runner. +// It returns a url to connect to for a websocket connection to this execution in the corresponding runner. +func (r *RunnerController) execute(writer http.ResponseWriter, request *http.Request) { + executionRequest := new(dto.ExecutionRequest) + if err := parseJSONRequestBody(writer, request, executionRequest); err != nil { + return + } + forbiddenCharacters := "'" + if strings.ContainsAny(executionRequest.Command, forbiddenCharacters) { + writeClientError(writer, ErrForbiddenCharacter, http.StatusBadRequest, request.Context()) + return + } + + var scheme string + if config.Config.Server.TLS.Active { + scheme = "wss" + } else { + scheme = "ws" + } + targetRunner, _ := runner.FromContext(request.Context()) + + path, err := r.runnerRouter.Get(WebsocketPath).URL(RunnerIDKey, targetRunner.ID()) + if err != nil { + log.WithContext(request.Context()).WithError(err).Error("Could not create runner websocket URL.") + writeInternalServerError(writer, err, dto.ErrorUnknown, request.Context()) + return + } + newUUID, err := uuid.NewRandom() + if err != nil { + log.WithContext(request.Context()).WithError(err).Error("Could not create execution id") + writeInternalServerError(writer, err, dto.ErrorUnknown, request.Context()) + return + } + id := newUUID.String() + + logging.StartSpan("api.runner.exec", "Store Execution", request.Context(), func(ctx context.Context) { + targetRunner.StoreExecution(id, executionRequest) + }) + webSocketURL := url.URL{ + Scheme: scheme, + Host: request.Host, + Path: path.String(), + RawQuery: fmt.Sprintf("%s=%s", ExecutionIDKey, id), + } + + sendJSON(writer, &dto.ExecutionResponse{WebSocketURL: webSocketURL.String()}, http.StatusOK, request.Context()) +} + +// The findRunnerMiddleware looks up the runnerId for routes containing it +// and adds the runner to the context of the request. +func (r *RunnerController) findRunnerMiddleware(next http.Handler) http.Handler { + return http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) { + runnerID := mux.Vars(request)[RunnerIDKey] + targetRunner, err := r.manager.Get(runnerID) + if err != nil { + // We discard the request body because an early write causes errors for some clients. + // See https://github.com/openHPI/poseidon/issues/54 + _, readErr := io.ReadAll(request.Body) + if readErr != nil { + log.WithContext(request.Context()).WithError(readErr).Debug("Failed to discard the request body") + } + writeClientError(writer, err, http.StatusGone, request.Context()) + return + } + ctx := runner.NewContext(request.Context(), targetRunner) + ctx = context.WithValue(ctx, dto.ContextKey(dto.KeyRunnerID), targetRunner.ID()) + ctx = context.WithValue(ctx, dto.ContextKey(dto.KeyEnvironmentID), targetRunner.Environment().ToString()) + requestWithRunner := request.WithContext(ctx) + monitoring.AddRunnerMonitoringData(requestWithRunner, targetRunner.ID(), targetRunner.Environment()) + + next.ServeHTTP(writer, requestWithRunner) + }) +} + +// delete handles the delete runner API route. +// It destroys the given runner on the executor and removes it from the used runners list. +func (r *RunnerController) delete(writer http.ResponseWriter, request *http.Request) { + targetRunner, _ := runner.FromContext(request.Context()) + + var err error + logging.StartSpan("api.runner.delete", "Return Runner", request.Context(), func(ctx context.Context) { + err = r.manager.Return(targetRunner) + }) + if err != nil { + writeInternalServerError(writer, err, dto.Errork8sInternalServerError, request.Context()) + return + } + + writer.WriteHeader(http.StatusNoContent) +} diff --git a/internal/api/websocket.go b/internal/api/websocket.go new file mode 100644 index 0000000..e173e86 --- /dev/null +++ b/internal/api/websocket.go @@ -0,0 +1,113 @@ +package api + +import ( + "context" + "errors" + "fmt" + "github.com/gorilla/websocket" + "github.com/openHPI/poseidon/internal/api/ws" + "github.com/openHPI/poseidon/internal/runner" + "github.com/openHPI/poseidon/pkg/dto" + "github.com/openHPI/poseidon/pkg/logging" + "net/http" +) + +var ErrUnknownExecutionID = errors.New("execution id unknown") + +// webSocketProxy is an encapsulation of logic for forwarding between Runners and CodeOcean. +type webSocketProxy struct { + ctx context.Context + Input ws.WebSocketReader + Output ws.WebSocketWriter +} + +// upgradeConnection upgrades a connection to a websocket and returns a webSocketProxy for this connection. +func upgradeConnection(writer http.ResponseWriter, request *http.Request) (ws.Connection, error) { + connUpgrader := websocket.Upgrader{} + connection, err := connUpgrader.Upgrade(writer, request, nil) + if err != nil { + log.WithContext(request.Context()).WithError(err).Warn("Connection upgrade failed") + return nil, fmt.Errorf("error upgrading the connection: %w", err) + } + return connection, nil +} + +// newWebSocketProxy returns an initiated and started webSocketProxy. +// As this proxy is already started, a start message is send to the client. +func newWebSocketProxy(connection ws.Connection, proxyCtx context.Context) *webSocketProxy { + // wsCtx is detached from the proxyCtx + // as it should send all messages in the buffer even shortly after the execution/proxy is done. + wsCtx := context.WithoutCancel(proxyCtx) + wsCtx, cancelWsCommunication := context.WithCancel(wsCtx) + + proxy := &webSocketProxy{ + ctx: wsCtx, + Input: ws.NewCodeOceanToRawReader(connection, wsCtx, proxyCtx), + Output: ws.NewCodeOceanOutputWriter(connection, wsCtx, cancelWsCommunication), + } + + connection.SetCloseHandler(func(code int, text string) error { + log.WithContext(wsCtx).WithField("code", code).WithField("text", text).Debug("The client closed the connection.") + cancelWsCommunication() + return nil + }) + return proxy +} + +// waitForExit waits for an exit of either the runner (when the command terminates) or the client closing the WebSocket +// and handles WebSocket exit messages. +func (wp *webSocketProxy) waitForExit(exit <-chan runner.ExitInfo, cancelExecution context.CancelFunc) { + wp.Input.Start() + + var exitInfo runner.ExitInfo + select { + case <-wp.ctx.Done(): + log.WithContext(wp.ctx).Info("Client closed the connection") + wp.Input.Stop() + wp.Output.Close(nil) + cancelExecution() + <-exit // /internal/runner/runner.go handleExitOrContextDone does not require client connection anymore. + <-exit // The goroutine closes this channel indicating that it does not use the connection to the executor anymore. + case exitInfo = <-exit: + log.WithContext(wp.ctx).Info("Execution returned") + wp.Input.Stop() + wp.Output.Close(&exitInfo) + } +} + +// connectToRunner is the endpoint for websocket connections. +func (r *RunnerController) connectToRunner(writer http.ResponseWriter, request *http.Request) { + targetRunner, _ := runner.FromContext(request.Context()) + + executionID := request.URL.Query().Get(ExecutionIDKey) + if !targetRunner.ExecutionExists(executionID) { + writeClientError(writer, ErrUnknownExecutionID, http.StatusNotFound, request.Context()) + return + } + + connection, err := upgradeConnection(writer, request) + if err != nil { + writeInternalServerError(writer, err, dto.ErrorUnknown, request.Context()) + return + } + + // We do not inherit from the request.Context() here because we rely on the WebSocket Close Handler. + proxyCtx := context.WithoutCancel(request.Context()) + proxyCtx, cancelProxy := context.WithCancel(proxyCtx) + defer cancelProxy() + proxy := newWebSocketProxy(connection, proxyCtx) + + log.WithContext(proxyCtx). + WithField("executionID", logging.RemoveNewlineSymbol(executionID)). + Info("Running execution") + logging.StartSpan("api.runner.connect", "Execute Interactively", request.Context(), func(ctx context.Context) { + exit, cancel, err := targetRunner.ExecuteInteractively(executionID, + proxy.Input, proxy.Output.StdOut(), proxy.Output.StdErr(), ctx) + if err != nil { + log.WithContext(ctx).WithError(err).Warn("Cannot execute request.") + return // The proxy is stopped by the deferred cancel. + } + + proxy.waitForExit(exit, cancel) + }) +} diff --git a/internal/api/ws/codeocean_reader.go b/internal/api/ws/codeocean_reader.go new file mode 100644 index 0000000..4b4c677 --- /dev/null +++ b/internal/api/ws/codeocean_reader.go @@ -0,0 +1,177 @@ +package ws + +import ( + "context" + "github.com/gorilla/websocket" + "github.com/openHPI/poseidon/pkg/logging" + "io" +) + +const CodeOceanToRawReaderBufferSize = 1024 + +var log = logging.GetLogger("ws") + +// WebSocketReader is an interface that is intended for providing abstraction around reading from a WebSocket. +// Besides, io.Reader, it also implements io.Writer. The Write method is used to inject data into the WebSocket stream. +type WebSocketReader interface { + io.Reader + io.Writer + Start() + Stop() +} + +// codeOceanToRawReader is an io.Reader implementation that provides the content of the WebSocket connection +// to CodeOcean. You have to start the Reader by calling readInputLoop. After that you can use the Read function. +type codeOceanToRawReader struct { + connection Connection + + // readCtx is the context in that messages from CodeOcean are read. + readCtx context.Context + cancelReadCtx context.CancelFunc + // executorCtx is the context in that messages are forwarded to the executor. + executorCtx context.Context + + // A buffered channel of bytes is used to store data coming from CodeOcean via WebSocket + // and retrieve it when Read(...) is called. Since channels are thread-safe, we use one here + // instead of bytes.Buffer. + buffer chan byte + // The priorityBuffer is a buffer for injecting data into stdin of the execution from Poseidon, + // for example the character that causes the tty to generate a SIGQUIT signal. + // It is always read before the regular buffer. + priorityBuffer chan byte +} + +func NewCodeOceanToRawReader(connection Connection, wsCtx, executorCtx context.Context) *codeOceanToRawReader { + return &codeOceanToRawReader{ + connection: connection, + readCtx: wsCtx, // This context may be canceled before the executorCtx. + cancelReadCtx: func() {}, + executorCtx: executorCtx, + buffer: make(chan byte, CodeOceanToRawReaderBufferSize), + priorityBuffer: make(chan byte, CodeOceanToRawReaderBufferSize), + } +} + +// readInputLoop reads from the WebSocket connection and buffers the user's input. +// This is necessary because input must be read for the connection to handle special messages like close and call the +// CloseHandler. +func (cr *codeOceanToRawReader) readInputLoop(ctx context.Context) { + readMessage := make(chan bool) + loopContext, cancelInputLoop := context.WithCancel(ctx) + defer cancelInputLoop() + readingContext, cancelNextMessage := context.WithCancel(loopContext) + defer cancelNextMessage() + + for loopContext.Err() == nil { + var messageType int + var reader io.Reader + var err error + + go func() { + messageType, reader, err = cr.connection.NextReader() + select { + case <-readingContext.Done(): + case readMessage <- true: + } + }() + select { + case <-loopContext.Done(): + return + case <-readMessage: + } + + if inputContainsError(messageType, err, loopContext) { + return + } + if handleInput(reader, cr.buffer, loopContext) { + return + } + } +} + +// handleInput receives a new message from the client and may forward it to the executor. +func handleInput(reader io.Reader, buffer chan byte, ctx context.Context) (done bool) { + message, err := io.ReadAll(reader) + if err != nil { + log.WithContext(ctx).WithError(err).Warn("error while reading WebSocket message") + return true + } + + log.WithContext(ctx).WithField("message", string(message)).Trace("Received message from client") + for _, character := range message { + select { + case <-ctx.Done(): + return true + case buffer <- character: + } + } + return false +} + +func inputContainsError(messageType int, err error, ctx context.Context) (done bool) { + if err != nil && websocket.IsCloseError(err, websocket.CloseNormalClosure) { + log.WithContext(ctx).Debug("ReadInputLoop: The client closed the connection!") + // The close handler will do something soon. + return true + } else if err != nil { + log.WithContext(ctx).WithError(err).Warn("Error reading client message") + return true + } + if messageType != websocket.TextMessage { + log.WithContext(ctx).WithField("messageType", messageType).Warn("Received message of wrong type") + return true + } + return false +} + +// Start starts the read input loop asynchronously. +func (cr *codeOceanToRawReader) Start() { + ctx, cancel := context.WithCancel(cr.readCtx) + cr.cancelReadCtx = cancel + go cr.readInputLoop(ctx) +} + +// Stop stops the asynchronous read input loop. +func (cr *codeOceanToRawReader) Stop() { + cr.cancelReadCtx() +} + +// Read implements the io.Reader interface. +// It returns bytes from the buffer or priorityBuffer. +func (cr *codeOceanToRawReader) Read(p []byte) (int, error) { + if len(p) == 0 { + return 0, nil + } + + // Ensure to not return until at least one byte has been read to avoid busy waiting. + select { + case <-cr.executorCtx.Done(): + return 0, io.EOF + case p[0] = <-cr.priorityBuffer: + case p[0] = <-cr.buffer: + } + var n int + for n = 1; n < len(p); n++ { + select { + case p[n] = <-cr.priorityBuffer: + case p[n] = <-cr.buffer: + default: + return n, nil + } + } + return n, nil +} + +// Write implements the io.Writer interface. +// Data written to a codeOceanToRawReader using this method is returned by Read before other data from the WebSocket. +func (cr *codeOceanToRawReader) Write(p []byte) (n int, err error) { + var c byte + for n, c = range p { + select { + case cr.priorityBuffer <- c: + default: + break + } + } + return n, nil +} diff --git a/internal/api/ws/codeocean_writer.go b/internal/api/ws/codeocean_writer.go new file mode 100644 index 0000000..3b9b0cf --- /dev/null +++ b/internal/api/ws/codeocean_writer.go @@ -0,0 +1,174 @@ +package ws + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "github.com/gorilla/websocket" + "github.com/openHPI/poseidon/internal/runner" + "github.com/openHPI/poseidon/pkg/dto" + "io" +) + +// CodeOceanOutputWriterBufferSize defines the number of messages. +const CodeOceanOutputWriterBufferSize = 64 + +// rawToCodeOceanWriter is a simple io.Writer implementation that just forwards the call to sendMessage. +type rawToCodeOceanWriter struct { + outputType dto.WebSocketMessageType + sendMessage func(*dto.WebSocketMessage) + ctx context.Context +} + +// Write implements the io.Writer interface. +func (rc *rawToCodeOceanWriter) Write(p []byte) (int, error) { + switch { + case rc.ctx.Err() != nil: + return 0, fmt.Errorf("CodeOceanWriter context done: %w", rc.ctx.Err()) + case len(p) == 0: + return 0, nil + default: + rc.sendMessage(&dto.WebSocketMessage{Type: rc.outputType, Data: string(p)}) + return len(p), nil + } +} + +// WebSocketWriter is an interface that defines which data is required and which information can be passed. +type WebSocketWriter interface { + StdOut() io.Writer + StdErr() io.Writer + Close(info *runner.ExitInfo) +} + +// codeOceanOutputWriter is a concrete WebSocketWriter implementation. +// It forwards the data written to stdOut or stdErr (Nomad, AWS) to the WebSocket connection (CodeOcean). +type codeOceanOutputWriter struct { + connection Connection + stdOut *rawToCodeOceanWriter + stdErr *rawToCodeOceanWriter + queue chan *writingLoopMessage + ctx context.Context +} + +// writingLoopMessage is an internal data structure to notify the writing loop when it should stop. +type writingLoopMessage struct { + done bool + data *dto.WebSocketMessage +} + +// NewCodeOceanOutputWriter provides an codeOceanOutputWriter for the time the context ctx is active. +// The codeOceanOutputWriter handles all the messages defined in the websocket.schema.json (start, timeout, stdout, ...). +func NewCodeOceanOutputWriter( + connection Connection, ctx context.Context, done context.CancelFunc) WebSocketWriter { + cw := &codeOceanOutputWriter{ + connection: connection, + queue: make(chan *writingLoopMessage, CodeOceanOutputWriterBufferSize), + ctx: ctx, + } + cw.stdOut = &rawToCodeOceanWriter{ + outputType: dto.WebSocketOutputStdout, + sendMessage: cw.send, + ctx: ctx, + } + cw.stdErr = &rawToCodeOceanWriter{ + outputType: dto.WebSocketOutputStderr, + sendMessage: cw.send, + ctx: ctx, + } + + go cw.startWritingLoop(done) + cw.send(&dto.WebSocketMessage{Type: dto.WebSocketMetaStart}) + return cw +} + +// StdOut provides an io.Writer that forwards the written data to CodeOcean as StdOut stream. +func (cw *codeOceanOutputWriter) StdOut() io.Writer { + return cw.stdOut +} + +// StdErr provides an io.Writer that forwards the written data to CodeOcean as StdErr stream. +func (cw *codeOceanOutputWriter) StdErr() io.Writer { + return cw.stdErr +} + +// Close forwards the kind of exit (timeout, error, normal) to CodeOcean. +// This results in the closing of the WebSocket connection. +// The call of Close is mandatory! +func (cw *codeOceanOutputWriter) Close(info *runner.ExitInfo) { + defer func() { cw.queue <- &writingLoopMessage{done: true} }() + // Mask the internal stop reason before disclosing/forwarding it externally/to CodeOcean. + switch { + case info == nil: + return + case info.Err == nil: + cw.send(&dto.WebSocketMessage{Type: dto.WebSocketExit, ExitCode: info.Code}) + case errors.Is(info.Err, runner.ErrorExecutionTimeout) || errors.Is(info.Err, runner.ErrorRunnerInactivityTimeout): + cw.send(&dto.WebSocketMessage{Type: dto.WebSocketMetaTimeout}) + case errors.Is(info.Err, runner.ErrOOMKilled): + cw.send(&dto.WebSocketMessage{Type: dto.WebSocketOutputError, Data: dto.ErrOOMKilled.Error()}) + case errors.Is(info.Err, runner.ErrDestroyedByAPIRequest): + message := "the allocation stopped as expected" + log.WithContext(cw.ctx).WithError(info.Err).Trace(message) + cw.send(&dto.WebSocketMessage{Type: dto.WebSocketOutputError, Data: message}) + default: + errorMessage := "Error executing the request" + log.WithContext(cw.ctx).WithError(info.Err).Warn(errorMessage) + cw.send(&dto.WebSocketMessage{Type: dto.WebSocketOutputError, Data: errorMessage}) + } +} + +// send forwards the passed dto.WebSocketMessage to the writing loop. +func (cw *codeOceanOutputWriter) send(message *dto.WebSocketMessage) { + cw.queue <- &writingLoopMessage{done: false, data: message} +} + +// startWritingLoop enables the writing loop. +// This is the central and only place where written changes to the WebSocket connection should be done. +// It synchronizes the messages to provide state checks of the WebSocket connection. +func (cw *codeOceanOutputWriter) startWritingLoop(writingLoopDone context.CancelFunc) { + defer func() { + message := websocket.FormatCloseMessage(websocket.CloseNormalClosure, "") + err := cw.connection.WriteMessage(websocket.CloseMessage, message) + err2 := cw.connection.Close() + if err != nil || err2 != nil { + log.WithContext(cw.ctx).WithError(err).WithField("err2", err2).Warn("Error during websocket close") + } + }() + + for { + message := <-cw.queue + done := true + if message.data != nil { + done = sendMessage(cw.connection, message.data, cw.ctx) + } + if done || message.done { + log.WithContext(cw.ctx).Trace("Writing loop done") + writingLoopDone() + return + } + } +} + +// sendMessage is a helper function for the writing loop. It must not be called from somewhere else! +func sendMessage(connection Connection, message *dto.WebSocketMessage, ctx context.Context) (done bool) { + if message == nil { + return false + } + + encodedMessage, err := json.Marshal(message) + if err != nil { + log.WithContext(ctx).WithField("message", message).WithError(err).Warn("Marshal error") + return false + } + + log.WithContext(ctx).WithField("message", message).Trace("Sending message to client") + err = connection.WriteMessage(websocket.TextMessage, encodedMessage) + if err != nil { + errorMessage := "Error writing the message" + log.WithContext(ctx).WithField("message", message).WithError(err).Warn(errorMessage) + return true + } + + return false +} diff --git a/internal/api/ws/connection.go b/internal/api/ws/connection.go new file mode 100644 index 0000000..c486073 --- /dev/null +++ b/internal/api/ws/connection.go @@ -0,0 +1,14 @@ +package ws + +import ( + "io" +) + +// Connection is an internal interface for websocket.Conn in order to mock it for unit tests. +type Connection interface { + WriteMessage(messageType int, data []byte) error + Close() error + NextReader() (messageType int, r io.Reader, err error) + CloseHandler() func(code int, text string) error + SetCloseHandler(handler func(code int, text string) error) +} diff --git a/internal/config/config.go b/internal/config/config.go new file mode 100644 index 0000000..f35810a --- /dev/null +++ b/internal/config/config.go @@ -0,0 +1,287 @@ +package config + +import ( + "crypto/rand" + "crypto/tls" + "encoding/base64" + "errors" + "flag" + "fmt" + "github.com/getsentry/sentry-go" + "github.com/openHPI/poseidon/pkg/dto" + "github.com/openHPI/poseidon/pkg/logging" + "github.com/sirupsen/logrus" + "gopkg.in/yaml.v3" + "k8s.io/client-go/rest" + "net/url" + "os" + "reflect" + "strconv" + "strings" +) + +const ( + defaultPoseidonPort = 7200 + defaultNomadPort = 4646 + defaultMemoryUsageAlertThreshold = 1_000 +) + +// Config contains the default configuration of Poseidon. +var ( + Config = &configuration{ + Server: server{ + Address: "127.0.0.1", + Port: defaultPoseidonPort, + SystemdSocketActivation: false, + Token: "", + TLS: TLS{ + Active: false, + CAFile: "", + CertFile: "", + KeyFile: "", + }, + InteractiveStderr: true, + TemplateJobFile: "", + Alert: alert{ + PrewarmingPoolThreshold: 0, + PrewarmingPoolReloadTimeout: 0, + }, + LoggingFilterToken: randomFilterToken(), + }, + AWS: AWS{ + Enabled: false, + Endpoint: "", + Functions: []string{}, + }, + Kubernetes: Kubernetes{ + Enabled: false, + Address: "", + Port: 0, + Token: "", + }, + Logger: Logger{ + Level: "INFO", + Formatter: dto.FormatterText, + }, + Profiling: Profiling{ + MemoryThreshold: defaultMemoryUsageAlertThreshold, + }, + Sentry: sentry.ClientOptions{ + AttachStacktrace: true, + }, + InfluxDB: InfluxDB{ + URL: "", + Token: "", + Organization: "", + Bucket: "", + Stage: "", + }, + } + configurationFilePath = "./configuration.yaml" + configurationInitialized = false + log = logging.GetLogger("config") + TLSConfig = &tls.Config{ + MinVersion: tls.VersionTLS13, + CurvePreferences: []tls.CurveID{tls.CurveP521, tls.CurveP384, tls.CurveP256}, + } + ErrConfigInitialized = errors.New("configuration is already initialized") +) + +type alert struct { + PrewarmingPoolThreshold float64 + PrewarmingPoolReloadTimeout uint +} + +// server configures the Poseidon webserver. +type server struct { + Address string + Port int + SystemdSocketActivation bool + Token string + TLS TLS + InteractiveStderr bool + TemplateJobFile string + Alert alert + LoggingFilterToken string +} + +// URL returns the URL of the Poseidon webserver. +func (s *server) URL() *url.URL { + return parseURL(s.Address, s.Port, s.TLS.Active) +} + +// AWS configures the AWS Lambda usage. +type AWS struct { + Enabled bool + Endpoint string + Functions []string +} + +type Kubernetes struct { + Enabled bool + Namespace string + Config *rest.Config + Images []string +} + +// TLS configures TLS on a connection. +type TLS struct { + Active bool + CAFile string + CertFile string + KeyFile string +} + +// Logger configures the used Logger. +type Logger struct { + Formatter dto.Formatter + Level string +} + +// Profiling configures the usage of a runtime profiler to create optimized binaries. +type Profiling struct { + CPUEnabled bool + CPUFile string + MemoryInterval uint + MemoryThreshold uint +} + +// InfluxDB configures the usage of an Influx db monitoring. +type InfluxDB struct { + URL string + Token string + Organization string + Bucket string + Stage string +} + +// configuration contains the complete configuration of Poseidon. +type configuration struct { + Server server + AWS AWS + Kubernetes Kubernetes + Logger Logger + Profiling Profiling + Sentry sentry.ClientOptions + InfluxDB InfluxDB +} + +// InitConfig merges configuration options from environment variables and +// a configuration file into the default configuration. Calls of InitConfig +// after the first call have no effect and return an error. InitConfig +// should be called directly after starting the program. +func InitConfig() error { + if configurationInitialized { + return ErrConfigInitialized + } + configurationInitialized = true + content := readConfigFile() + Config.mergeYaml(content) + Config.mergeEnvironmentVariables() + return nil +} + +func parseURL(address string, port int, tlsEnabled bool) *url.URL { + scheme := "http" + if tlsEnabled { + scheme = "https" + } + return &url.URL{ + Scheme: scheme, + Host: fmt.Sprintf("%s:%d", address, port), + } +} + +func readConfigFile() []byte { + parseFlags() + data, err := os.ReadFile(configurationFilePath) + if err != nil { + log.WithError(err).Info("Using default configuration...") + return nil + } + return data +} + +func parseFlags() { + if flag.Lookup("config") == nil { + flag.StringVar(&configurationFilePath, "config", configurationFilePath, "path of the yaml config file") + } + flag.Parse() +} + +func (c *configuration) mergeYaml(content []byte) { + if err := yaml.Unmarshal(content, c); err != nil { + log.WithError(err).Fatal("Could not parse configuration file") + } +} + +func (c *configuration) mergeEnvironmentVariables() { + readFromEnvironment("POSEIDON", reflect.ValueOf(c).Elem()) +} + +func readFromEnvironment(prefix string, value reflect.Value) { + logEntry := log.WithField("prefix", prefix) + // if value was not derived from a pointer, it is not possible to alter its contents + if !value.CanSet() { + logEntry.Warn("Cannot overwrite struct field that can not be set") + return + } + + if value.Kind() != reflect.Struct { + loadValue(prefix, value, logEntry) + } else { + for i := 0; i < value.NumField(); i++ { + fieldName := value.Type().Field(i).Name + newPrefix := fmt.Sprintf("%s_%s", prefix, strings.ToUpper(fieldName)) + readFromEnvironment(newPrefix, value.Field(i)) + } + } +} + +func loadValue(prefix string, value reflect.Value, logEntry *logrus.Entry) { + content, ok := os.LookupEnv(prefix) + if !ok { + return + } + logEntry = logEntry.WithField("content", content) + + switch value.Kind() { + case reflect.String: + value.SetString(content) + case reflect.Int: + integer, err := strconv.Atoi(content) + if err != nil { + logEntry.Warn("Could not parse environment variable as integer") + return + } + value.SetInt(int64(integer)) + case reflect.Bool: + boolean, err := strconv.ParseBool(content) + if err != nil { + logEntry.Warn("Could not parse environment variable as boolean") + return + } + value.SetBool(boolean) + case reflect.Slice: + if content != "" && content[0] == '"' && content[len(content)-1] == '"' { + content = content[1 : len(content)-1] // remove wrapping quotes + } + parts := strings.Fields(content) + value.Set(reflect.AppendSlice(value, reflect.ValueOf(parts))) + default: + // ignore this field + logEntry.WithField("type", value.Type().Name()). + Warn("Setting configuration option via environment variables is not supported") + } +} + +func randomFilterToken() string { + const tokenLength = 32 + randomBytes := make([]byte, tokenLength) //nolint:all // length required to be filled by rand.Read. + n, err := rand.Read(randomBytes) + if n != tokenLength || err != nil { + log.WithError(err).WithField("byteCount", n).Fatal("Failed to generate random token") + } + + return base64.URLEncoding.EncodeToString(randomBytes) +} diff --git a/internal/environment/abstract_manager.go b/internal/environment/abstract_manager.go new file mode 100644 index 0000000..d923c1b --- /dev/null +++ b/internal/environment/abstract_manager.go @@ -0,0 +1,77 @@ +package environment + +import ( + "context" + "fmt" + "github.com/openHPI/poseidon/internal/runner" + "github.com/openHPI/poseidon/pkg/dto" +) + +// AbstractManager is used to have a fallback environment manager in the chain of responsibility +// following the null object pattern. +type AbstractManager struct { + nextHandler ManagerHandler + runnerManager runner.Manager +} + +func (n *AbstractManager) SetNextHandler(next ManagerHandler) { + n.nextHandler = next +} + +func (n *AbstractManager) NextHandler() ManagerHandler { + if n.HasNextHandler() { + return n.nextHandler + } else { + return &AbstractManager{} + } +} + +func (n *AbstractManager) HasNextHandler() bool { + return n.nextHandler != nil +} + +func (n *AbstractManager) List(_ bool) ([]runner.ExecutionEnvironment, error) { + return []runner.ExecutionEnvironment{}, nil +} + +func (n *AbstractManager) Get(_ dto.EnvironmentID, _ bool) (runner.ExecutionEnvironment, error) { + return nil, runner.ErrRunnerNotFound +} + +func (n *AbstractManager) CreateOrUpdate(_ dto.EnvironmentID, _ dto.ExecutionEnvironmentRequest, _ context.Context) ( + bool, error) { + return false, nil +} + +func (n *AbstractManager) Delete(id dto.EnvironmentID) (bool, error) { + if n.runnerManager == nil { + return false, nil + } + + e, ok := n.runnerManager.GetEnvironment(id) + if !ok { + isFound, err := n.NextHandler().Delete(id) + if err != nil { + return false, fmt.Errorf("abstract wrapped: %w", err) + } + return isFound, nil + } + + n.runnerManager.DeleteEnvironment(id) + if err := e.Delete(runner.ErrDestroyedByAPIRequest); err != nil { + return true, fmt.Errorf("could not delete environment: %w", err) + } + return true, nil +} + +func (n *AbstractManager) Statistics() map[dto.EnvironmentID]*dto.StatisticalExecutionEnvironmentData { + if n.runnerManager == nil { + return map[dto.EnvironmentID]*dto.StatisticalExecutionEnvironmentData{} + } + + statistics := n.NextHandler().Statistics() + for k, v := range n.runnerManager.EnvironmentStatistics() { + statistics[k] = v + } + return statistics +} diff --git a/internal/environment/k8s_env.go b/internal/environment/k8s_env.go new file mode 100644 index 0000000..3c7086b --- /dev/null +++ b/internal/environment/k8s_env.go @@ -0,0 +1,139 @@ +package environment + +import ( + "encoding/json" + "fmt" + "github.com/openHPI/poseidon/internal/runner" + "github.com/openHPI/poseidon/pkg/dto" + "k8s.io/client-go/kubernetes" +) + +type KubernetesEnvironment struct { + id dto.EnvironmentID + image string + cpuLimit uint + memoryLimit uint + networkEnabled bool + mappedPorts []uint16 + prewarmingPool uint + onDestroyRunner runner.DestroyRunnerHandler + clientset *kubernetes.Clientset +} + +func NewKubernetesEnvironment(onDestroyRunner runner.DestroyRunnerHandler, clientset *kubernetes.Clientset) *KubernetesEnvironment { + return &KubernetesEnvironment{ + onDestroyRunner: onDestroyRunner, + clientset: clientset, + cpuLimit: 500, // Default CPU limit (in millicores) + memoryLimit: 512, // Default memory limit (in MB) + networkEnabled: false, + prewarmingPool: 1, + } +} + +func (k *KubernetesEnvironment) MarshalJSON() ([]byte, error) { + res, err := json.Marshal(dto.ExecutionEnvironmentData{ + ID: int(k.ID()), + ExecutionEnvironmentRequest: dto.ExecutionEnvironmentRequest{Image: k.Image()}, + }) + if err != nil { + return res, fmt.Errorf("couldn't marshal kubernetes execution environment: %w", err) + } + return res, nil +} + +func (k *KubernetesEnvironment) ID() dto.EnvironmentID { + return k.id +} + +func (k *KubernetesEnvironment) SetID(id dto.EnvironmentID) { + k.id = id +} + +func (k *KubernetesEnvironment) Image() string { + return k.image +} + +func (k *KubernetesEnvironment) SetImage(image string) { + k.image = image +} + +func (k *KubernetesEnvironment) Delete(_ runner.DestroyReason) error { + // Implement Kubernetes-specific deletion logic here + return nil +} + +func (k *KubernetesEnvironment) Sample() (r runner.Runner, ok bool) { + workload, err := runner.NewKubernetesPodWorkload(k, k.onDestroyRunner, k.clientset) + if err != nil { + return nil, false + } + return workload, true +} + +func (k *KubernetesEnvironment) IdleRunnerCount() uint { + // Implement logic to count idle runners in Kubernetes + return 0 +} + +func (k *KubernetesEnvironment) PrewarmingPoolSize() uint { + return k.prewarmingPool +} + +func (k *KubernetesEnvironment) SetPrewarmingPoolSize(size uint) { + k.prewarmingPool = size +} + +func (k *KubernetesEnvironment) ApplyPrewarmingPoolSize() error { + // Implement logic to apply prewarming pool size in Kubernetes + return nil +} + +func (k *KubernetesEnvironment) CPULimit() uint { + return k.cpuLimit +} + +func (k *KubernetesEnvironment) SetCPULimit(limit uint) { + k.cpuLimit = limit +} + +func (k *KubernetesEnvironment) MemoryLimit() uint { + return k.memoryLimit +} + +func (k *KubernetesEnvironment) SetMemoryLimit(limit uint) { + k.memoryLimit = limit +} + +func (k *KubernetesEnvironment) NetworkAccess() (enabled bool, mappedPorts []uint16) { + return k.networkEnabled, k.mappedPorts +} + +func (k *KubernetesEnvironment) SetNetworkAccess(enabled bool, ports []uint16) { + k.networkEnabled = enabled + k.mappedPorts = ports +} + +func (k *KubernetesEnvironment) SetConfigFrom(env runner.ExecutionEnvironment) { + if kEnv, ok := env.(*KubernetesEnvironment); ok { + k.cpuLimit = kEnv.cpuLimit + k.memoryLimit = kEnv.memoryLimit + k.networkEnabled = kEnv.networkEnabled + k.mappedPorts = kEnv.mappedPorts + k.prewarmingPool = kEnv.prewarmingPool + } +} + +func (k *KubernetesEnvironment) Register() error { + // Implement Kubernetes-specific registration logic here + return nil +} + +func (k *KubernetesEnvironment) AddRunner(runner runner.Runner) { + // Implement logic to add a runner to the Kubernetes environment +} + +func (k *KubernetesEnvironment) DeleteRunner(id string) (r runner.Runner, ok bool) { + // Implement logic to delete a runner from the Kubernetes environment + return nil, false +} diff --git a/internal/environment/k8s_manager.go b/internal/environment/k8s_manager.go new file mode 100644 index 0000000..2dffeca --- /dev/null +++ b/internal/environment/k8s_manager.go @@ -0,0 +1,71 @@ +package environment + +import ( + "context" + "fmt" + "github.com/openHPI/poseidon/internal/config" + "github.com/openHPI/poseidon/internal/runner" + "github.com/openHPI/poseidon/pkg/dto" + "k8s.io/client-go/kubernetes" +) + +// KubernetesEnvironmentManager manages Kubernetes environments. +type KubernetesEnvironmentManager struct { + *AbstractManager + clientSet *kubernetes.Clientset +} + +func NewKubernetesEnvironmentManager(runnerManager runner.Manager, clientset *kubernetes.Clientset) *KubernetesEnvironmentManager { + return &KubernetesEnvironmentManager{ + AbstractManager: &AbstractManager{nil, runnerManager}, + clientSet: clientset, + } +} + +func (k *KubernetesEnvironmentManager) List(fetch bool) ([]runner.ExecutionEnvironment, error) { + list, err := k.NextHandler().List(fetch) + if err != nil { + return nil, fmt.Errorf("kubernetes wrapped: %w", err) + } + return append(list, k.runnerManager.ListEnvironments()...), nil +} + +func (k *KubernetesEnvironmentManager) Get(id dto.EnvironmentID, fetch bool) (runner.ExecutionEnvironment, error) { + e, ok := k.runnerManager.GetEnvironment(id) + if ok { + return e, nil + } else { + e, err := k.NextHandler().Get(id, fetch) + if err != nil { + return nil, fmt.Errorf("kubernetes wrapped: %w", err) + } + return e, nil + } +} + +func (k *KubernetesEnvironmentManager) CreateOrUpdate( + id dto.EnvironmentID, request dto.ExecutionEnvironmentRequest, ctx context.Context) (bool, error) { + if !isKubernetesEnvironment(request) { + isCreated, err := k.NextHandler().CreateOrUpdate(id, request, ctx) + if err != nil { + return false, fmt.Errorf("kubernetes wrapped: %w", err) + } + return isCreated, nil + } + + _, ok := k.runnerManager.GetEnvironment(id) + e := NewKubernetesEnvironment(k.runnerManager.Return, k.clientSet) + e.SetID(id) + e.SetImage(request.Image) + k.runnerManager.StoreEnvironment(e) + return !ok, nil +} + +func isKubernetesEnvironment(request dto.ExecutionEnvironmentRequest) bool { + for _, image := range config.Config.Kubernetes.Images { + if request.Image == image { + return true + } + } + return false +} diff --git a/internal/environment/manager.go b/internal/environment/manager.go new file mode 100644 index 0000000..68f5959 --- /dev/null +++ b/internal/environment/manager.go @@ -0,0 +1,43 @@ +package environment + +import ( + "context" + "github.com/openHPI/poseidon/internal/runner" + "github.com/openHPI/poseidon/pkg/dto" +) + +// ManagerHandler is one handler in the chain of responsibility of environment managers. +// Each manager can handle different requests. +type ManagerHandler interface { + Manager + SetNextHandler(next ManagerHandler) + NextHandler() ManagerHandler + HasNextHandler() bool +} + +// Manager encapsulates API calls to the executor API for creation and deletion of execution environments. +type Manager interface { + // List returns all environments known by Poseidon. + // When `fetch` is set the environments are fetched from the executor before returning. + List(fetch bool) ([]runner.ExecutionEnvironment, error) + + // Get returns the details of the requested environment. + // When `fetch` is set the requested environment is fetched from the executor before returning. + Get(id dto.EnvironmentID, fetch bool) (runner.ExecutionEnvironment, error) + + // CreateOrUpdate creates/updates an execution environment on the executor. + // If the job was created, the returned boolean is true, if it was updated, it is false. + // If err is not nil, that means the environment was neither created nor updated. + CreateOrUpdate( + id dto.EnvironmentID, + request dto.ExecutionEnvironmentRequest, + ctx context.Context, + ) (bool, error) + + // Delete removes the specified execution environment. + // Iff the specified environment could not be found Delete returns false. + Delete(id dto.EnvironmentID) (bool, error) + + // Statistics returns statistical data for each execution environment. + Statistics() map[dto.EnvironmentID]*dto.StatisticalExecutionEnvironmentData +} diff --git a/internal/environment/template-environment-job.hcl b/internal/environment/template-environment-job.hcl new file mode 100644 index 0000000..06bab16 --- /dev/null +++ b/internal/environment/template-environment-job.hcl @@ -0,0 +1,84 @@ +// This is the default job configuration that is used when no path to another default configuration is given + +job "template-0" { + datacenters = ["dc1"] + type = "batch" + + group "default-group" { + ephemeral_disk { + migrate = false + size = 10 + sticky = false + } + count = 1 + spread { + // see https://www.nomadproject.io/docs/job-specification/spread#even-spread-across-data-center + // This spreads the load evenly amongst our nodes + attribute = "${node.unique.name}" + weight = 100 + } + restart { + attempts = 3 + delay = "15s" + interval = "1h" + mode = "fail" + } + reschedule { + unlimited = false + attempts = 3 + interval = "6h" + delay = "1m" + max_delay = "4m" + delay_function = "exponential" + } + + task "default-task" { + driver = "docker" + kill_timeout = "0s" + kill_signal = "SIGKILL" + + config { + image = "openhpi/docker_exec_phusion" + command = "sleep" + args = ["infinity"] + network_mode = "none" + } + + logs { + max_files = 1 + max_file_size = 1 + } + + resources { + cpu = 40 + memory = 30 + } + } + } + + group "config" { + // We want to store whether a task is in use in order to recover from a downtime. + // Without a separate config task, marking a task as used would result in a restart of that task, + // as the meta information is passed to the container as environment variables. + count = 0 + task "config" { + driver = "exec" + config { + command = "true" + } + logs { + max_files = 1 + max_file_size = 1 + } + resources { + // minimum values + cpu = 1 + memory = 10 + } + } + meta { + used = "false" + prewarmingPoolSize = "0" + } + } +} diff --git a/internal/runner/abstract_manager.go b/internal/runner/abstract_manager.go new file mode 100644 index 0000000..faf702f --- /dev/null +++ b/internal/runner/abstract_manager.go @@ -0,0 +1,125 @@ +package runner + +import ( + "context" + "errors" + "fmt" + "github.com/influxdata/influxdb-client-go/v2/api/write" + "github.com/openHPI/poseidon/pkg/dto" + "github.com/openHPI/poseidon/pkg/monitoring" + "github.com/openHPI/poseidon/pkg/storage" + "time" +) + +var ErrNullObject = errors.New("functionality not available for the null object") + +// AbstractManager is used to have a fallback runner manager in the chain of responsibility +// following the null object pattern. +// Remember all functions that can call the NextHandler should call it (See AccessorHandler). +type AbstractManager struct { + nextHandler AccessorHandler + environments storage.Storage[ExecutionEnvironment] + usedRunners storage.Storage[Runner] +} + +// NewAbstractManager creates a new abstract runner manager that keeps track of all runners of one kind. +// Since this manager is currently directly bound to the lifespan of Poseidon, it does not need a context cancel. +func NewAbstractManager(ctx context.Context) *AbstractManager { + return &AbstractManager{ + environments: storage.NewMonitoredLocalStorage[ExecutionEnvironment]( + monitoring.MeasurementEnvironments, monitorEnvironmentData, 0, ctx), + usedRunners: storage.NewMonitoredLocalStorage[Runner]( + monitoring.MeasurementUsedRunner, MonitorRunnersEnvironmentID, time.Hour, ctx), + } +} + +// MonitorEnvironmentID adds the passed environment id to the monitoring Point p. +func MonitorEnvironmentID[T any](id dto.EnvironmentID) storage.WriteCallback[T] { + return func(p *write.Point, _ T, _ storage.EventType) { + p.AddTag(monitoring.InfluxKeyEnvironmentID, id.ToString()) + } +} + +// MonitorRunnersEnvironmentID passes the id of the environment e into the monitoring Point p. +func MonitorRunnersEnvironmentID(p *write.Point, e Runner, _ storage.EventType) { + if e != nil { + p.AddTag(monitoring.InfluxKeyEnvironmentID, e.Environment().ToString()) + } +} + +func (n *AbstractManager) SetNextHandler(next AccessorHandler) { + n.nextHandler = next +} + +func (n *AbstractManager) NextHandler() AccessorHandler { + if n.HasNextHandler() { + return n.nextHandler + } else { + ctx, cancel := context.WithCancel(context.Background()) + cancel() + return NewAbstractManager(ctx) + } +} + +func (n *AbstractManager) HasNextHandler() bool { + return n.nextHandler != nil +} + +func (n *AbstractManager) ListEnvironments() []ExecutionEnvironment { + return n.environments.List() +} + +func (n *AbstractManager) GetEnvironment(id dto.EnvironmentID) (ExecutionEnvironment, bool) { + return n.environments.Get(id.ToString()) +} + +func (n *AbstractManager) StoreEnvironment(environment ExecutionEnvironment) { + n.environments.Add(environment.ID().ToString(), environment) +} + +func (n *AbstractManager) DeleteEnvironment(id dto.EnvironmentID) { + n.environments.Delete(id.ToString()) +} + +func (n *AbstractManager) EnvironmentStatistics() map[dto.EnvironmentID]*dto.StatisticalExecutionEnvironmentData { + environments := make(map[dto.EnvironmentID]*dto.StatisticalExecutionEnvironmentData) + for _, e := range n.environments.List() { + environments[e.ID()] = &dto.StatisticalExecutionEnvironmentData{ + ID: int(e.ID()), + PrewarmingPoolSize: e.PrewarmingPoolSize(), + IdleRunners: e.IdleRunnerCount(), + UsedRunners: 0, // Increased below. + } + } + + for _, r := range n.usedRunners.List() { + environments[r.Environment()].UsedRunners++ + } + + return environments +} + +func (n *AbstractManager) Claim(_ dto.EnvironmentID, _ int) (Runner, error) { + return nil, ErrNullObject +} + +func (n *AbstractManager) Get(runnerID string) (Runner, error) { + runner, ok := n.usedRunners.Get(runnerID) + if ok { + return runner, nil + } + + if !n.HasNextHandler() { + return nil, ErrRunnerNotFound + } + + r, err := n.NextHandler().Get(runnerID) + if err != nil { + return r, fmt.Errorf("abstract manager wrapped: %w", err) + } + return r, nil +} + +func (n *AbstractManager) Return(_ Runner) error { + return nil +} diff --git a/internal/runner/execution_environment.go b/internal/runner/execution_environment.go new file mode 100644 index 0000000..73c583f --- /dev/null +++ b/internal/runner/execution_environment.go @@ -0,0 +1,66 @@ +package runner + +import ( + "encoding/json" + "github.com/influxdata/influxdb-client-go/v2/api/write" + "github.com/openHPI/poseidon/pkg/dto" + "github.com/openHPI/poseidon/pkg/storage" + "strconv" +) + +// ExecutionEnvironment are groups of runner that share the configuration stored in the environment. +type ExecutionEnvironment interface { + json.Marshaler + + // ID returns the id of the environment. + ID() dto.EnvironmentID + SetID(id dto.EnvironmentID) + // PrewarmingPoolSize sets the number of idle runner of this environment that should be prewarmed. + PrewarmingPoolSize() uint + SetPrewarmingPoolSize(count uint) + // ApplyPrewarmingPoolSize creates idle runners according to the PrewarmingPoolSize. + ApplyPrewarmingPoolSize() error + // CPULimit sets the share of cpu that a runner should receive at minimum. + CPULimit() uint + SetCPULimit(limit uint) + // MemoryLimit sets the amount of memory that should be available for each runner. + MemoryLimit() uint + SetMemoryLimit(limit uint) + // Image sets the image of the runner, e.g. Docker image. + Image() string + SetImage(image string) + // NetworkAccess sets if a runner should have network access and if ports should be mapped. + NetworkAccess() (bool, []uint16) + SetNetworkAccess(allow bool, ports []uint16) + // SetConfigFrom copies all above attributes from the passed environment to the object itself. + SetConfigFrom(environment ExecutionEnvironment) + + // Register saves this environment at the executor. + Register() error + // Delete removes this environment and all it's runner from the executor and Poseidon itself. + // Iff local the environment is just removed from Poseidon without external escalation. + Delete(reason DestroyReason) error + + // Sample returns and removes an arbitrary available runner. + // ok is true iff a runner was returned. + Sample() (r Runner, ok bool) + // AddRunner adds an existing runner to the idle runners of the environment. + AddRunner(r Runner) + // DeleteRunner removes an idle runner from the environment and returns it. + // This function handles only the environment. The runner has to be destroyed separately. + // ok is true iff the runner was found (and deleted). + DeleteRunner(id string) (r Runner, ok bool) + // IdleRunnerCount returns the number of idle runners of the environment. + IdleRunnerCount() uint +} + +// monitorEnvironmentData passes the configuration of the environment e into the monitoring Point p. +func monitorEnvironmentData(p *write.Point, e ExecutionEnvironment, eventType storage.EventType) { + if eventType == storage.Creation && e != nil { + p.AddTag("image", e.Image()) + p.AddTag("cpu_limit", strconv.Itoa(int(e.CPULimit()))) + p.AddTag("memory_limit", strconv.Itoa(int(e.MemoryLimit()))) + hasNetworkAccess, _ := e.NetworkAccess() + p.AddTag("network_access", strconv.FormatBool(hasNetworkAccess)) + } +} diff --git a/internal/runner/inactivity_timer.go b/internal/runner/inactivity_timer.go new file mode 100644 index 0000000..39b9aab --- /dev/null +++ b/internal/runner/inactivity_timer.go @@ -0,0 +1,111 @@ +package runner + +import ( + "errors" + "github.com/openHPI/poseidon/pkg/dto" + "sync" + "time" +) + +// InactivityTimer is a wrapper around a timer that is used to delete a a Runner after some time of inactivity. +type InactivityTimer interface { + // SetupTimeout starts the timeout after a runner gets deleted. + SetupTimeout(duration time.Duration) + + // ResetTimeout resets the current timeout so that the runner gets deleted after the time set in Setup from now. + // It does not make an already expired timer run again. + ResetTimeout() + + // StopTimeout stops the timeout but does not remove the runner. + StopTimeout() + + // TimeoutPassed returns true if the timeout expired and false otherwise. + TimeoutPassed() bool +} + +type TimerState uint8 + +const ( + TimerInactive TimerState = 0 + TimerRunning TimerState = 1 + TimerExpired TimerState = 2 +) + +var ( + ErrorRunnerInactivityTimeout DestroyReason = errors.New("runner inactivity timeout exceeded") + ErrorExecutionTimeout = errors.New("execution timeout exceeded") +) + +type InactivityTimerImplementation struct { + timer *time.Timer + duration time.Duration + state TimerState + runner Runner + onDestroy DestroyRunnerHandler + mu sync.Mutex +} + +func NewInactivityTimer(runner Runner, onDestroy DestroyRunnerHandler) InactivityTimer { + return &InactivityTimerImplementation{ + state: TimerInactive, + runner: runner, + onDestroy: onDestroy, + } +} + +func (t *InactivityTimerImplementation) SetupTimeout(duration time.Duration) { + t.mu.Lock() + defer t.mu.Unlock() + // Stop old timer if present. + if t.timer != nil { + t.timer.Stop() + } + if duration == 0 { + t.state = TimerInactive + return + } + t.state = TimerRunning + t.duration = duration + + t.timer = time.AfterFunc(duration, func() { + t.mu.Lock() + t.state = TimerExpired + // The timer must be unlocked here already in order to avoid a deadlock with the call to StopTimout in Manager.Return. + t.mu.Unlock() + err := t.onDestroy(t.runner) + if err != nil { + log.WithError(err).WithField(dto.KeyRunnerID, t.runner.ID()). + Warn("Returning runner after inactivity caused an error") + } else { + log.WithField(dto.KeyRunnerID, t.runner.ID()).Info("Returning runner due to inactivity timeout") + } + }) +} + +func (t *InactivityTimerImplementation) ResetTimeout() { + t.mu.Lock() + defer t.mu.Unlock() + if t.state != TimerRunning { + // The timer has already expired or been stopped. We don't want to restart it. + return + } + if t.timer.Stop() { + t.timer.Reset(t.duration) + } else { + log.Error("Timer is in state running but stopped. This should never happen") + } +} + +func (t *InactivityTimerImplementation) StopTimeout() { + t.mu.Lock() + defer t.mu.Unlock() + if t.state != TimerRunning { + return + } + t.timer.Stop() + t.state = TimerInactive +} + +func (t *InactivityTimerImplementation) TimeoutPassed() bool { + return t.state == TimerExpired +} diff --git a/internal/runner/k8s_manager.go b/internal/runner/k8s_manager.go new file mode 100644 index 0000000..2c982b8 --- /dev/null +++ b/internal/runner/k8s_manager.go @@ -0,0 +1,70 @@ +package runner + +import ( + "context" + "errors" + "fmt" + "github.com/openHPI/poseidon/pkg/dto" + "github.com/openHPI/poseidon/pkg/logging" + "k8s.io/client-go/kubernetes" + "time" +) + +var ( + log = logging.GetLogger("runner") + ErrUnknownExecutionEnvironment = errors.New("execution environment not found") + ErrNoRunnersAvailable = errors.New("no runners available for this execution environment") + ErrRunnerNotFound = errors.New("no runner found with this id") +) + +type KubernetesRunnerManager struct { + *AbstractManager + clientSet *kubernetes.Clientset +} + +// NewKubernetesRunnerManager creates a new runner manager that keeps track of all runners in Kubernetes. +func NewKubernetesRunnerManager(ctx context.Context, clientSet *kubernetes.Clientset) *KubernetesRunnerManager { + return &KubernetesRunnerManager{ + AbstractManager: NewAbstractManager(ctx), + clientSet: clientSet, + } +} + +func (k *KubernetesRunnerManager) Claim(id dto.EnvironmentID, duration int) (Runner, error) { + environment, ok := k.GetEnvironment(id) + if !ok { + r, err := k.NextHandler().Claim(id, duration) + if err != nil { + return nil, fmt.Errorf("kubernetes wrapped: %w", err) + } + return r, nil + } + + runner, ok := environment.Sample() + if !ok { + log.Warn("no kubernetes runner available") + return nil, ErrNoRunnersAvailable + } + + k.usedRunners.Add(runner.ID(), runner) + runner.SetupTimeout(time.Duration(duration) * time.Second) + + // Here you might want to add Kubernetes-specific logic + // For example, updating the pod status or adding labels + + return runner, nil +} + +func (k *KubernetesRunnerManager) Return(r Runner) error { + _, isKubernetesRunner := r.(*KubernetesPodWorkload) + if isKubernetesRunner { + k.usedRunners.Delete(r.ID()) + + // Here you might want to add Kubernetes-specific logic + // For example, cleaning up the pod or updating its status + + } else if err := k.NextHandler().Return(r); err != nil { + return fmt.Errorf("kubernetes wrapped: %w", err) + } + return nil +} diff --git a/internal/runner/k8s_runner.go b/internal/runner/k8s_runner.go new file mode 100644 index 0000000..6d7f166 --- /dev/null +++ b/internal/runner/k8s_runner.go @@ -0,0 +1,251 @@ +package runner + +import ( + "context" + "errors" + "fmt" + "github.com/google/uuid" + "github.com/openHPI/poseidon/pkg/dto" + "github.com/openHPI/poseidon/pkg/monitoring" + "github.com/openHPI/poseidon/pkg/storage" + "io" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" + "net/http" + "time" +) + +var ErrPodCreationFailed = errors.New("failed to create pod") + +var ( + ErrorUnknownExecution = errors.New("unknown execution") + ErrFileNotFound = errors.New("file not found or insufficient permissions") + ErrOOMKilled DestroyReason = errors.New("the runner was killed due to out of memory") + ErrDestroyedByAPIRequest DestroyReason = errors.New("the client wants to stop the runner") +) + +// KubernetesPodWorkload is an abstraction to manage a Kubernetes pod. +// It is not persisted on a Poseidon restart. +// The InactivityTimer is used actively. It stops and deletes the pod. +type KubernetesPodWorkload struct { + InactivityTimer + id string + fs map[dto.FilePath][]byte + executions storage.Storage[*dto.ExecutionRequest] + runningExecutions map[string]context.CancelFunc + onDestroy DestroyRunnerHandler + environment ExecutionEnvironment + ctx context.Context + cancel context.CancelFunc + clientset *kubernetes.Clientset + podName string + namespace string +} + +// NewKubernetesPodWorkload creates a new KubernetesPodWorkload with the provided id. +func NewKubernetesPodWorkload( + environment ExecutionEnvironment, onDestroy DestroyRunnerHandler, clientset *kubernetes.Clientset) (*KubernetesPodWorkload, error) { + newUUID, err := uuid.NewUUID() + if err != nil { + return nil, fmt.Errorf("failed generating runner id: %w", err) + } + + ctx, cancel := context.WithCancel(context.Background()) + workload := &KubernetesPodWorkload{ + id: newUUID.String(), + fs: make(map[dto.FilePath][]byte), + runningExecutions: make(map[string]context.CancelFunc), + onDestroy: onDestroy, + environment: environment, + ctx: ctx, + cancel: cancel, + clientset: clientset, + namespace: "default", // You might want to make this configurable + podName: fmt.Sprintf("workload-%s", newUUID.String()), + } + workload.executions = storage.NewMonitoredLocalStorage[*dto.ExecutionRequest]( + monitoring.MeasurementExecutionsK8s, monitorExecutionsRunnerID(environment.ID(), workload.id), time.Minute, ctx) + workload.InactivityTimer = NewInactivityTimer(workload, func(_ Runner) error { + return workload.Destroy(nil) + }) + return workload, nil +} + +func (w *KubernetesPodWorkload) ID() string { + return w.id +} + +func (w *KubernetesPodWorkload) Environment() dto.EnvironmentID { + return w.environment.ID() +} + +func (w *KubernetesPodWorkload) MappedPorts() []*dto.MappedPort { + // Implement port mapping logic for Kubernetes + return []*dto.MappedPort{} +} + +func (w *KubernetesPodWorkload) StoreExecution(id string, request *dto.ExecutionRequest) { + w.executions.Add(id, request) +} + +func (w *KubernetesPodWorkload) ExecutionExists(id string) bool { + _, ok := w.executions.Get(id) + return ok +} + +// ExecuteInteractively runs the execution request in a Kubernetes pod. +func (w *KubernetesPodWorkload) ExecuteInteractively( + id string, _ io.ReadWriter, stdout, stderr io.Writer, ctx context.Context) ( + <-chan ExitInfo, context.CancelFunc, error) { + w.ResetTimeout() + request, ok := w.executions.Pop(id) + if !ok { + return nil, nil, ErrorUnknownExecution + } + hideEnvironmentVariablesK8s(request, "K8S") + command, executionCtx, cancel := prepareExecution(request, w.ctx) + exitInternal := make(chan ExitInfo) + exit := make(chan ExitInfo, 1) + + go w.executeCommand(executionCtx, command, stdout, stderr, exitInternal) + go w.handleRunnerTimeout(executionCtx, exitInternal, exit, id) + + return exit, cancel, nil +} + +func (w *KubernetesPodWorkload) ListFileSystem(path string, recursive bool, writer io.Writer, humanReadable bool, ctx context.Context) error { + // Implement file system listing for Kubernetes pods + return dto.ErrNotSupported +} + +func (w *KubernetesPodWorkload) UpdateFileSystem(request *dto.UpdateFileSystemRequest, ctx context.Context) error { + // Implement file system update for Kubernetes pods + return nil +} + +func (w *KubernetesPodWorkload) GetFileContent(path string, writer http.ResponseWriter, humanReadable bool, ctx context.Context) error { + // Implement file content retrieval for Kubernetes pods + return dto.ErrNotSupported +} + +func (w *KubernetesPodWorkload) Destroy(_ DestroyReason) error { + w.cancel() + err := w.clientset.CoreV1().Pods(w.namespace).Delete(context.Background(), w.podName, metav1.DeleteOptions{}) + if err != nil { + return fmt.Errorf("error while destroying kubernetes pod: %w", err) + } + if err := w.onDestroy(w); err != nil { + return fmt.Errorf("error while destroying kubernetes runner: %w", err) + } + return nil +} + +func (w *KubernetesPodWorkload) executeCommand(ctx context.Context, command string, + stdout, stderr io.Writer, exit chan<- ExitInfo, +) { + defer close(exit) + + pod := &corev1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: w.podName, + }, + Spec: corev1.PodSpec{ + RestartPolicy: corev1.RestartPolicyNever, + Containers: []corev1.Container{ + { + Name: "workload", + Image: w.environment.Image(), + Command: []string{"/bin/sh", "-c", command}, + }, + }, + }, + } + + _, err := w.clientset.CoreV1().Pods(w.namespace).Create(ctx, pod, metav1.CreateOptions{}) + if err != nil { + exit <- ExitInfo{1, fmt.Errorf("%w: %v", ErrPodCreationFailed, err)} + return + } + + req := w.clientset.CoreV1().Pods(w.namespace).GetLogs(w.podName, &corev1.PodLogOptions{ + Follow: true, + }) + podLogs, err := req.Stream(ctx) + if err != nil { + exit <- ExitInfo{1, fmt.Errorf("error in opening stream: %v", err)} + return + } + defer func(podLogs io.ReadCloser) { + err := podLogs.Close() + if err != nil { + exit <- ExitInfo{1, fmt.Errorf("error in closing stream: %v", err)} + } + }(podLogs) + + _, err = io.Copy(stdout, podLogs) + if err != nil { + exit <- ExitInfo{1, fmt.Errorf("error in copying logs: %v", err)} + return + } + + // Wait for the pod to complete + watch, err := w.clientset.CoreV1().Pods(w.namespace).Watch(ctx, metav1.ListOptions{ + FieldSelector: fmt.Sprintf("metadata.name=%s", w.podName), + }) + if err != nil { + exit <- ExitInfo{1, fmt.Errorf("error watching pod: %v", err)} + return + } + defer watch.Stop() + + for event := range watch.ResultChan() { + pod, ok := event.Object.(*corev1.Pod) + if !ok { + continue + } + if pod.Status.Phase == corev1.PodSucceeded || pod.Status.Phase == corev1.PodFailed { + exitCode := uint8(0) + if pod.Status.Phase == corev1.PodFailed { + exitCode = 1 + } + exit <- ExitInfo{exitCode, nil} + return + } + } +} + +func (w *KubernetesPodWorkload) handleRunnerTimeout(ctx context.Context, + exitInternal <-chan ExitInfo, exit chan<- ExitInfo, executionID string) { + executionCtx, cancelExecution := context.WithCancel(ctx) + w.runningExecutions[executionID] = cancelExecution + defer delete(w.runningExecutions, executionID) + defer close(exit) + + select { + case exitInfo := <-exitInternal: + exit <- exitInfo + case <-executionCtx.Done(): + exit <- ExitInfo{255, ErrorRunnerInactivityTimeout} + } +} + +// hideEnvironmentVariables sets the CODEOCEAN variable and unsets all variables starting with the passed prefix. +func hideEnvironmentVariablesK8s(request *dto.ExecutionRequest, unsetPrefix string) { + if request.Environment == nil { + request.Environment = make(map[string]string) + } + request.Command = "unset \"${!" + unsetPrefix + "@}\" && " + request.Command +} + +func prepareExecution(request *dto.ExecutionRequest, environmentCtx context.Context) ( + command string, ctx context.Context, cancel context.CancelFunc, +) { + command = request.FullCommand() + if request.TimeLimit == 0 { + ctx, cancel = context.WithCancel(environmentCtx) + } else { + ctx, cancel = context.WithTimeout(environmentCtx, time.Duration(request.TimeLimit)*time.Second) + } + return command, ctx, cancel +} diff --git a/internal/runner/manager.go b/internal/runner/manager.go new file mode 100644 index 0000000..76c5191 --- /dev/null +++ b/internal/runner/manager.go @@ -0,0 +1,54 @@ +package runner + +import "github.com/openHPI/poseidon/pkg/dto" + +// Manager keeps track of the used and unused runners of all execution environments in order to provide unused +// runners to new clients and ensure no runner is used twice. +type Manager interface { + EnvironmentAccessor + AccessorHandler +} + +// EnvironmentAccessor provides access to the stored environments. +type EnvironmentAccessor interface { + // ListEnvironments returns all execution environments known by Poseidon. + ListEnvironments() []ExecutionEnvironment + + // GetEnvironment returns the details of the requested environment. + // Iff the requested environment is not stored it returns false. + GetEnvironment(id dto.EnvironmentID) (ExecutionEnvironment, bool) + + // StoreEnvironment stores the environment in Poseidons memory. + StoreEnvironment(environment ExecutionEnvironment) + + // DeleteEnvironment removes the specified execution environment in Poseidons memory. + // It does nothing if the specified environment can not be found. + DeleteEnvironment(id dto.EnvironmentID) + + // EnvironmentStatistics returns statistical data for each execution environment. + EnvironmentStatistics() map[dto.EnvironmentID]*dto.StatisticalExecutionEnvironmentData +} + +// AccessorHandler is one handler in the chain of responsibility of runner accessors. +// Each runner accessor can handle different requests. +type AccessorHandler interface { + Accessor + SetNextHandler(m AccessorHandler) + NextHandler() AccessorHandler + HasNextHandler() bool +} + +// Accessor manages the lifecycle of Runner. +type Accessor interface { + // Claim returns a new runner. The runner is deleted after duration seconds if duration is not 0. + // It makes sure that the runner is not in use yet and returns an error if no runner could be provided. + Claim(id dto.EnvironmentID, duration int) (Runner, error) + + // Get returns the used runner with the given runnerId. + // If no runner with the given runnerId is currently used, it returns an error. + Get(runnerID string) (Runner, error) + + // Return signals that the runner is no longer used by the caller and can be claimed by someone else. + // The runner is deleted or cleaned up for reuse depending on the used executor. + Return(r Runner) error +} diff --git a/internal/runner/runner.go b/internal/runner/runner.go new file mode 100644 index 0000000..4504657 --- /dev/null +++ b/internal/runner/runner.go @@ -0,0 +1,91 @@ +package runner + +import ( + "context" + "github.com/influxdata/influxdb-client-go/v2/api/write" + "github.com/openHPI/poseidon/pkg/dto" + "github.com/openHPI/poseidon/pkg/monitoring" + "github.com/openHPI/poseidon/pkg/storage" + "io" + "net/http" +) + +type ExitInfo struct { + Code uint8 + Err error +} + +const ( + // runnerContextKey is the key used to store runners in context.Context. + runnerContextKey dto.ContextKey = "runner" +) + +type DestroyRunnerHandler = func(r Runner) error + +// DestroyReason specifies errors that are expected as reason for destroying a runner. +type DestroyReason error + +type Runner interface { + InactivityTimer + + // ID returns the id of the runner. + ID() string + + // Environment returns the id of the Environment to which the Runner belongs. + Environment() dto.EnvironmentID + + // MappedPorts returns the mapped ports of the runner. + MappedPorts() []*dto.MappedPort + + // StoreExecution adds a new execution to the runner that can then be executed using ExecuteInteractively. + StoreExecution(id string, executionRequest *dto.ExecutionRequest) + + // ExecutionExists returns whether the execution with the given id is already stored. + ExecutionExists(id string) bool + + // ExecuteInteractively runs the given execution request and forwards from and to the given reader and writers. + // An ExitInfo is sent to the exit channel on command completion. + // Output from the runner is forwarded immediately. + ExecuteInteractively( + id string, + stdin io.ReadWriter, + stdout, + stderr io.Writer, + ctx context.Context, + ) (exit <-chan ExitInfo, cancel context.CancelFunc, err error) + + // ListFileSystem streams the listing of the file system of the requested directory into the Writer provided. + // The result is streamed via the io.Writer in order to not overload the memory with user input. + ListFileSystem(path string, recursive bool, result io.Writer, privilegedExecution bool, ctx context.Context) error + + // UpdateFileSystem processes a dto.UpdateFileSystemRequest by first deleting each given dto.FilePath recursively + // and then copying each given dto.File to the runner. + UpdateFileSystem(request *dto.UpdateFileSystemRequest, ctx context.Context) error + + // GetFileContent streams the file content at the requested path into the Writer provided at content. + // The result is streamed via the io.Writer in order to not overload the memory with user input. + GetFileContent(path string, content http.ResponseWriter, privilegedExecution bool, ctx context.Context) error + + // Destroy destroys the Runner in Nomad. + // Depending on the reason special cases of the Destruction will be handled. + Destroy(reason DestroyReason) error +} + +// NewContext creates a context containing a runner. +func NewContext(ctx context.Context, runner Runner) context.Context { + return context.WithValue(ctx, runnerContextKey, runner) +} + +// FromContext returns a runner from a context. +func FromContext(ctx context.Context) (Runner, bool) { + runner, ok := ctx.Value(runnerContextKey).(Runner) + return runner, ok +} + +// monitorExecutionsRunnerID passes the id of the runner executing the execution into the monitoring Point p. +func monitorExecutionsRunnerID(env dto.EnvironmentID, runnerID string) storage.WriteCallback[*dto.ExecutionRequest] { + return func(p *write.Point, _ *dto.ExecutionRequest, _ storage.EventType) { + p.AddTag(monitoring.InfluxKeyEnvironmentID, env.ToString()) + p.AddTag(monitoring.InfluxKeyRunnerID, runnerID) + } +} diff --git a/pkg/dto/dto.go b/pkg/dto/dto.go new file mode 100644 index 0000000..a21a514 --- /dev/null +++ b/pkg/dto/dto.go @@ -0,0 +1,344 @@ +package dto + +import ( + "encoding/json" + "errors" + "fmt" + "path" + "strconv" + "strings" +) + +var ( + // UserAgentOut for outgoing requests (without libraries). The Git Hash will be replaced by main.go. + UserAgentOut = "Poseidon/" + UserAgentVCSPlaceholder + " Go-http-client/1.1" + UserAgentFiltered = "Poseidon/" + UserAgentVCSPlaceholder + " (" + UserAgentFilterTokenPlaceholder + ") Go-http-client/1.1" +) + +const ( + UserAgentVCSPlaceholder = "<7 Git Hash>" + UserAgentFilterTokenPlaceholder = "FilterToken" +) + +// RunnerRequest is the expected json structure of the request body for the ProvideRunner function. +type RunnerRequest struct { + ExecutionEnvironmentID int `json:"executionEnvironmentId"` + InactivityTimeout int `json:"inactivityTimeout"` +} + +// ExecutionRequest is the expected json structure of the request body for the ExecuteCommand function. +type ExecutionRequest struct { + Command string + PrivilegedExecution bool + TimeLimit int + Environment map[string]string +} + +// FullCommand joins the environment variables. +// It does not handle the TimeLimit or the PrivilegedExecution flag. +func (er *ExecutionRequest) FullCommand() string { + var command string + command += "env" + + if er.Environment == nil { + er.Environment = make(map[string]string) + } + er.Environment["CODEOCEAN"] = "true" + + for variable, value := range er.Environment { + command += fmt.Sprintf(" %s=%s", variable, value) + } + command += fmt.Sprintf(" %s", WrapBashCommand(er.Command)) + return command +} + +// BashEscapeCommand escapes the passed command and surrounds it with double-quotes. +// The escaping includes the characters ", \, $, ` (comma-separated) as they are the exceptional characters +// that still have a special meaning with double quotes. See the Bash Manual - Chapter Quoting. +// We only handle the dollar-character and the backquote because the %q format already escapes the other two. +func BashEscapeCommand(command string) string { + command = fmt.Sprintf("%q", command) + command = strings.ReplaceAll(command, "$", "\\$") + command = strings.ReplaceAll(command, "`", "\\`") + return command +} + +// WrapBashCommand escapes the passed command and wraps it into a new bash command. +func WrapBashCommand(command string) string { + return fmt.Sprintf("/bin/bash -c %s", BashEscapeCommand(command)) +} + +// EnvironmentID is an id of an environment. +type EnvironmentID int + +// NewEnvironmentID parses a string into an EnvironmentID. +func NewEnvironmentID(id string) (EnvironmentID, error) { + environment, err := strconv.Atoi(id) + return EnvironmentID(environment), err +} + +// ToString pareses an EnvironmentID back to a string. +func (e EnvironmentID) ToString() string { + return strconv.Itoa(int(e)) +} + +// ExecutionEnvironmentData is the expected json structure of the response body +// for routes returning an execution environment. +type ExecutionEnvironmentData struct { + ExecutionEnvironmentRequest + ID int `json:"id"` +} + +// StatisticalExecutionEnvironmentData is the expected json structure of the response body +// for routes returning statistics about execution environments. +type StatisticalExecutionEnvironmentData struct { + ID int `json:"id"` + PrewarmingPoolSize uint `json:"prewarmingPoolSize"` + IdleRunners uint `json:"idleRunners"` + UsedRunners uint `json:"usedRunners"` +} + +// ExecutionEnvironmentRequest is the expected json structure of the request body +// for the create execution environment function. +type ExecutionEnvironmentRequest struct { + PrewarmingPoolSize uint `json:"prewarmingPoolSize"` + CPULimit uint `json:"cpuLimit"` + MemoryLimit uint `json:"memoryLimit"` + Image string `json:"image"` + NetworkAccess bool `json:"networkAccess"` + ExposedPorts []uint16 `json:"exposedPorts"` +} + +// MappedPort contains the mapping from exposed port inside the container to the host address +// outside the container. +type MappedPort struct { + ExposedPort uint `json:"exposedPort"` + HostAddress string `json:"hostAddress"` +} + +// RunnerResponse is the expected response when providing a runner. +type RunnerResponse struct { + ID string `json:"runnerId"` + MappedPorts []*MappedPort `json:"mappedPorts"` +} + +// ExecutionResponse is the expected response when creating an execution for a runner. +type ExecutionResponse struct { + WebSocketURL string `json:"websocketUrl"` +} + +// ListFileSystemResponse is the expected response when listing the file system. +type ListFileSystemResponse struct { + Files []FileHeader `json:"files"` +} + +// UpdateFileSystemRequest is the expected json structure of the request body for the update file system route. +type UpdateFileSystemRequest struct { + Delete []FilePath `json:"delete"` + Copy []File `json:"copy"` +} + +// FilePath specifies the path of a file and is part of the UpdateFileSystemRequest. +type FilePath string + +// EntryType specifies the type of the object (file/link/directory/...) +type EntryType string + +// These are the common entry types. You find others in the man pages `info ls`. +const ( + EntryTypeRegularFile EntryType = "-" + EntryTypeLink EntryType = "l" +) + +// FileHeader specifies the information provided for listing a File. +type FileHeader struct { + Name FilePath `json:"name"` + EntryType EntryType `json:"entryType"` + LinkTarget FilePath `json:"linkTarget,omitempty"` + Size int `json:"size"` + ModificationTime int `json:"modificationTime"` + Permissions string `json:"permissions"` + Owner string `json:"owner"` + Group string `json:"group"` +} + +// File is a DTO for transmitting file contents. It is part of the UpdateFileSystemRequest. +type File struct { + Path FilePath `json:"path"` + Content []byte `json:"content"` +} + +// Cleaned returns the cleaned path of the FilePath. +func (f FilePath) Cleaned() string { + return path.Clean(string(f)) +} + +// CleanedPath returns the cleaned path of the file. +func (f File) CleanedPath() string { + return f.Path.Cleaned() +} + +// IsDirectory returns true iff the path of the File ends with a /. +func (f File) IsDirectory() bool { + return strings.HasSuffix(string(f.Path), "/") +} + +// ByteContent returns the content of the File. If the File is a directory, the content will be empty. +func (f File) ByteContent() []byte { + if f.IsDirectory() { + return []byte("") + } else { + return f.Content + } +} + +// Formatter mirrors the available Formatters of logrus for configuration purposes. +type Formatter string + +const ( + FormatterText = "TextFormatter" + FormatterJSON = "JSONFormatter" +) + +// ContextKey is the type for keys in a request context that is used for passing data to the next handler. +type ContextKey string + +// Keys to reference information (for logging or monitoring). +const ( + KeyRunnerID = "runner_id" + KeyEnvironmentID = "environment_id" + KeyRunnerDestroyReason = "destroy_reason" +) + +// LoggedContextKeys defines which keys will be logged if a context is passed to logrus. See ContextHook. +var LoggedContextKeys = []ContextKey{KeyRunnerID, KeyEnvironmentID, KeyRunnerDestroyReason} + +// WebSocketMessageType is the type for the messages from Poseidon to the client. +type WebSocketMessageType string + +const ( + WebSocketOutputStdout WebSocketMessageType = "stdout" + WebSocketOutputStderr WebSocketMessageType = "stderr" + WebSocketOutputError WebSocketMessageType = "error" + WebSocketMetaStart WebSocketMessageType = "start" + WebSocketMetaTimeout WebSocketMessageType = "timeout" + WebSocketExit WebSocketMessageType = "exit" +) + +var ( + ErrUnknownWebSocketMessageType = errors.New("unknown WebSocket message type") + // ErrOOMKilled is the exact message that CodeOcean expects to further handle these specific cases. + ErrOOMKilled = errors.New("the allocation was OOM Killed") + ErrMissingType = errors.New("type is missing") + ErrMissingData = errors.New("data is missing") + ErrInvalidType = errors.New("invalid type") + ErrNotSupported = errors.New("not supported") +) + +// WebSocketMessage is the type for all messages send in the WebSocket to the client. +// Depending on the MessageType the Data or ExitCode might not be included in the marshaled json message. +type WebSocketMessage struct { + Type WebSocketMessageType + Data string + ExitCode uint8 +} + +// MarshalJSON implements the json.Marshaler interface. +// This converts the WebSocketMessage into the expected schema (see docs/websocket.schema.json). +func (m WebSocketMessage) MarshalJSON() (res []byte, err error) { + switch m.Type { + case WebSocketOutputStdout, WebSocketOutputStderr, WebSocketOutputError: + res, err = json.Marshal(struct { + MessageType WebSocketMessageType `json:"type"` + Data string `json:"data"` + }{m.Type, m.Data}) + case WebSocketMetaStart, WebSocketMetaTimeout: + res, err = json.Marshal(struct { + MessageType WebSocketMessageType `json:"type"` + }{m.Type}) + case WebSocketExit: + res, err = json.Marshal(struct { + MessageType WebSocketMessageType `json:"type"` + ExitCode uint8 `json:"data"` + }{m.Type, m.ExitCode}) + } + if err != nil { + return nil, fmt.Errorf("error marshaling WebSocketMessage: %w", err) + } else if res == nil { + return nil, ErrUnknownWebSocketMessageType + } + return res, nil +} + +// UnmarshalJSON implements the json.Unmarshaler interface. +// It is used by tests in order to ReceiveNextWebSocketMessage. +func (m *WebSocketMessage) UnmarshalJSON(rawMessage []byte) error { + messageMap := make(map[string]interface{}) + err := json.Unmarshal(rawMessage, &messageMap) + if err != nil { + return fmt.Errorf("error unmarshiling raw WebSocket message: %w", err) + } + messageType, ok := messageMap["type"] + if !ok { + return ErrMissingType + } + messageTypeString, ok := messageType.(string) + if !ok { + return fmt.Errorf("value of key type must be a string: %w", ErrInvalidType) + } + switch messageType := WebSocketMessageType(messageTypeString); messageType { + case WebSocketExit: + data, ok := messageMap["data"] + if !ok { + return ErrMissingData + } + // json.Unmarshal converts any number to a float64 in the massageMap, so we must first cast it to the float. + exit, ok := data.(float64) + if !ok { + return fmt.Errorf("value of key data must be a number: %w", ErrInvalidType) + } + if exit != float64(uint8(exit)) { + return fmt.Errorf("value of key data must be uint8: %w", ErrInvalidType) + } + m.Type = messageType + m.ExitCode = uint8(exit) + case WebSocketOutputStdout, WebSocketOutputStderr, WebSocketOutputError: + data, ok := messageMap["data"] + if !ok { + return ErrMissingData + } + text, ok := data.(string) + if !ok { + return fmt.Errorf("value of key data must be a string: %w", ErrInvalidType) + } + m.Type = messageType + m.Data = text + case WebSocketMetaStart, WebSocketMetaTimeout: + m.Type = messageType + default: + return ErrUnknownWebSocketMessageType + } + return nil +} + +// ClientError is the response interface if the request is not valid. +type ClientError struct { + Message string `json:"message"` +} + +// InternalServerError is the response interface that is returned when an error occurs. +type InternalServerError struct { + Message string `json:"message"` + ErrorCode ErrorCode `json:"errorCode"` +} + +// ErrorCode is the type for error codes expected by CodeOcean. +type ErrorCode string + +const ( + Errork8sUnreachable ErrorCode = "k8s_UNREACHABLE" + Errork8sOverload ErrorCode = "k8s_OVERLOAD" + Errork8sInternalServerError ErrorCode = "k8s_INTERNAL_SERVER_ERROR" + PrewarmingPoolDepleting ErrorCode = "PREWARMING_POOL_DEPLETING" + ErrorUnknown ErrorCode = "UNKNOWN" +) diff --git a/pkg/logging/context_hook.go b/pkg/logging/context_hook.go new file mode 100644 index 0000000..bbd6a96 --- /dev/null +++ b/pkg/logging/context_hook.go @@ -0,0 +1,41 @@ +package logging + +import ( + "github.com/openHPI/poseidon/pkg/dto" + "github.com/sirupsen/logrus" +) + +// ContextHook logs the values referenced by the of dto.LoggedContextKeys. +// By default Logrus does not log the values stored in the passed context. +type ContextHook struct{} + +// Fire is triggered on new log entries. +func (hook *ContextHook) Fire(entry *logrus.Entry) error { + if entry.Context != nil { + injectContextValuesIntoData(entry) + } + return nil +} + +func injectContextValuesIntoData(entry *logrus.Entry) { + for _, key := range dto.LoggedContextKeys { + value := entry.Context.Value(key) + _, valueExisting := entry.Data[string(key)] + if !valueExisting && value != nil { + entry.Data[string(key)] = value + } + } +} + +// Levels returns all levels this hook should be registered to. +func (hook *ContextHook) Levels() []logrus.Level { + return []logrus.Level{ + logrus.PanicLevel, + logrus.FatalLevel, + logrus.ErrorLevel, + logrus.WarnLevel, + logrus.InfoLevel, + logrus.DebugLevel, + logrus.TraceLevel, + } +} diff --git a/pkg/logging/logging.go b/pkg/logging/logging.go new file mode 100644 index 0000000..821b664 --- /dev/null +++ b/pkg/logging/logging.go @@ -0,0 +1,109 @@ +package logging + +import ( + "bufio" + "fmt" + "github.com/getsentry/sentry-go" + "github.com/openHPI/poseidon/pkg/dto" + "github.com/sirupsen/logrus" + "net" + "net/http" + "os" + "strings" + "time" +) + +const TimestampFormat = "2006-01-02T15:04:05.000000Z" + +var log = &logrus.Logger{ + Out: os.Stderr, + Formatter: &logrus.TextFormatter{ + TimestampFormat: TimestampFormat, + DisableColors: true, + FullTimestamp: true, + }, + Hooks: make(logrus.LevelHooks), + Level: logrus.InfoLevel, +} + +const GracefulSentryShutdown = 5 * time.Second + +func InitializeLogging(logLevel string, formatter dto.Formatter) { + level, err := logrus.ParseLevel(logLevel) + if err != nil { + log.WithError(err).Fatal("Error parsing loglevel") + return + } + log.SetLevel(level) + if formatter == dto.FormatterJSON { + log.Formatter = &logrus.JSONFormatter{ + TimestampFormat: TimestampFormat, + } + } + log.AddHook(&ContextHook{}) + log.AddHook(&SentryHook{}) + log.ExitFunc = func(i int) { + sentry.Flush(GracefulSentryShutdown) + os.Exit(i) + } +} + +func GetLogger(pkg string) *logrus.Entry { + return log.WithField("package", pkg) +} + +// ResponseWriter wraps the default http.ResponseWriter and catches the status code +// that is written. +type ResponseWriter struct { + http.ResponseWriter + StatusCode int +} + +func NewLoggingResponseWriter(w http.ResponseWriter) *ResponseWriter { + return &ResponseWriter{w, http.StatusOK} +} + +func (writer *ResponseWriter) WriteHeader(code int) { + writer.StatusCode = code + writer.ResponseWriter.WriteHeader(code) +} + +func (writer *ResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) { + conn, rw, err := writer.ResponseWriter.(http.Hijacker).Hijack() + if err != nil { + return conn, nil, fmt.Errorf("hijacking connection failed: %w", err) + } + return conn, rw, nil +} + +// HTTPLoggingMiddleware returns a http.Handler that logs different information about every request. +func HTTPLoggingMiddleware(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + start := time.Now().UTC() + path := RemoveNewlineSymbol(r.URL.Path) + + lrw := NewLoggingResponseWriter(w) + next.ServeHTTP(lrw, r) + + latency := time.Now().UTC().Sub(start) + logEntry := log.WithContext(r.Context()).WithFields(logrus.Fields{ + "code": lrw.StatusCode, + "method": r.Method, + "path": path, + "duration": latency, + "user_agent": RemoveNewlineSymbol(r.UserAgent()), + }) + if r.UserAgent() == dto.UserAgentFiltered { + logEntry.Trace() + } else { + logEntry.Debug() + } + }) +} + +// RemoveNewlineSymbol GOOD: remove newlines from user controlled input before logging. +func RemoveNewlineSymbol(data string) string { + data = strings.ReplaceAll(data, "\r", "") + data = strings.ReplaceAll(data, "\n", "") + return data +} diff --git a/pkg/logging/sentry_hook.go b/pkg/logging/sentry_hook.go new file mode 100644 index 0000000..315dc53 --- /dev/null +++ b/pkg/logging/sentry_hook.go @@ -0,0 +1,67 @@ +package logging + +import ( + "context" + "errors" + "github.com/getsentry/sentry-go" + "github.com/openHPI/poseidon/pkg/dto" + "github.com/sirupsen/logrus" +) + +// SentryHook is a simple adapter that converts logrus entries into Sentry events. +// Consider replacing this with a more feature rich, additional dependency: https://github.com/evalphobia/logrus_sentry +type SentryHook struct{} + +var ErrorHubInvalid = errors.New("the hub is invalid") + +// Fire is triggered on new log entries. +func (hook *SentryHook) Fire(entry *logrus.Entry) error { + var hub *sentry.Hub + if entry.Context != nil { + hub = sentry.GetHubFromContext(entry.Context) + injectContextValuesIntoData(entry) + } + if hub == nil { + hub = sentry.CurrentHub() + } + client, scope := hub.Client(), hub.Scope() + if client == nil || scope == nil { + return ErrorHubInvalid + } + + scope.SetContext("Poseidon Details", entry.Data) + if runnerID, ok := entry.Data[dto.KeyRunnerID].(string); ok { + scope.SetTag(dto.KeyRunnerID, runnerID) + } + if environmentID, ok := entry.Data[dto.KeyEnvironmentID].(string); ok { + scope.SetTag(dto.KeyEnvironmentID, environmentID) + } + + event := client.EventFromMessage(entry.Message, sentry.Level(entry.Level.String())) + event.Timestamp = entry.Time + if data, ok := entry.Data["error"]; ok { + err, ok := data.(error) + if ok { + entry.Data["error"] = err.Error() + } + } + hub.CaptureEvent(event) + return nil +} + +// Levels returns all levels this hook should be registered to. +func (hook *SentryHook) Levels() []logrus.Level { + return []logrus.Level{ + logrus.PanicLevel, + logrus.FatalLevel, + logrus.ErrorLevel, + logrus.WarnLevel, + } +} + +func StartSpan(op, description string, ctx context.Context, callback func(context.Context)) { + span := sentry.StartSpan(ctx, op) + span.Description = description + defer span.Finish() + callback(span.Context()) +} diff --git a/pkg/monitoring/influxdb2_middleware.go b/pkg/monitoring/influxdb2_middleware.go new file mode 100644 index 0000000..b6113ba --- /dev/null +++ b/pkg/monitoring/influxdb2_middleware.go @@ -0,0 +1,194 @@ +package monitoring + +import ( + "bytes" + "context" + "github.com/gorilla/mux" + influxdb2 "github.com/influxdata/influxdb-client-go/v2" + influxdb2API "github.com/influxdata/influxdb-client-go/v2/api" + http2 "github.com/influxdata/influxdb-client-go/v2/api/http" + "github.com/influxdata/influxdb-client-go/v2/api/write" + "github.com/openHPI/poseidon/internal/config" + "github.com/openHPI/poseidon/pkg/dto" + "github.com/openHPI/poseidon/pkg/logging" + "io" + "net/http" + "strconv" + "time" +) + +const ( + // influxdbContextKey is a key (runner.ContextKey) to reference the influxdb data point in the request context. + influxdbContextKey dto.ContextKey = "influxdb data point" + // measurementPrefix allows easier filtering in influxdb. + measurementPrefix = "poseidon_" + measurementPoolSize = measurementPrefix + "poolsize" + + MeasurementExecutionsAWS = measurementPrefix + "aws_executions" + MeasurementExecutionsK8s = measurementPrefix + "k8s_executions" + MeasurementEnvironments = measurementPrefix + "environments" + MeasurementUsedRunner = measurementPrefix + "used_runners" + + // The keys for the monitored tags and fields. + + InfluxKeyRunnerID = dto.KeyRunnerID + InfluxKeyEnvironmentID = dto.KeyEnvironmentID + InfluxKeyActualContentLength = "actual_length" + InfluxKeyExpectedContentLength = "expected_length" + InfluxKeyDuration = "duration" + influxKeyEnvironmentPrewarmingPoolSize = "prewarming_pool_size" + influxKeyRequestSize = "request_size" +) + +var ( + log = logging.GetLogger("monitoring") + influxClient influxdb2API.WriteAPI +) + +func InitializeInfluxDB(db *config.InfluxDB) (cancel func()) { + if db.URL == "" { + return func() {} + } + + // How often to retry to write data. + const maxRetries = 50 + // How long to wait before retrying to write data. + const retryInterval = 5 * time.Second + // How old the data can be before we stop retrying to write it. Should be larger than maxRetries * retryInterval. + const retryExpire = 10 * time.Minute + // How many batches are buffered before dropping the oldest. + const retryBufferLimit = 100_000 + + // Set options for retrying with the influx client. + options := influxdb2.DefaultOptions() + options.SetRetryInterval(uint(retryInterval.Milliseconds())) + options.SetMaxRetries(maxRetries) + options.SetMaxRetryTime(uint(retryExpire.Milliseconds())) + options.SetRetryBufferLimit(retryBufferLimit) + + // Create a new influx client. + client := influxdb2.NewClientWithOptions(db.URL, db.Token, options) + influxClient = client.WriteAPI(db.Organization, db.Bucket) + influxClient.SetWriteFailedCallback(func(_ string, error http2.Error, retryAttempts uint) bool { + log.WithError(&error).WithField("retryAttempts", retryAttempts).Trace("Retrying to write influx data...") + + // retryAttempts means number of retries, 0 if it failed during first write. + if retryAttempts == options.MaxRetries() { + log.WithError(&error).Warn("Could not write influx data.") + return false // Disable retry. We failed to retry writing the data in time. + } + return true // Enable retry (default) + }) + + // Flush the influx client on shutdown. + cancel = func() { + influxClient.Flush() + influxClient = nil + client.Close() + } + return cancel +} + +// InfluxDB2Middleware is a middleware to send events to an influx database. +func InfluxDB2Middleware(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + route := mux.CurrentRoute(r).GetName() + p := influxdb2.NewPointWithMeasurement(measurementPrefix + route) + + start := time.Now().UTC() + p.SetTime(time.Now()) + + ctx := context.WithValue(r.Context(), influxdbContextKey, p) + requestWithPoint := r.WithContext(ctx) + lrw := logging.NewLoggingResponseWriter(w) + next.ServeHTTP(lrw, requestWithPoint) + + p.AddField(InfluxKeyDuration, time.Now().UTC().Sub(start).Nanoseconds()) + p.AddTag("status", strconv.Itoa(lrw.StatusCode)) + + WriteInfluxPoint(p) + }) +} + +// AddRunnerMonitoringData adds the data of the runner we want to monitor. +func AddRunnerMonitoringData(request *http.Request, runnerID string, environmentID dto.EnvironmentID) { + addRunnerID(request, runnerID) + addEnvironmentID(request, environmentID) +} + +// addRunnerID adds the runner id to the influx data point for the current request. +func addRunnerID(r *http.Request, id string) { + addInfluxDBTag(r, InfluxKeyRunnerID, id) +} + +// addEnvironmentID adds the environment id to the influx data point for the current request. +func addEnvironmentID(r *http.Request, id dto.EnvironmentID) { + addInfluxDBTag(r, InfluxKeyEnvironmentID, id.ToString()) +} + +// AddRequestSize adds the size of the request body to the influx data point for the current request. +func AddRequestSize(r *http.Request) { + body, err := io.ReadAll(r.Body) + if err != nil { + log.WithContext(r.Context()).WithError(err).Debug("Failed to read request body") + return + } + + err = r.Body.Close() + if err != nil { + log.WithContext(r.Context()).WithError(err).Debug("Failed to close request body") + return + } + r.Body = io.NopCloser(bytes.NewBuffer(body)) + + addInfluxDBField(r, influxKeyRequestSize, len(body)) +} + +func ChangedPrewarmingPoolSize(id dto.EnvironmentID, count uint) { + p := influxdb2.NewPointWithMeasurement(measurementPoolSize) + + p.AddTag(InfluxKeyEnvironmentID, id.ToString()) + p.AddField(influxKeyEnvironmentPrewarmingPoolSize, count) + + WriteInfluxPoint(p) +} + +// WriteInfluxPoint schedules the influx data point to be sent. +func WriteInfluxPoint(p *write.Point) { + if influxClient != nil { + p.AddTag("stage", config.Config.InfluxDB.Stage) + // We identified that the influxClient is not truly asynchronous. See #541. + go func() { influxClient.WritePoint(p) }() + } else { + entry := log.WithField("name", p.Name()) + for _, tag := range p.TagList() { + if tag.Key == "event_type" && tag.Value == "periodically" { + return + } + entry = entry.WithField(tag.Key, tag.Value) + } + for _, field := range p.FieldList() { + entry = entry.WithField(field.Key, field.Value) + } + entry.Trace("Influx data point") + } +} + +// addInfluxDBTag adds a tag to the influxdb data point in the request. +func addInfluxDBTag(r *http.Request, key, value string) { + dataPointFromRequest(r).AddTag(key, value) +} + +// addInfluxDBField adds a field to the influxdb data point in the request. +func addInfluxDBField(r *http.Request, key string, value interface{}) { + dataPointFromRequest(r).AddField(key, value) +} + +// dataPointFromRequest returns the data point in the passed request. +func dataPointFromRequest(r *http.Request) *write.Point { + p, ok := r.Context().Value(influxdbContextKey).(*write.Point) + if !ok { + log.WithContext(r.Context()).Error("All http request must contain an influxdb data point!") + } + return p +} diff --git a/pkg/nullio/content_length.go b/pkg/nullio/content_length.go new file mode 100644 index 0000000..93ec5ca --- /dev/null +++ b/pkg/nullio/content_length.go @@ -0,0 +1,84 @@ +package nullio + +import ( + "errors" + "fmt" + "github.com/influxdata/influxdb-client-go/v2/api/write" + "github.com/openHPI/poseidon/pkg/monitoring" + "net/http" + "strconv" +) + +var ErrRegexMatching = errors.New("could not match content length") + +// ContentLengthWriter implements io.Writer. +// It parses the size from the first line as Content Length Header and streams the following data to the Target. +// The first line is expected to follow the format headerLineRegex. +type ContentLengthWriter struct { + Target http.ResponseWriter + contentLengthSet bool + firstLine []byte + expectedContentLength int + actualContentLength int +} + +func (w *ContentLengthWriter) Write(p []byte) (count int, err error) { + if w.contentLengthSet { + return w.handleDataForwarding(p) + } else { + return w.handleContentLengthParsing(p) + } +} + +func (w *ContentLengthWriter) handleDataForwarding(p []byte) (int, error) { + count, err := w.Target.Write(p) + if err != nil { + err = fmt.Errorf("could not write to target: %w", err) + } + w.actualContentLength += count + return count, err +} + +func (w *ContentLengthWriter) handleContentLengthParsing(p []byte) (count int, err error) { + for i, char := range p { + if char != '\n' { + continue + } + + w.firstLine = append(w.firstLine, p[:i]...) + matches := headerLineRegex.FindSubmatch(w.firstLine) + if len(matches) < headerLineGroupName { + log.WithField("line", string(w.firstLine)).Error(ErrRegexMatching.Error()) + return 0, ErrRegexMatching + } + size := string(matches[headerLineGroupSize]) + w.expectedContentLength, err = strconv.Atoi(size) + if err != nil { + log.WithField("size", size).Warn("could not parse content length") + } + w.Target.Header().Set("Content-Length", size) + w.contentLengthSet = true + + if i < len(p)-1 { + count, err = w.Target.Write(p[i+1:]) + if err != nil { + err = fmt.Errorf("could not write to target: %w", err) + } + } + + return len(p[:i]) + 1 + count, err + } + + if !w.contentLengthSet { + w.firstLine = append(w.firstLine, p...) + } + + return len(p), nil +} + +// SendMonitoringData will send a monitoring event of the content length read and written. +func (w *ContentLengthWriter) SendMonitoringData(p *write.Point) { + p.AddField(monitoring.InfluxKeyExpectedContentLength, w.expectedContentLength) + p.AddField(monitoring.InfluxKeyActualContentLength, w.actualContentLength) + monitoring.WriteInfluxPoint(p) +} diff --git a/pkg/nullio/ls2json.go b/pkg/nullio/ls2json.go new file mode 100644 index 0000000..45394fa --- /dev/null +++ b/pkg/nullio/ls2json.go @@ -0,0 +1,184 @@ +package nullio + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "github.com/getsentry/sentry-go" + "github.com/openHPI/poseidon/pkg/dto" + "github.com/openHPI/poseidon/pkg/logging" + "io" + "regexp" + "strconv" + "strings" +) + +var ( + log = logging.GetLogger("nullio") + pathLineRegex = regexp.MustCompile(`(.*):$`) + headerLineRegex = regexp. + MustCompile(`([-aAbcCdDlMnpPsw?])([-rwxXsStT]{9})(\+?) +\d+ +(.+?) +(.+?) +(\d+) +(\d+) +(.*)$`) +) + +const ( + headerLineGroupEntryType = 1 + headerLineGroupPermissions = 2 + headerLineGroupACL = 3 + headerLineGroupOwner = 4 + headerLineGroupGroup = 5 + headerLineGroupSize = 6 + headerLineGroupTimestamp = 7 + headerLineGroupName = 8 +) + +// Ls2JsonWriter implements io.Writer. +// It streams the passed data to the Target and transforms the data into the json format. +type Ls2JsonWriter struct { + Target io.Writer + Ctx context.Context + jsonStartSent bool + setCommaPrefix bool + remaining []byte + latestPath []byte + sentrySpan *sentry.Span +} + +func (w *Ls2JsonWriter) HasStartedWriting() bool { + return w.jsonStartSent +} + +func (w *Ls2JsonWriter) Write(p []byte) (int, error) { + i, err := w.initializeJSONObject() + if err != nil { + return i, err + } + + start := 0 + for i, char := range p { + if char != '\n' { + continue + } + + line := p[start:i] + if len(w.remaining) > 0 { + line = append(w.remaining, line...) + w.remaining = []byte("") + } + + if len(line) != 0 { + count, err := w.writeLine(line) + if err != nil { + log.WithContext(w.Ctx).WithError(err).Warn("Could not write line to Target") + return count, err + } + } + start = i + 1 + } + + if start < len(p) { + w.remaining = p[start:] + } + + return len(p), nil +} + +func (w *Ls2JsonWriter) initializeJSONObject() (count int, err error) { + if !w.jsonStartSent { + count, err = w.Target.Write([]byte("{\"files\": [")) + if count == 0 || err != nil { + log.WithContext(w.Ctx).WithError(err).Warn("Could not write to target") + err = fmt.Errorf("could not write to target: %w", err) + } else { + w.jsonStartSent = true + w.sentrySpan = sentry.StartSpan(w.Ctx, "nullio.init") + w.sentrySpan.Description = "Forwarding" + } + } + return count, err +} + +func (w *Ls2JsonWriter) Close() { + if w.jsonStartSent { + count, err := w.Target.Write([]byte("]}")) + if count == 0 || err != nil { + log.WithContext(w.Ctx).WithError(err).Warn("Could not Close ls2json writer") + } + w.sentrySpan.Finish() + } +} + +func (w *Ls2JsonWriter) writeLine(line []byte) (count int, err error) { + matches := pathLineRegex.FindSubmatch(line) + if matches != nil { + w.latestPath = append(bytes.TrimSuffix(matches[1], []byte("/")), '/') + return 0, nil + } + + matches = headerLineRegex.FindSubmatch(line) + if matches != nil { + response, err1 := w.parseFileHeader(matches) + if err1 != nil { + return 0, err1 + } + + // Skip the first leading comma + if w.setCommaPrefix { + response = append([]byte{','}, response...) + } else { + w.setCommaPrefix = true + } + + count, err1 = w.Target.Write(response) + if err1 != nil { + err = fmt.Errorf("could not write to target: %w", err1) + } else if count == len(response) { + count = len(line) + } + } + + return count, err +} + +func (w *Ls2JsonWriter) parseFileHeader(matches [][]byte) ([]byte, error) { + entryType := dto.EntryType(matches[headerLineGroupEntryType][0]) + permissions := string(matches[headerLineGroupPermissions]) + acl := string(matches[headerLineGroupACL]) + if acl == "+" { + permissions += "+" + } + + size, err1 := strconv.Atoi(string(matches[headerLineGroupSize])) + timestamp, err2 := strconv.Atoi(string(matches[headerLineGroupTimestamp])) + if err1 != nil || err2 != nil { + return nil, fmt.Errorf("could not parse file details: %w %+v", err1, err2) + } + + name := dto.FilePath(append(w.latestPath, matches[headerLineGroupName]...)) + linkTarget := dto.FilePath("") + if entryType == dto.EntryTypeLink { + parts := strings.Split(string(name), " -> ") + const NumberOfPartsInALink = 2 + if len(parts) == NumberOfPartsInALink { + name = dto.FilePath(parts[0]) + linkTarget = dto.FilePath(parts[1]) + } else { + log.WithContext(w.Ctx).Error("could not split link into name and target") + } + } + + response, err := json.Marshal(dto.FileHeader{ + Name: name, + EntryType: entryType, + LinkTarget: linkTarget, + Size: size, + ModificationTime: timestamp, + Permissions: permissions, + Owner: string(matches[headerLineGroupOwner]), + Group: string(matches[headerLineGroupGroup]), + }) + if err != nil { + return nil, fmt.Errorf("could not marshal file header: %w", err) + } + return response, nil +} diff --git a/pkg/nullio/nullio.go b/pkg/nullio/nullio.go new file mode 100644 index 0000000..ad170df --- /dev/null +++ b/pkg/nullio/nullio.go @@ -0,0 +1,43 @@ +package nullio + +import ( + "context" + "fmt" + "io" +) + +// Reader is a struct that implements the io.Reader interface. +// Read does not return when called until the context is done. It is used to avoid reading anything and returning io.EOF +// before the context has finished. +// For example the reader is used by the execution that fetches the stderr stream from Nomad. We do not have a stdin +// that we want to send to Nomad. But we still have to pass Nomad a reader. +// Normally readers send an io.EOF as soon as they have nothing more to read. But we want to avoid this, because in that +// case Nomad will abort (not the execution but) the transmission. +// Why should the reader not just always return 0, nil? Because Nomad reads in an endless loop and thus a busy waiting +// is avoided. +type Reader struct { + Ctx context.Context +} + +func (r Reader) Read(_ []byte) (int, error) { + if r.Ctx == nil || r.Ctx.Err() != nil { + return 0, io.EOF + } + + <-r.Ctx.Done() + return 0, io.EOF +} + +// ReadWriter implements io.ReadWriter. It does not return from Read and discards everything on Write. +type ReadWriter struct { + Reader +} + +func (rw *ReadWriter) Write(p []byte) (int, error) { + n, err := io.Discard.Write(p) + if err != nil { + return n, fmt.Errorf("error writing to io.Discard: %w", err) + } else { + return n, nil + } +} diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go new file mode 100644 index 0000000..36792e5 --- /dev/null +++ b/pkg/storage/storage.go @@ -0,0 +1,185 @@ +package storage + +import ( + "context" + influxdb2 "github.com/influxdata/influxdb-client-go/v2" + "github.com/influxdata/influxdb-client-go/v2/api/write" + "github.com/openHPI/poseidon/pkg/monitoring" + "sync" + "time" +) + +// Storage is an interface for storing objects. +type Storage[T any] interface { + // List returns all objects from the storage. + List() []T + + // Add adds an object to the storage. + // It overwrites the old object if one with the same id was already stored. + Add(id string, o T) + + // Get returns an object from the storage. + // Iff the object does not exist in the storage, ok will be false. + Get(id string) (o T, ok bool) + + // Delete deletes the object with the passed id from the storage. + // It does nothing if no object with the id is present in the store. + Delete(id string) + + // Pop deletes the object with the given id from the storage and returns it. + // Iff no such execution exists, ok is false and true otherwise. + Pop(id string) (o T, ok bool) + + // Purge removes all objects from the storage. + Purge() + + // Length returns the number of currently stored objects in the storage. + Length() uint + + // Sample returns and removes an arbitrary object from the storage. + // ok is true iff an object was returned. + Sample() (o T, ok bool) +} + +// EventType is an enum type to declare the different causes of a monitoring event. +type EventType string + +const ( + Creation EventType = "creation" + Deletion EventType = "deletion" + Periodically EventType = "periodically" +) + +// WriteCallback is called before an event gets monitored. +// Iff eventType is Periodically it is no object provided. +type WriteCallback[T any] func(p *write.Point, object T, eventType EventType) + +// localStorage stores objects in the local application memory. +type localStorage[T any] struct { + sync.RWMutex + objects map[string]T + measurement string + callback WriteCallback[T] +} + +// NewLocalStorage responds with a Storage implementation. +// This implementation stores the data thread-safe in the local application memory. +func NewLocalStorage[T any]() *localStorage[T] { + return &localStorage[T]{ + objects: make(map[string]T), + } +} + +// NewMonitoredLocalStorage responds with a Storage implementation. +// All write operations are monitored in the passed measurement. +// Iff callback is set, it will be called on a write operation. +// Iff additionalEvents not zero, the duration will be used to periodically send additional monitoring events. +func NewMonitoredLocalStorage[T any]( + measurement string, callback WriteCallback[T], additionalEvents time.Duration, ctx context.Context) *localStorage[T] { + s := &localStorage[T]{ + objects: make(map[string]T), + measurement: measurement, + callback: callback, + } + if additionalEvents != 0 { + go s.periodicallySendMonitoringData(additionalEvents, ctx) + } + return s +} + +func (s *localStorage[T]) List() (o []T) { + s.RLock() + defer s.RUnlock() + for _, value := range s.objects { + o = append(o, value) + } + return o +} + +func (s *localStorage[T]) Add(id string, o T) { + s.Lock() + defer s.Unlock() + s.objects[id] = o + s.sendMonitoringData(id, o, Creation, s.unsafeLength()) +} + +func (s *localStorage[T]) Get(id string) (o T, ok bool) { + s.RLock() + defer s.RUnlock() + o, ok = s.objects[id] + return +} + +func (s *localStorage[T]) Delete(id string) { + s.Lock() + defer s.Unlock() + o, ok := s.objects[id] + if ok { + delete(s.objects, id) + s.sendMonitoringData(id, o, Deletion, s.unsafeLength()) + } +} + +func (s *localStorage[T]) Pop(id string) (T, bool) { + o, ok := s.Get(id) + s.Delete(id) + return o, ok +} + +func (s *localStorage[T]) Purge() { + s.Lock() + defer s.Unlock() + for key, object := range s.objects { + s.sendMonitoringData(key, object, Deletion, 0) + } + s.objects = make(map[string]T) +} + +func (s *localStorage[T]) Sample() (o T, ok bool) { + s.Lock() + defer s.Unlock() + for key, object := range s.objects { + delete(s.objects, key) + s.sendMonitoringData(key, object, Deletion, s.unsafeLength()) + return object, true + } + return o, false +} + +func (s *localStorage[T]) Length() uint { + s.RLock() + defer s.RUnlock() + return s.unsafeLength() +} + +func (s *localStorage[T]) unsafeLength() uint { + length := len(s.objects) + return uint(length) +} + +func (s *localStorage[T]) sendMonitoringData(id string, o T, eventType EventType, count uint) { + if s.measurement != "" { + p := influxdb2.NewPointWithMeasurement(s.measurement) + p.AddTag("id", id) + p.AddTag("event_type", string(eventType)) + p.AddField("count", count) + + if s.callback != nil { + s.callback(p, o, eventType) + } + + monitoring.WriteInfluxPoint(p) + } +} + +func (s *localStorage[T]) periodicallySendMonitoringData(d time.Duration, ctx context.Context) { + for { + select { + case <-ctx.Done(): + return + case <-time.After(d): + stub := new(T) + s.sendMonitoringData("", *stub, Periodically, s.Length()) + } + } +} diff --git a/pkg/util/merge_context.go b/pkg/util/merge_context.go new file mode 100644 index 0000000..3413c12 --- /dev/null +++ b/pkg/util/merge_context.go @@ -0,0 +1,66 @@ +package util + +import ( + "context" + "fmt" + "reflect" + "time" +) + +// mergeContext combines multiple contexts. +type mergeContext struct { + contexts []context.Context +} + +func NewMergeContext(contexts []context.Context) context.Context { + return mergeContext{contexts: contexts} +} + +// Deadline returns the earliest Deadline of all contexts. +func (m mergeContext) Deadline() (deadline time.Time, ok bool) { + for _, ctx := range m.contexts { + if anotherDeadline, anotherOk := ctx.Deadline(); anotherOk { + if ok && anotherDeadline.After(deadline) { + continue + } + deadline = anotherDeadline + ok = anotherOk + } + } + return deadline, ok +} + +// Done notifies when the first context is done. +func (m mergeContext) Done() <-chan struct{} { + ch := make(chan struct{}) + cases := make([]reflect.SelectCase, 0, len(m.contexts)) + for _, ctx := range m.contexts { + cases = append(cases, reflect.SelectCase{Dir: reflect.SelectRecv, Chan: reflect.ValueOf(ctx.Done())}) + } + go func(cases []reflect.SelectCase, ch chan struct{}) { + _, _, _ = reflect.Select(cases) + close(ch) + }(cases, ch) + return ch +} + +// Err returns the error of any (random) context and nil iff no context has an error. +func (m mergeContext) Err() error { + for _, ctx := range m.contexts { + if ctx.Err() != nil { + return fmt.Errorf("mergeContext wrapped: %w", ctx.Err()) + } + } + return nil +} + +// Value returns the value for the key if any context has it. +// If multiple contexts have a value for the key, the result is any (random) of them. +func (m mergeContext) Value(key any) any { + for _, ctx := range m.contexts { + if value := ctx.Value(key); value != nil { + return value + } + } + return nil +} diff --git a/pkg/util/util.go b/pkg/util/util.go new file mode 100644 index 0000000..32bf11f --- /dev/null +++ b/pkg/util/util.go @@ -0,0 +1,82 @@ +package util + +import ( + "context" + "errors" + "github.com/openHPI/poseidon/pkg/logging" + "time" +) + +var ( + log = logging.GetLogger("util") + // MaxConnectionRetriesExponential is the default number of retries. It's exported for testing reasons. + MaxConnectionRetriesExponential = 18 + // InitialWaitingDuration is the default initial duration of waiting after a failed time. + InitialWaitingDuration = time.Second + ErrRetryContextDone = errors.New("the retry context is done") +) + +func retryExponential(ctx context.Context, sleep time.Duration, f func() error) func() error { + return func() error { + err := f() + + if err != nil { + select { + case <-ctx.Done(): + err = ErrRetryContextDone + case <-time.After(sleep): + sleep *= 2 + } + } + + return err + } +} + +func retryConstant(ctx context.Context, sleep time.Duration, f func() error) func() error { + return func() error { + err := f() + + if err != nil { + select { + case <-ctx.Done(): + return ErrRetryContextDone + case <-time.After(sleep): + } + } + + return err + } +} + +func retryAttempts(maxAttempts int, f func() error) (err error) { + for i := 0; i < maxAttempts; i++ { + err = f() + if err == nil { + return nil + } else if errors.Is(err, ErrRetryContextDone) { + return err + } + log.WithField("count", i).WithError(err).Debug("retrying after error") + } + return err +} + +// RetryExponentialWithContext executes the passed function with exponentially increasing time starting with one second +// up to a default maximum number of attempts as long as the context is not done. +func RetryExponentialWithContext(ctx context.Context, f func() error) error { + return retryAttempts(MaxConnectionRetriesExponential, retryExponential(ctx, InitialWaitingDuration, f)) +} + +// RetryExponential executes the passed function with exponentially increasing time starting with one second +// up to a default maximum number of attempts. +func RetryExponential(f func() error) error { + return retryAttempts(MaxConnectionRetriesExponential, + retryExponential(context.Background(), InitialWaitingDuration, f)) +} + +// RetryConstantAttemptsWithContext executes the passed function with a constant retry delay of one second +// up to the passed maximum number of attempts as long as the context is not done. +func RetryConstantAttemptsWithContext(attempts int, ctx context.Context, f func() error) error { + return retryAttempts(attempts, retryConstant(ctx, InitialWaitingDuration, f)) +}