Giter Club home page Giter Club logo

byon's People

Contributors

goern avatar guimou avatar oindrillac avatar sesheta avatar tumido avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

byon's Issues

Define new image tag annotations

Find agreement on new additional imagestream annotations:

Status Annotation key Values Description
Preexisting opendatahub.io/notebook-image-desc string User facing image description
Proposed new opendatahub.io/notebook-image-messages string encoded JSON Validation output (errors and recommendations)
Preexisting opendatahub.io/notebook-image-name string User facing image name
Proposed new, questionable opendatahub.io/notebook-image-origin string Defines if the image is part of ODH distribution, admin imported or user created. Proposed values Default, Admin and Custom
Proposed new opendatahub.io/notebook-image-phase string State of validation process: Validating, Success, Failed
Preexisting opendatahub.io/notebook-image-url url Container image url e.g. quay.io/org/image:tag
Proposed new Dismissed opendatahub.io/notebook-image-visible boolean string Decides if the imagestream is shown to users in spawner UI. Either "true" or "false" Replaced by adding/removing the standard opendatahub.io/notebook-image label, see opendatahub-io-contrib/jupyterhub-singleuser-profiles#217
Proposed new opendatahub.io/notebook-image-creator string Kubernetes user name of the person initiating the import

[EPIC] Run images via jupyter notebook spawner from repo commit

Is your feature request related to a problem? Please describe.
As an ODH Admin, I want to be able to create new notebook images from scratch by committing a notebook file to a repository and opening an issue assigned to a bot, so that I can run the images via Jupyter Notebook Spawner.

Describe the solution you'd like
I want to be able to create as many PRs I want before I decide to rebuild the jupyter notebook image. Then I can open a template issue assigned to a bot that triggers a new image build with my latest changes. The issue should be closed automatically but also include a link to the image that was hosted.

Acceptance Criteria

Additional context
related: open-services-group/scrum#15

Create BYON User Documentation

We want to create user documentation that highlights what user should expect and also provides them recommendations on best practices.

Acceptance Criteria:

  • Add documentation on good practices/recommendations for creating custom images.
  • Add documentation for minimal requirements for image that BYON expects

[2pt] Trigger notebook image build with template issue

Is your feature request related to a problem? Please describe.
As an ODH Admin, I want to be able to trigger a new image build by opening an issue through a template, so there is little effort on my part to trigger a build and so that the built image shows up on my Jupyter Notebook Spawner on ODH.

Describe the solution you'd like
I want to be able to create a Github issue using a template. This template doesn't need any other input from the user and the bot will know what to do with the issue. All correspondence with the bot will be done through that issue.

Acceptance Criteria

  • Create a template issue that has a bot assigned
  • Template could have fields to provide custom parameters to the build
  • We can deploy this feature/feature-branch to os-climate

Additional context
related to: #49

Tests flaking under heavy CPU load

Thanks @tumido!
Tested. All test cases work as expected, except these 2:

Thoth Station miminal Python 3.8   This image is expected to PASS validation   Failed
                                   false
                                   [{"severity":"error","message":"start-singleuser.sh script took too long to call 'jupyter labhub'"}]
Thoth Station miminal Python 3.8   This image is expected to PASS validation   Failed
                                   false
                                   [{"severity":"error","message":"start-singleuser.sh script took too long to call 'jupyter labhub'"}]

Originally posted by @oindrillac in #29 (review)

Define states for Pipelines and UI (e.g. validating, validated, failed)

Is your feature request related to a problem? Please describe.
UI relies on Pipelines states and therefore there is a need to agree on these states.

Describe the solution you'd like
Have a definition of the states required by UI and Pipelines in a doc describing what is expected and accessible at each of these states.

Describe alternatives you've considered

Additional context

JupyterHub notebook requirements

Supporting JupyterHub Spawner UI scenario and the current RHODS/ODH architecture:

Based on s2i-minimal-notebook, each image should include following prerequisites:

Python packages

Based on requirements.in and Pipfile at:
https://github.com/thoth-station/s2i-minimal-notebook/tree/master/overlays/f34-python39
https://github.com/thoth-station/s2i-minimal-notebook/tree/master/overlays/python36
https://github.com/thoth-station/s2i-minimal-notebook/tree/master/overlays/python38

Package name Note
notebook Provides the classic notebook interface. Either this or jupyterlab has to be present
jupyterhub Provides Spawner. Also transitive dependency from jupyterhub-singleuser-profiles which is referenced later but not installed as a package (weird)
jupyterlab Provides the JupyterLab UI interface. Either this or jupyterhub has to be present
jupyterlab-requirements Requires jupyterlab, it is NOT present in Python 3.6 overlay
jupyter_kernel_gateway This was probably never used.
jupyter-nbrequirements Extension to JupyterLab. Requires jupyterlab. Requirements plugin for Jupyterhub classic. Requires notebook. Not maintained.
supervisor This was probably used only when WEBDAV is enabled, which I never saw...
jupyterlab-git Extension enabling git. Requires git distribution package.
jupyterlab-spellchecker Extension. This is NOT present in Python 3.6 overlay

System packages

  • Python
  • Git
  • Openshift Client

Configuration

Omitted scenarios

I'm ignoring following scenarios and usecases, because they are either not used at all or they don't cover the base functionality we'd like to ensure in our "pre-flight check":

Originally posted by @tumido in #1 (comment)

Introduce advanced validation steps to perform security scanning

Is your feature request related to a problem? Please describe.
Need to check for vulnerabilities and possible security problems in the image.

Describe the solution you'd like

  • Introduce advanced validation steps that perform security scanning of imported images to identify vulnerabilities, and offer recommendations.

Describe alternatives you've considered

Additional context

[8pt] Make bot respond to issues and build images

Is your feature request related to a problem? Please describe.
As the bot, I want to respond to an issue I am assigned to and build the repo into a custom notebook image.

Describe the solution you'd like
I want the bot to automatically start building the image and hosting it.

Acceptance Criteria

  • That issue assigned to the bot triggers a new custom notebook image build
  • Bot handles closing the issue if no issues arise, otherwise it uses the issue as a platform to inform the user of errors and possible avenues to correct the errors.
  • Reuse BYON verification, aicoe-ci pipelines

Additional context
part of epic: #49

Add visibility toggle to packages list

Discovered packages needs an additional field to support visibility toggle.

Proposed schema:

[
    {"name": "ansible", "version": "5.5.0", "visible": true},
    {"name": "appdirs", "version": "1.4.4", "visible": false}
]

[1pt] Define new ADR that “bot” is a GitHub App

Is your feature request related to a problem? Please describe.
Define new ADR that “bot” is a GitHub App

Describe the solution you'd like
I want to create an ADR that defines what a bot is in the context of this EPIC. We are using a Github app as a bases of the bot, which will also use probot most likely.

Describe alternatives you've considered
Other bot considerations are github actions.

Additional context
related: open-services-group/scrum#15

Periodic polling of container images

Investigate how to manage imagestream updates. This issue is looking for answers/analysis on:

Based on my initial screening it seems there's no way to gate when image stream tag import if set to scheduled. Also it's unsure when the cache is cleaned or accessed (is this per node?) and how an image is cached. Investigate what happens when pods are started: if the image is pulled from a remote repository or mirrored to internal container registry on the first start and pulled from there. What happens when pod is scheduled to a different node (again pulling from internal/external registry?) Experiments needed. It effects when we get the updated image and if we know about it or user is served a newer version withouth admin/validation pipeline noticing first.

Besides scheduled import described above, there's no common reactive facility to initiate/trigger notification from remote registries - webhooks etc, this is remote repository specific and must be set on the remote repository side.

[spike] BYON Pipeline-as-a-Service

As an ODH Admin,
I want to schedule the BYON Pipeline Runs using Pipeline as a Service
so that I can control the scheduling/location of the PipelineRuns

As an ODH Admin,
I want to point my Pipeline as a Service to a specific Git Tag on a specific repository on GitHub,
so that I can control the version of BYON pipelines used.

As an OSG release-engineer,
I want to git-tag a specific commit in a repository on GitHub,
so that I can maintain releases of the BYON Pipelines.

Acceptance Criteria

  • access to Red Hat shared KCP instance is granted to op1st-ops/sre
  • smaug and os-climate clusters are available to all op1st-ops in KCP
  • Pipeline is schedulable via KCP on smaug
  • Pipeline Run logs are available from KCP

References

Dev/Stage environment for ODH Jupyterhub

Is your feature request related to a problem? Please describe.
I want:

  • A stage environment deploying BYON on top of ODH with JupyterHub deployment
  • A clean, easy and reproducible procedure how to stand up a dev environment that deploys ODH operator + JupyterHub + BYON for dev purposes

Describe the solution you'd like
For stage environment provide a namespace or cluster in Operate First with a BYON deployment from thoth-station/helm-charts master
For dev environment provide a guide/steps and a kustomize to apply to get a dev environment up and running in no time. A dev file for code ready containers maybe?

Describe alternatives you've considered
n/a

Additional context
n/a

Display Software Included in Images

It's valuable to show software included in the image along with packages.

Updates needed to UI Mockup and the changes to be made in the following places to show included software:

  • Admin UI - Software Version also shown in Admin UI under Notebook Image settings along with Packages.
  • Spawner UI - Show Python version under question mark in spawner UI, along with Software included. Show description under Image Name

Originally posted by @oindrillac in #43 (comment)

[8pt] Integrate Thoth adviser in the the user experience of the build issues

Is your feature request related to a problem? Please describe.
As an ODH Admin, I want to check if my repository’s dependencies, security issues, and compatibility are meeting my standards, so I don’t create an insecure image.

Describe the solution you'd like
The bot will run an advise report and comment back important information about the score of the advise report. If there are big problems with the advise run, the bot will hold the build until either a change is made or the user forces the bot to build with a command.

score : The score can be a combination of metrics obtained through the advise report such as: scorecard info, justifications, recommend actions. it could just be a list of justifications
Acceptance Criteria

  • Issue template triggers a bot to run a Thoth Advise on the repository before an image is built
  • If issues or vulnerabilities exist in the Thoth Advise report, then the bot comments a link to further details on the issues
  • If issues or vulnerabilities exist in the Thoth Advise report, users must further allow the bot to make and deploy the image via a command. ex) /approve

Additional context
related: open-services-group/scrum#15

Make pipelines queriable by ODH Dashboard API

Kubernetes supports native filters by labels when listing resources. In order to simplify parsing the relevant imagestreams and pipelineruns in ODH dashboard backend, let's enrich the pipeline resource and generated imagestream with additional label app.kubernetes.io/created-by: byon

Import existing notebook images input into ODH [Admin]

As Operator/Admin,

I have existing images I want to import in ODH. The system must enable users to bring in/import notebook images via the UI (eg. users should not have to edit config files such as YAML files). After import, the images should be available for selection in the UI like out-of-the-box images.

Note: by default, imported images would be available for all cluster users.

Related-To: https://issues.redhat.com/browse/RHODS-2211 req 1

System can check dependencies and avoid dependency issues when customizing notebook or notebook image

As DS/User,

I want to have a system with some capability to check dependencies and verify any dependency issues as they are defining the components in a notebook or a new custom image. [OPTIONAL TOOL]

Notes:

  • User adds a TensorFlow version and needs to identify dependencies (specific packages and versions needed)
  • User adds a TensorFlow version and adds an incompatible version of a dependency (eg. the wrong version of scipy to work with the added TensorFlow version). The user should be able to access a tool in the UI to identify the issue and make corrections.

Change messaging for out of scope validation

Change the message if the first content check fails - If python is not present it is not an error but rather a warning. Skip further validation in such cases, because the image may be R or something else totally valid.

Change the Dashboard frontend/backend to support toggling the visibility on failed images when only the messages with warning severity are present. Disable the visibility toggle if there are error messages.

Add outside collaborators to this repo and project board

This working group extends across multiple teams and we would like to add external collaborators to this repo and project (such as ODH team members). By default this is not possible at the moment, so we propose to :-

  1. Add them as members of the org
  2. Put them on a wg-byon-collaborators team
  3. Add team with write perms to project

Any inputs?

cc: @goern

Customize existing notebook image and save it. [Data Scientist]

As Data Scientist/User,

I must be able to start with an existing base notebook image, make changes by adding/removing/updating components and save the resulting image. The resulting image should be available for selection like other notebook images.

Take actions on added images through URL directly from the UI [Admin]

As Operator/Admin,

I have added images from the URL and I want to take some actions on these images directly from the UI:

  • Ability to rename images (name displayed in “spawner” UI).
  • Ability to delete images
  • Ability to disable/enable images. Disabled images would still be in the list in the admin view, but would not be visible for users in the spawner page. Admins could enable disabled images.

[3pt] have the bot comment location of hosted notebook

Is your feature request related to a problem? Please describe.
As an ODH Admin, I want the closing of my template issue to signify that my notebook image is available on my ODH deployment via the Jupyter Notebook Spawner.

Acceptance Criteria

  • The bot should give updates on the overall status of the build and deployment.
  • The template issue should not close until the image is available in the spawner

Additional context
part of epic: #49

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.