Skip to content
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

Additional Updates #4

Open
wants to merge 7 commits into
base: add_dscinit_controller
Choose a base branch
from
Open
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
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,6 @@ components/gcp-click-to-deploy/src/user_config/**
**/reg_tmp
scripts/gke/build/**

odh-manifests/

cover.out
14 changes: 13 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
# Build the manager binary
ARG GOLANG_VERSION=1.18.9

FROM registry.access.redhat.com/ubi8/go-toolset:$GOLANG_VERSION as builder
ARG LOCAL_BUNDLE=odh-manifests

WORKDIR /workspace
USER root
# Copy the Go Modules manifests
ENV BUNDLE=$LOCAL_BUNDLE
COPY go.mod go.mod
COPY go.sum go.sum
# cache deps before building and copying source so that we don't need to re-download as much
Expand All @@ -15,6 +18,10 @@ RUN go mod download
COPY main.go main.go
COPY apis/ apis/
COPY controllers/ controllers/
COPY pkg/ pkg/

# Add in the odh-manifests tarball
COPY $BUNDLE/ /opt/odh-manifests/

# Build
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o manager main.go
Expand All @@ -23,6 +30,11 @@ RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o manager main.go
FROM registry.access.redhat.com/ubi8/ubi-minimal:latest
WORKDIR /
COPY --from=builder /workspace/manager .
USER 65532:65532
COPY --from=builder /opt/odh-manifests /opt/odh-manifests

RUN chown -R 1001:0 /opt/odh-manifests &&\
chmod -R a+r /opt/odh-manifests

USER 1001

ENTRYPOINT ["/manager"]
27 changes: 26 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ VERSION ?= 0.0.1
IMG ?= quay.io/vhire/opendatahub-operator:dev-$(VERSION)
IMAGE_BUILDER ?= podman
OPERATOR_NAMESPACE ?= opendatahub-operator-system
MANIFEST_REPO ?= opendatahub-io
MANIFEST_RELEASE ?= master
CHANNELS="stable,rolling"
DEFAULT_CHANNEL="rolling"

Expand Down Expand Up @@ -122,7 +124,7 @@ run: manifests generate fmt vet ## Run a controller from your host.
go run ./main.go

.PHONY: docker-build
docker-build: test ## Build docker image with the manager.
docker-build: test odh-manifests/version.py ## Build docker image with the manager.
${IMAGE_BUILDER} build -t ${IMG} .

.PHONY: docker-push
Expand All @@ -132,6 +134,15 @@ docker-push: ## Push docker image with the manager.
.PHONY: image
image: docker-build docker-push ## Build and push docker image with the manager.

MANIFESTS_TARBALL_URL="https://github.com/${MANIFEST_REPO}/odh-manifests/tarball/${MANIFEST_RELEASE}"

.PHONY: get-manifests
get-manifests: odh-manifests/version.py ## Get latest odh-manifests tarball

odh-manifests/version.py: ## Get latest odh-manifests tarball
rm -fr odh-manifests && mkdir odh-manifests
wget -c $(MANIFESTS_TARBALL_URL) -O - | tar -zxv -C odh-manifests/ --strip-components 1

##@ Deployment

ifndef ignore-not-found
Expand Down Expand Up @@ -242,3 +253,17 @@ catalog-build: opm ## Build a catalog image.
.PHONY: catalog-push
catalog-push: ## Push a catalog image.
$(MAKE) docker-push IMG=$(CATALOG_IMG)

TOOLBOX_GOLANG_VERSION := 1.18.9
TOOLBOX_OPERATOR_SDK_VERSION := 1.24.1

# Generate a Toolbox container for locally testing changes easily
.PHONY: toolbox
toolbox: ## Create a toolbox instance with the proper Golang and Operator SDK versions
$(IMAGE_BUILDER) build \
--build-arg GOLANG_VERSION=$(TOOLBOX_GOLANG_VERSION) \
--build-arg OPERATOR_SDK_VERSION=$(TOOLBOX_OPERATOR_SDK_VERSION) \
-f toolbox.Dockerfile -t opendatahub-toolbox .
$(IMAGE_BUILDER) stop opendatahub-toolbox ||:
toolbox rm opendatahub-toolbox ||:
toolbox create opendatahub-toolbox --image localhost/opendatahub-toolbox:latest
5 changes: 5 additions & 0 deletions bundle.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@ LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.24.1
LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1
LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v3

# Labels for testing.
LABEL operators.operatorframework.io.test.mediatype.v1=scorecard+v1
LABEL operators.operatorframework.io.test.config.v1=tests/scorecard/

# Copy files to locations specified by labels.
COPY bundle/manifests /manifests/
COPY bundle/metadata /metadata/
COPY bundle/tests/scorecard /tests/scorecard/
216 changes: 216 additions & 0 deletions bundle/manifests/console.openshift.io_odhquickstarts.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
description: Extension for guiding user through various workflows in the Red Hat
OpenShift Data Science dashboard.
displayName: OdhQuickStart
include.release.openshift.io/ibm-cloud-managed: "true"
include.release.openshift.io/self-managed-high-availability: "true"
include.release.openshift.io/single-node-developer: "true"
creationTimestamp: null
labels:
opendatahub.io/dashboardcrd: "true"
name: odhquickstarts.console.openshift.io
spec:
group: console.openshift.io
names:
kind: OdhQuickStart
listKind: OdhQuickStartList
plural: odhquickstarts
singular: odhquickstart
scope: Namespaced
versions:
- name: v1
schema:
openAPIV3Schema:
description: OdhQuickStart is an extension for guiding user through various
workflows in the Red Hat OpenShift Data Science dashboard.
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: OdhQuickStartSpec is the desired quick start configuration.
properties:
accessReviewResources:
description: accessReviewResources contains a list of resources that
the user's access will be reviewed against in order for the user
to complete the Quick Start. The Quick Start will be hidden if any
of the access reviews fail.
items:
description: ResourceAttributes includes the authorization attributes
available for resource requests to the Authorizer interface
properties:
group:
description: Group is the API Group of the Resource. "*" means
all.
type: string
name:
description: Name is the name of the resource being requested
for a "get" or deleted for a "delete". "" (empty) means all.
type: string
namespace:
description: Namespace is the namespace of the action being
requested. Currently, there is no distinction between no
namespace and all namespaces "" (empty) is defaulted for LocalSubjectAccessReviews
"" (empty) is empty for cluster-scoped resources "" (empty)
means "all" for namespace scoped resources from a SubjectAccessReview
or SelfSubjectAccessReview
type: string
resource:
description: Resource is one of the existing resource types. "*"
means all.
type: string
subresource:
description: Subresource is one of the existing resource types. ""
means none.
type: string
verb:
description: 'Verb is a kubernetes resource API verb, like:
get, list, watch, create, update, delete, proxy. "*" means
all.'
type: string
version:
description: Version is the API Version of the Resource. "*"
means all.
type: string
type: object
type: array
appName:
description: the name/id of the odh application the quick start pertains
to
type: string
conclusion:
description: conclusion sums up the Quick Start and suggests the possible
next steps. (includes markdown)
type: string
description:
description: description is the description of the Quick Start. (includes
markdown)
maxLength: 256
minLength: 1
type: string
displayName:
description: displayName is the display name of the Quick Start.
minLength: 1
type: string
durationMinutes:
description: durationMinutes describes approximately how many minutes
it will take to complete the Quick Start.
minimum: 1
type: integer
icon:
description: icon is a base64 encoded image that will be displayed
beside the Quick Start display name. The icon should be an vector
image for easy scaling. The size of the icon should be 40x40.
type: string
introduction:
description: introduction describes the purpose of the Quick Start.
(includes markdown)
minLength: 1
type: string
nextQuickStart:
description: nextQuickStart is a list of the following Quick Starts,
suggested for the user to try.
items:
type: string
type: array
prerequisites:
description: prerequisites contains all prerequisites that need to
be met before taking a Quick Start. (includes markdown)
items:
type: string
type: array
tags:
description: tags is a list of strings that describe the Quick Start.
items:
type: string
type: array
tasks:
description: tasks is the list of steps the user has to perform to
complete the Quick Start.
items:
description: OdhQuickStartTask is a single step in a Quick Start.
properties:
description:
description: description describes the steps needed to complete
the task. (includes markdown)
minLength: 1
type: string
review:
description: review contains instructions to validate the task
is complete. The user will select 'Yes' or 'No'. using a radio
button, which indicates whether the step was completed successfully.
properties:
failedTaskHelp:
description: failedTaskHelp contains suggestions for a failed
task review and is shown at the end of task. (includes
markdown)
minLength: 1
type: string
instructions:
description: instructions contains steps that user needs
to take in order to validate his work after going through
a task. (includes markdown)
minLength: 1
type: string
required:
- failedTaskHelp
- instructions
type: object
summary:
description: summary contains information about the passed step.
properties:
failed:
description: failed briefly describes the unsuccessfully
passed task. (includes markdown)
maxLength: 128
minLength: 1
type: string
success:
description: success describes the succesfully passed task.
minLength: 1
type: string
required:
- failed
- success
type: object
title:
description: title describes the task and is displayed as a
step heading.
minLength: 1
type: string
required:
- description
- title
type: object
minItems: 1
type: array
required:
- description
- displayName
- durationMinutes
- introduction
- tasks
type: object
required:
- spec
type: object
served: true
storage: true
status:
acceptedNames:
kind: ""
plural: ""
conditions: null
storedVersions: null
Loading