Giter Club home page Giter Club logo

curator's People

Contributors

gagansk avatar leihchen avatar matankb avatar shruthi-raghuraman avatar skanthed avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

curator's Issues

Credentials should be defined in a secret and not in a file

Configuring the credentials to the S3 buckets should be secure. Currently you store them in a secrest.yml file.

instead, it would be better to use a secret in the enviornment. The credentials file could use the secrets in it (if configured to do so), or be configured using a secret, and allowing Kubernetes to take care of storing the secrets.

S3 Host hardcoded

Description:

host="kzn-swift.massopen.cloud", is_secure=True, calling_format=boto.s3.connection.OrdinaryCallingFormat())

The host is hardcoded. Users should be prompted to use their own S3 host in the correct format.

Curator communications

Communicate the inspiration, requirements, plan, and onboarding documents related to the Curator with the general public.

DoD:

  • Curator in the Operate First portal.
  • An article on the Red Hat Research website.
  • Common minimum program for the Curator & AIops collaboration.
  • Slide deck for the Curator that can be presented for the potential users.
  • Importance of the Curator project for the Research team. (Research team internal)

┆Issue is synchronized with this Asana task by Unito

Test cases for curator

DoD:

   Functionality - Zipped and Unzipped files
           Scheduled cron job
           S3 connectivity
           Pushing zip files
           Pushing unzip files
           Check pod status 
   Functionality - Postgres database
           Database connectivity
           Scheduled job status
           Pushing files to database
           Displaying proper error message

┆Issue is synchronized with this Asana task by Unito

Daily reports sanity check

Generate 3 daily reports for the Curator development cluster.

DoD:

  • Check for the data in the 3 daily reports.
  • Attach the reports to the issue.
  • If the data in these reports are drastically different without any change in the workload, raise an issue.

┆Issue is synchronized with this Asana task by Unito

Report Structure and Lifecycle

  • Understand the report structure of reports being generated
  • Define metrics that will be displayed
  • Define the lifecycle of reports for a user (For how long will we be storing the information? What are we doing on top of Prometheus?)

RBAC w/ Openshift

As a developer, I want to be able to implement authentication for the 'User' role so that they can each be mapped to their particular resources.

Acceptance Criteria

  • How does RBAC work w/Openshift and how can Curator potentially implement it?
  • Can we integrate Curator UI with Openshift UI?

┆Issue is synchronized with this Asana task by Unito

Modify labels

Few changes need to make before the next release.

  1. Rename the environment variable.
  2. Change a few file names.
  3. Look into alternatives of the docker images that are used.

┆Issue is synchronized with this Asana task by Unito

Prune unused packages

Description

Npm install includes unused/unreferenced packages. Delete npm modules that are no longer used on the React app.

Image Pull Backoff error observed when running frequent unzipped data backup

Description:

When applying cronjob.yaml with a high backup rate (eg every 5 minutes), docker.io/minio/mc failed at the image creation stage: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limits.

Reason:

Docker Hub Rate Limiting: On November 20, 2020, rate limits anonymous and free authenticated use of Docker Hub went into effect. Anonymous and Free Docker Hub users are limited to 100 and 200 container image pull requests per six hours.

Possible Solution:

Avoid redundant image pulling by adding imagePullPolicy: IfNotPresent for all containers.

containers:
  ...
  - name: mc
    image: docker.io/minio/mc
    imagePullPolicy: IfNotPresent
    ...

┆Issue is synchronized with this Asana task by Unito

Mailing Alias

Create a Red Hat mailing alias for the Curator project.

Clean up the console folder

DoD:

  • Get confirmation from the OpenShift console team for our planned development and finalize the branch in the upstream on which we can base our code.
  • Clean the console folder which has the squashed code.

#41

OpenShift console team engagement

DoD:

  • Share the Curator tab plan with the OpenShift console team.
  • Get confirmation for the base branch and release cycle.
  • Fork the repository for contribution to the upstream.

Raw Data Browser

In user interface, there should be a subtab under Curator named "Raw Data Browser". This page will display a simple file browser, where the user can view and download the csv files in the s3 bucket.

┆Issue is synchronized with this Asana task by Unito

Test the project end-to-end

DoD:

  • Test the project end to end and file issues for documentation that isn't clear and bugs you may find.

Dashboard- Minor Changes

UI styling changes to dashboard:

  • Remove search box
  • Remove activeTime on table
  • Rename so no label is in camel case
  • Reorder pages shown after hamburger symbol is clicked
  • Remove Openshift page
  • Add test cases to the dashboard page

Create Wiki documentation

Create wiki pages documenting the project, including:

  • Documentation on the console subdirectory/subtree
  • Documentation on how to build the console image and deploy it to our openshift cluster

┆Issue is synchronized with this Asana task by Unito

Operate First engagement

  • Identify how to provide Operate First community visibility for Curator.
  • Check if Curator can exist in two GitHub organizations (MOC, Operate First) at the same time.
  • Start a Slack channel in the Operate First community for Curator.

User Interface Design

Integration with Openshift

The repository for the main Openshift front-end UI is located at https://github.com/openshift/console. There are two different possible methods to connect Curator with Openshift.

  1. Make the Curator UI a specific page in the Openshift UI.

This method would involve forking the Openshift UI respository and developing the Curator UI on top of the existing codebase. The Openshift UI is built with React, and consists of a wide range of existing pages for administrating and developing with Openshift. We can create a new page (or multiple pages, if necessary), within the existing Openshift UI repository, which would act as the Curator UI. Using this method, users would be able to log in to the same web app they already use for Openshift management and access Curator.

If we chose this method, we would need to ensure that our fork is kept in sync with the upstream Openshift UI repository. Once we have created a working product, we could potentially merge our new code in to upstream repository. Currently, the Curator UI is in a top-level directory in the operate-first/curator repository. If this method is chosen, it would likely need to become a separate repository.

Additionally, there is currently a page in the Openshift UI called "Monitoring", which appears to be accomplishing some of the same goals as Curator. This should be investigated.

  1. Make the Curator UI as a separate web application.

Currently, the limited existing code for the Curator UI is set up as a separate React web application. This method would involve continuing to develop Curator UI as a separate web application, that is not explicitly connected to the main Openshift UI web application. Users would log in to the separate Curator web application with the same credentials that they use for Openshift. If this method is chosen, it would avoid potential complexities involved with integrating the UI into the existing Openshift repository.

User Interface Requirements

This section describes the basic requirements for the Curator user interface.

  • Time Period Selector: An input to select the period of time which the UI will display data for, including both the frequency (day, week, or month; the user can select one or multiple), and the start and end dates.
  • Data displays: The majority of the user interface will consist of tables which display the selected metrics. The metrics are are cpu, memory, and volume data at the cluster, pod, node and namespace level. There are a wide range of different ways to display this data. Some possible designs include:
    • When the user opens Curator and selects a time period and a specific area (either a namespace, node, pod, or cluster), it would display three interactive line charts for the CPU, memory, and volume over time. They could also plot multiple namespaces/nodes/pods/clusters on the same chart, in order to compare them.
    • When the user opens Curator, it would display a table of namespaces (the highest level), with their associated aggregate cpu, memory, and volume usage data for the given time period. The user would be able to click on each namespace to make the table display the nodes in that namespace; they could then click a node to display the pods, and click a pod to display the clusters. In this sample screenshot, the user has clicked on a namespace titled "Example Namespace", a node titled "Example Node', and a pod titled "Example Pod", and is now browsing the clusters in that pod.

image

┆Issue is synchronized with this Asana task by Unito

PRD

Project Requirement Document should be completed.

API Research

Identify the API end-points and the use cases we have to address through API.

DoD:

  • Attach 2-page memo highlighting the what we need from the API.

┆Issue is synchronized with this Asana task by Unito

Generate weekly and monthly reports for namespace/projects

Differentiate the weekly and monthly reports with namespace/project as the variable and generate weekly and monthly reports for individual projects.

DoD:

  • At least one weekly report should be generated for the 'curator-test' project running in the Curator development environment.

┆Issue is synchronized with this Asana task by Unito

Deploy Curator in Zero cluster

DoD:

  • Deploy Curator in Zero cluster of the Operate First environment.
  • At least one weekly, 5 daily reports should be generated for the Zero cluster before their scheduled maintenance on Aug 9th, 2021.
  • Run a custom query for the aggregated infrastructure report which has CPU time for a project/namespace.

┆Issue is synchronized with this Asana task by Unito

Sanity check for reports against the cluster

Compare a daily report against the actual cluster usage.

DoD:

  • Tag the daily report considered for testing and the snapshot of the actual cluster usage.
  • Raise an issue if there is a difference in the data without any change in the workload.

┆Issue is synchronized with this Asana task by Unito

Raw data in S3-bucket

In this bucket, we plan to save unzipped files all the data collected by the koku metrics operator. It will be used as a source bucket for our SQL database server.

Date Changes- Curator Dashboard Page

Description

  • When ui is started make sure the default page is dashboard with appropriate dates is filled in.
  • Identify edge cases with the time constraints.

Date Specification Example

  • Default start/end is within current day
  • Default time (involves 15 mins buffer)

At 12:20 on 03/09/202, Start Date&time 03/09/2021 11:00 AM, End Date&time 03/09/2021 12:00 PM
At 12:10 on 03/09/2021, Start Date&time 03/09/2021 10:00 AM, End Date&time 03/09/2021 11:00 AM

There fore 12:15 PM is considered a cutoff time

Push docker image to Operate-First quay.io

We are using python boto client to connect to OpenStack account for S3 storage.
By default python client doesn't come with boto. So pushing that image to operate-first quay.io

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.