sigs.k8s.io/kueue@v0.6.2/pkg/visibility/api/rest/cluster_queue.go (about) 1 // Copyright 2023 The Kubernetes Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package rest 16 17 import ( 18 "k8s.io/apimachinery/pkg/runtime" 19 "k8s.io/apiserver/pkg/registry/rest" 20 21 "sigs.k8s.io/kueue/apis/visibility/v1alpha1" 22 ) 23 24 // This type is used only to install clusterqueues/ resource so we can install clusterqueues/pending_workloads subresource. 25 // It implements the necessary interfaces for genericapiserver but does not provide any actual functionalities. 26 type CqREST struct{} 27 28 // Those interfaces are necessary for genericapiserver to work properly 29 var _ rest.Storage = &CqREST{} 30 var _ rest.Scoper = &CqREST{} 31 var _ rest.SingularNameProvider = &CqREST{} 32 33 func NewCqREST() *CqREST { 34 return &CqREST{} 35 } 36 37 // New implements rest.Storage interface 38 func (m *CqREST) New() runtime.Object { 39 return &v1alpha1.PendingWorkloadsSummary{} 40 } 41 42 // Destroy implements rest.Storage interface 43 func (m *CqREST) Destroy() {} 44 45 // NamespaceScoped implements rest.Scoper interface 46 func (m *CqREST) NamespaceScoped() bool { 47 return false 48 } 49 50 // GetSingularName implements rest.SingularNameProvider interface 51 func (m *CqREST) GetSingularName() string { 52 return "clusterqueue" 53 }