Skip to content

Updating make manifests target #363

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 10 additions & 32 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -148,10 +148,11 @@ defaults:

# this encounters sed issues on MacOS, quick fix is to use gsed or to escape the parentheses i.e. \( \)
.PHONY: manifests
manifests: controller-gen kustomize ## Generate RBAC objects.
manifests: controller-gen kustomize install-yq ## Generate RBAC objects.
$(CONTROLLER_GEN) rbac:roleName=manager-role webhook paths="./..."
# $(SED) -i -E "s|(- )\${MCAD_REPO}.*|\1\${MCAD_CRD}|" config/crd/mcad/kustomization.yaml
# $(KUSTOMIZE) build config/crd/mcad > config/crd/mcad.yaml && make split_yaml FILE=config/crd/mcad.yaml
$(SED) -i -E "s|(- )\${MCAD_REPO}.*|\1\${MCAD_CRD}|" config/crd/mcad/kustomization.yaml
$(KUSTOMIZE) build config/crd/mcad | $(YQ) -s '"crd-" + .spec.names.singular' --no-doc
mv crd-*.yml config/crd

.PHONY: fmt
fmt: ## Run go fmt against code.
Expand Down Expand Up @@ -236,6 +237,7 @@ SED ?= /usr/bin/sed
KUSTOMIZE_VERSION ?= v4.5.4
CODEGEN_VERSION ?= v0.27.2
CONTROLLER_TOOLS_VERSION ?= v0.9.2
YQ_VERSION ?= v4.30.8 ## latest version that works with go1.19
OPERATOR_SDK_VERSION ?= v1.27.0
GH_CLI_VERSION ?= 2.30.0

Expand All @@ -261,6 +263,11 @@ controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessar
$(CONTROLLER_GEN): $(LOCALBIN)
test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)

.PHONY: install-yq
install-yq: $(YQ) ## Download yq locally if necessary
$(YQ): $(LOCALBIN)
test -s $(LOCALBIN)/yq || GOBIN=$(LOCALBIN) go install github.com/mikefarah/yq/v4@$(YQ_VERSION)

.PHONY: envtest
envtest: $(ENVTEST) ## Download envtest-setup locally if necessary.
$(ENVTEST): $(LOCALBIN)
Expand Down Expand Up @@ -388,32 +395,3 @@ verify-imports: openshift-goimports ## Run import verifications.
.PHONY: scorecard-bundle
scorecard-bundle: install-operator-sdk ## Run scorecard tests on bundle image.
$(OPERATOR_SDK) scorecard bundle


FILE ?= input.yaml # Default value, it isn't a file, but the make cmds fill hang for longer without it
temp_dir := temp_split
output_dir := 'config/crd/'

.PHONY: check_yq
check_yq:
@command -v wget >/dev/null 2>&1 || (echo "Installing wget..."; apt-get install -y wget)
@command -v $(YQ) >/dev/null 2>&1 || (echo "Installing yq..."; wget https://github.com/mikefarah/yq/releases/download/v4.2.0/yq_linux_amd64.tar.gz -O - |\
tar xz && mv yq_linux_amd64 $(YQ))

# this works on a MacOS by replacing awk with gawk
.PHONY: split_yaml
split_yaml:
@$(MAKE) check_yq
@mkdir -p $(temp_dir)
@awk '/apiVersion: /{if (x>0) close("$(temp_dir)/section_" x ".yaml"); x++}{print > "$(temp_dir)/section_"x".yaml"}' $(FILE)
@$(MAKE) process_sections

.PHONY: process_sections
process_sections:
@mkdir -p $(output_dir)
@for section_file in $(temp_dir)/section_*; do \
metadata_name=$$(YQ e '.metadata.name' $$section_file); \
file_name=$$(echo $$metadata_name | awk -F'.' '{print $$2"."$$3"_"$$1".yaml"}'); \
mv $$section_file $(output_dir)/$$file_name; \
done
@rm -r $(temp_dir)
462 changes: 462 additions & 0 deletions config/crd/crd-appwrapper.yml

Large diffs are not rendered by default.

115 changes: 115 additions & 0 deletions config/crd/crd-quotasubtree.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.9.2
creationTimestamp: null
name: quotasubtrees.quota.codeflare.dev
spec:
group: quota.codeflare.dev
names:
kind: QuotaSubtree
listKind: QuotaSubtreeList
plural: quotasubtrees
singular: quotasubtree
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: QuotaSubtree is a specification for a quota subtree resource
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: QuotaSubtreeSpec is the spec for a resource plan
properties:
children:
items:
description: Child is the spec for a QuotaSubtree resource
properties:
name:
type: string
namespace:
type: string
path:
type: string
quotas:
description: Quota is the spec for a QuotaSubtree resource
properties:
disabled:
type: boolean
hardLimit:
type: boolean
requests:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
type: object
type: object
type: object
type: array
parent:
type: string
parentNamespace:
type: string
type: object
status:
description: QuotaSubtreeStatus is the status for a QuotaSubtree resource
properties:
children:
items:
description: ResourceAllocation is the spec for the child status
properties:
allocated:
description: ResourceAllocationStatus is the spec for the child resource usage
properties:
requests:
additionalProperties:
type: string
type: object
type: object
name:
type: string
namespace:
type: string
path:
type: string
type: object
type: array
totalAllocation:
description: ResourceAllocation is the spec for the child status
properties:
allocated:
description: ResourceAllocationStatus is the spec for the child resource usage
properties:
requests:
additionalProperties:
type: string
type: object
type: object
name:
type: string
namespace:
type: string
path:
type: string
type: object
required:
- children
- totalAllocation
type: object
required:
- spec
type: object
served: true
storage: true
80 changes: 80 additions & 0 deletions config/crd/crd-schedulingspec.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.9.2
creationTimestamp: null
name: schedulingspecs.workload.codeflare.dev
spec:
group: workload.codeflare.dev
names:
kind: SchedulingSpec
listKind: SchedulingSpecList
plural: schedulingspecs
singular: schedulingspec
scope: Namespaced
versions:
- name: v1beta1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
properties:
dispatchDuration:
description: Wall clock duration time of appwrapper in seconds.
properties:
expected:
type: integer
limit:
type: integer
overrun:
type: boolean
type: object
minAvailable:
description: Expected number of pods in running and/or completed state. Requeuing is triggered when the number of running/completed pods is not equal to this value. When not specified, requeuing is disabled and no check is performed.
type: integer
nodeSelector:
additionalProperties:
type: string
type: object
requeuing:
description: Specification of the requeuing strategy based on waiting time. Values in this field control how often the pod check should happen, and if requeuing has reached its maximum number of times.
properties:
growthType:
default: exponential
description: Growth strategy to increase the waiting time between requeuing checks. The values available are 'exponential', 'linear', or 'none'. For example, 'exponential' growth would double the 'timeInSeconds' value every time a requeuing event is triggered. If the string value is misspelled or not one of the possible options, the growth behavior is defaulted to 'none'.
type: string
initialTimeInSeconds:
description: Value to keep track of the initial wait time. Users cannot set this as it is taken from 'timeInSeconds'.
type: integer
maxNumRequeuings:
default: 0
description: Maximum number of requeuing events allowed. Once this value is reached (e.g., 'numRequeuings = maxNumRequeuings', no more requeuing checks are performed and the generic items are stopped and removed from the cluster (AppWrapper remains deployed).
type: integer
maxTimeInSeconds:
default: 0
description: Maximum waiting time for requeuing checks.
type: integer
numRequeuings:
default: 0
description: Field to keep track of how many times a requeuing event has been triggered.
type: integer
timeInSeconds:
default: 300
description: Initial waiting time before requeuing conditions are checked. This value is specified by the user, but it may grow as requeuing events happen.
type: integer
type: object
type: object
required:
- metadata
type: object
served: true
storage: true
6 changes: 3 additions & 3 deletions config/crd/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
# since it depends on service name and namespace that are out of this kustomize package.
# It should be run by config/default
resources:
- quota.codeflare_quotasubtrees.yaml
- workload.codeflare_appwrappers.yaml
- workload.codeflare_schedulingspecs.yaml
- crd-appwrapper.yml
- crd-quotasubtree.yml
- crd-schedulingspec.yml

#+kubebuilder:scaffold:crdkustomizeresource
2 changes: 1 addition & 1 deletion config/crd/mcad/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- github.com/project-codeflare/multi-cluster-app-dispatcher/config/crd?ref=v1.36.0
- github.com/project-codeflare/multi-cluster-app-dispatcher/config/crd?ref=v1.37.1
Loading