Skip to content

Commit

Permalink
Define Cohort API
Browse files Browse the repository at this point in the history
  • Loading branch information
gabesaba committed Jul 25, 2024
1 parent b348ce4 commit fef1cc1
Show file tree
Hide file tree
Showing 4 changed files with 400 additions and 0 deletions.
12 changes: 12 additions & 0 deletions PROJECT
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Code generated by tool. DO NOT EDIT.
# This file is used to track the info used to scaffold your project
# and allow the plugins properly work.
# More info: https://book.kubebuilder.io/reference/project-config.html
domain: x-k8s.io
layout:
- go.kubebuilder.io/v3
Expand Down Expand Up @@ -61,4 +65,12 @@ resources:
kind: AdmissionCheck
path: sigs.k8s.io/kueue/apis/kueue/v1beta1
version: v1beta1
- api:
crdVersion: v1
namespaced: true
domain: x-k8s.io
group: kueue
kind: Cohort
path: sigs.k8s.io/kueue/apis/kueue/v1alpha1
version: v1alpha1
version: "3"
86 changes: 86 additions & 0 deletions apis/kueue/v1alpha1/cohort_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
/*
Copyright The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package v1alpha1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
kueuebeta "sigs.k8s.io/kueue/apis/kueue/v1beta1"
)

// CohortSpec defines the desired state of Cohort
type CohortSpec struct {
// Parent references the name of the Cohort's parent, if
// any. It satisfies one of three cases:
// 1) Unset. This Cohort is the root of its Cohort tree.
// 2) References a non-existent Cohort. We use default Cohort (no borrowing/lending limits).
// 3) References an existent Cohort.
//
//+kubebuilder:validation:MaxLength=253
//+kubebuilder:validation:Pattern="^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$"
//
Parent string `json:"parent,omitempty"`

// ResourceGroups describes groupings of Resources and
// Flavors. Each ResourceGroup defines a list of Resources
// and a list of Flavors which provide quotas for these
// Resources. Each Resource and each Flavor may only form part
// of one ResourceGroup. There may be up to 16 ResourceGroups
// within a Cohort.
//
// BorrowingLimit limits how much members of this Cohort
// subtree can borrow from the parent subtree. This limit must
// only be set when the Cohort has a parent.
//
// LendingLimit limits how much members of this Cohort
// subtree can lend to the parent subtree. This limit must
// only be set when the Cohort has a parent.
//
//+listType=atomic
//+kubebuilder:validation:MaxItems=16
//
ResourceGroups []kueuebeta.ResourceGroup `json:"resourceGroups,omitempty"`
}

// CohortStatus defines the observed state of Cohort
type CohortStatus struct {
}

//+kubebuilder:object:root=true
//+kubebuilder:subresource:status
//+kubebuilder:resource:scope=Cluster

// Cohort is the Schema for the cohorts API
type Cohort struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

Spec CohortSpec `json:"spec,omitempty"`
Status CohortStatus `json:"status,omitempty"`
}

//+kubebuilder:object:root=true

// CohortList contains a list of Cohort
type CohortList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Cohort `json:"items"`
}

func init() {
SchemeBuilder.Register(&Cohort{}, &CohortList{})
}
97 changes: 97 additions & 0 deletions apis/kueue/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit fef1cc1

Please sign in to comment.