Path: blob/main/install/installer/pkg/postprocess/postprocess.go
2501 views
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.1/// Licensed under the GNU Affero General Public License (AGPL).2// See License.AGPL.txt in the project root for license information.34package postprocess56import (7"github.com/gitpod-io/gitpod/installer/pkg/common"8openvsxproxy "github.com/gitpod-io/gitpod/installer/pkg/components/openvsx-proxy"9"github.com/gitpod-io/gitpod/installer/pkg/yq"10metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"11"k8s.io/utils/pointer"12)1314// Processors list of processes executed on each resource document15var Processors = []Processor{16// Remove "status" from root of all network policies17{18Type: common.TypeMetaNetworkPolicy,19Expression: "del(.status)",20},21// Remove "status" from root of OpenVSXProxy stateful sets22{23Type: common.TypeMetaStatefulSet,24Expression: "del(.status)",25Name: pointer.String(openvsxproxy.Component),26},27}2829type Processor struct {30Type metav1.TypeMeta31Expression string32Name *string // Optional33}3435func useProcessor(object common.RuntimeObject, processor Processor) bool {36if object.APIVersion == processor.Type.APIVersion && object.Kind == processor.Type.Kind {37// Name is optional38if processor.Name == nil {39// Name not specified - return40return true41}4243// Name specified - match44return object.Metadata.Name == *processor.Name45}4647return false48}4950func Run(objects []common.RuntimeObject) ([]common.RuntimeObject, error) {51result := make([]common.RuntimeObject, 0)5253for _, o := range objects {54for _, p := range Processors {55if useProcessor(o, p) {56output, err := yq.Process(o.Content, p.Expression)57if err != nil {58return nil, err59}60o.Content = *output61}62}6364result = append(result, o)65}6667return result, nil68}697071