Path: blob/main/components/ws-manager-mk2/service/imagespec.go
2496 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 service56import (7"context"89regapi "github.com/gitpod-io/gitpod/registry-facade/api"10workspacev1 "github.com/gitpod-io/gitpod/ws-manager/api/crd/v1"11"google.golang.org/grpc/codes"12"google.golang.org/grpc/status"13"k8s.io/apimachinery/pkg/api/errors"14"k8s.io/apimachinery/pkg/types"15"k8s.io/utils/pointer"1617"sigs.k8s.io/controller-runtime/pkg/client"18)1920type WorkspaceImageSpecProvider struct {21Client client.Client22Namespace string2324regapi.UnimplementedSpecProviderServer25}2627func (is *WorkspaceImageSpecProvider) GetImageSpec(ctx context.Context, req *regapi.GetImageSpecRequest) (*regapi.GetImageSpecResponse, error) {28var ws workspacev1.Workspace29err := is.Client.Get(ctx, types.NamespacedName{Namespace: is.Namespace, Name: req.Id}, &ws)30if errors.IsNotFound(err) {31return nil, status.Errorf(codes.NotFound, "not found")32}33if err != nil {34return nil, status.Errorf(codes.Internal, "%s", err.Error())35}3637return ®api.GetImageSpecResponse{38Spec: ®api.ImageSpec{39BaseRef: pointer.StringDeref(ws.Spec.Image.Workspace.Ref, ""),40IdeRef: ws.Spec.Image.IDE.Web,41IdeLayerRef: ws.Spec.Image.IDE.Refs,42SupervisorRef: ws.Spec.Image.IDE.Supervisor,43},44}, nil45}464748