proxy

package
v0.0.0-...-d5bad45 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2024 License: Apache-2.0 Imports: 35 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrFileToStringEmpty is the error returned when the defined users file is empty
	ErrFileToStringEmpty = errors.New("file is empty")
	// ErrWrongFileFormat is the error returned when the defined users file is empty
	ErrWrongFileFormat = errors.New("file format is not supported")
	// ErrWrongURLFormat is the error returned when the targetURL is not containing scheme
	ErrWrongURLFormat = errors.New("invalid URL format")
	// ErrWrongImageFormat is the error returned when the docker image is in wrong format
	ErrWrongImageFormat = errors.New("invalid image format")
	// ErrEmptyType is the error returned when there's no loadtest type provided
	ErrEmptyType = errors.New("loadtest type is empty")
)
View Source
var (
	// ErrInvalidCSVFormat when the number of columns is different than two
	ErrInvalidCSVFormat = errors.New("invalid csv format for environment variables, expecting: key, value")
)

Functions

func OpenAPISpecCORSMiddleware

func OpenAPISpecCORSMiddleware(cfg OpenAPIConfig) func(http.Handler) http.Handler

OpenAPISpecCORSMiddleware returns a middleware to handle CORS requests for OpenAPI spec

func OpenAPISpecHandler

func OpenAPISpecHandler(cfg OpenAPIConfig) func(w http.ResponseWriter, r *http.Request)

OpenAPISpecHandler returns a http handler for OpenAPI Spec

func OpenAPIUIHandler

func OpenAPIUIHandler(cfg OpenAPIConfig) func(w http.ResponseWriter, r *http.Request)

OpenAPIUIHandler returns a http handler for UI built out of OpenAPI Spec

func ReadEnvs

func ReadEnvs(envVars string) (map[string]string, error)

ReadEnvs reads data from csv file to save it as a map for creating a secret

func RunServer

func RunServer(cfg Config, rr Runner) error

RunServer runs Kangal proxy API

Types

type Config

type Config struct {
	HTTPPort            int `envconfig:"WEB_HTTP_PORT" default:"8080"`
	Logger              observability.LoggerConfig
	OpenAPI             OpenAPIConfig
	Report              report.Config
	MaxLoadTestsRun     int
	MaxListLimit        int64 `envconfig:"MAX_LIST_LIMIT" required:"true" default:"50"`
	MasterURL           string
	AllowedCustomImages bool `envconfig:"ALLOWED_CUSTOM_IMAGES" default:"false"`

	// KubeClientTimeout specifies timeout for each operation done by kube client
	KubeClientTimeout time.Duration `envconfig:"KUBE_CLIENT_TIMEOUT" default:"5s"`
}

Config is the possible Proxy configurations

type LoadTestStatus

type LoadTestStatus struct {
	Type            string                      `json:"type"`
	DistributedPods int32                       `json:"distributedPods"`        // number of distributed pods requested
	Namespace       string                      `json:"loadtestName,omitempty"` // namespace created equals the loadtest name
	Phase           string                      `json:"phase,omitempty"`        // jmeter loadtest status
	Tags            apisLoadTestV1.LoadTestTags `json:"tags"`
	HasEnvVars      bool                        `json:"hasEnvVars"`
	HasTestData     bool                        `json:"hasTestData"`
}

LoadTestStatus defines response structure for status request

type LoadTestStatusPage

type LoadTestStatusPage struct {
	Limit    int64            `json:"limit"`
	Continue string           `json:"continue"`
	Remain   *int64           `json:"remain"`
	Items    []LoadTestStatus `json:"items"`
}

LoadTestStatusPage represents a page of load tests.

type MetricsReporter

type MetricsReporter struct {
	// contains filtered or unexported fields
}

MetricsReporter used to interface with the metrics configurations

func NewMetricsReporter

func NewMetricsReporter(meter metric.Meter, kubeClient *kube.Client) (*MetricsReporter, error)

NewMetricsReporter contains loadtest metrics definition

type OpenAPIConfig

type OpenAPIConfig struct {
	SpecPath          string `envconfig:"OPEN_API_SPEC_PATH" default:"/etc/kangal"`
	SpecFile          string `envconfig:"OPEN_API_SPEC_FILE" default:"openapi.json"`
	ServerURL         string `envconfig:"OPEN_API_SERVER_URL"`
	ServerDescription string `envconfig:"OPEN_API_SERVER_DESCRIPTION"`
	UIUrl             string `envconfig:"OPEN_API_UI_URL"`

	AccessControlAllowOrigin  []string `envconfig:"OPEN_API_CORS_ALLOW_ORIGIN" default:"*"`
	AccessControlAllowHeaders []string `envconfig:"OPEN_API_CORS_ALLOW_HEADERS" default:"Content-Type,api_key,Authorization"`
}

OpenAPIConfig is the OpenAPI specification-specific parameters

type Proxy

type Proxy struct {
	// contains filtered or unexported fields
}

Proxy handler

func NewProxy

func NewProxy(maxLoadTestsRun int, registry backends.Registry, kubeClient *kube.Client, maxListLimit int64, allowedCustomImages bool) *Proxy

NewProxy returns new Proxy handlers

func (*Proxy) Create

func (p *Proxy) Create(w http.ResponseWriter, r *http.Request)

Create creates loadtest CR on POST request

func (*Proxy) Delete

func (p *Proxy) Delete(w http.ResponseWriter, r *http.Request)

Delete deletes load test CR

func (*Proxy) Get

func (p *Proxy) Get(w http.ResponseWriter, r *http.Request)

Get returns the loadtest CR info

func (*Proxy) GetLogs

func (p *Proxy) GetLogs(w http.ResponseWriter, r *http.Request)

GetLogs returns the loadtest logs from master or worker pods

func (*Proxy) List

func (p *Proxy) List(w http.ResponseWriter, r *http.Request)

List lists all the load tests.

type Runner

type Runner struct {
	Exporter      *otelPrometheus.Exporter
	KubeClient    *kube.Client
	Logger        *zap.Logger
	StatsReporter *MetricsReporter
}

Runner encapsulates all Kangal Proxy API server dependencies

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL