mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
79 lines
2.6 KiB
Go
79 lines
2.6 KiB
Go
// Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
// Licensed under the GNU Affero General Public License (AGPL).
|
|
// See License.AGPL.txt in the project root for license information.
|
|
|
|
package daemon
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/gitpod-io/gitpod/ws-daemon/pkg/cgroup"
|
|
"github.com/gitpod-io/gitpod/ws-daemon/pkg/container"
|
|
"github.com/gitpod-io/gitpod/ws-daemon/pkg/content"
|
|
"github.com/gitpod-io/gitpod/ws-daemon/pkg/cpulimit"
|
|
"github.com/gitpod-io/gitpod/ws-daemon/pkg/diskguard"
|
|
"github.com/gitpod-io/gitpod/ws-daemon/pkg/hosts"
|
|
"github.com/gitpod-io/gitpod/ws-daemon/pkg/iws"
|
|
"github.com/gitpod-io/gitpod/ws-daemon/pkg/netlimit"
|
|
"k8s.io/apimachinery/pkg/api/resource"
|
|
)
|
|
|
|
// Config configures the workspace node daemon
|
|
type Config struct {
|
|
Runtime RuntimeConfig `json:"runtime"`
|
|
|
|
Content content.Config `json:"content"`
|
|
Uidmapper iws.UidmapperConfig `json:"uidmapper"`
|
|
CPULimit cpulimit.Config `json:"cpulimit"`
|
|
IOLimit IOLimitConfig `json:"ioLimit"`
|
|
ProcLimit int64 `json:"procLimit"`
|
|
NetLimit netlimit.Config `json:"netlimit"`
|
|
OOMScores cgroup.OOMScoreAdjConfig `json:"oomScores"`
|
|
Hosts hosts.Config `json:"hosts"`
|
|
DiskSpaceGuard diskguard.Config `json:"disk"`
|
|
WorkspaceController WorkspaceControllerConfig `json:"workspaceController"`
|
|
}
|
|
|
|
type WorkspaceControllerConfig struct {
|
|
Enabled bool `json:"enabled"`
|
|
WorkingAreaSuffix string `json:"workingAreaSuffix"`
|
|
}
|
|
|
|
type RuntimeConfig struct {
|
|
Container *container.Config `json:"containerRuntime"`
|
|
Kubeconfig string `json:"kubeconfig"`
|
|
KubernetesNamespace string `json:"namespace"`
|
|
}
|
|
|
|
type IOLimitConfig struct {
|
|
WriteBWPerSecond resource.Quantity `json:"writeBandwidthPerSecond"`
|
|
ReadBWPerSecond resource.Quantity `json:"readBandwidthPerSecond"`
|
|
WriteIOPS int64 `json:"writeIOPS"`
|
|
ReadIOPS int64 `json:"readIOPS"`
|
|
}
|
|
|
|
type ConfigReloader interface {
|
|
ReloadConfig(context.Context, *Config) error
|
|
}
|
|
|
|
type ConfigReloaderFunc func(context.Context, *Config) error
|
|
|
|
func (f ConfigReloaderFunc) ReloadConfig(ctx context.Context, cfg *Config) error {
|
|
return f(ctx, cfg)
|
|
}
|
|
|
|
type CompositeConfigReloader []ConfigReloader
|
|
|
|
func (cs CompositeConfigReloader) ReloadConfig(ctx context.Context, cfg *Config) error {
|
|
for _, c := range cs {
|
|
err := c.ReloadConfig(ctx, cfg)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := ctx.Err(); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|