Google Summer of Code 2021

Students Apply Now

 

 For more information about putting together a proposal for a specific project please reach out to the mentor(s) of the project via email.

Using balanced_reads on RGW calls to RADOS

Description

Add a config and the ability to use balanced reads when RGW sends a RADOS op

Libcephfsqlite

Description

A “cephfs” SQLite VFS. The complement of the “ceph” VFS here.

 

Next level AMQP

Description

Adding an AMPQ1.0 bucket notification endpoint support.

A more detailed project description can be read here.

 

going NATS

Description
Adding support for NATS message broker for bucket notifications via Lua scripting (Lua) and some enhancements to the RGW Lua binding will be needed (C++)
A more detailed project description can be read here.

 

 

Automating the Visual Testing of Ceph-Dashboard

Description
Even the most exhaustive end-to-end testing suite can overlook the catastrophic effects of a single typo in a CSS file. This project aims to explore and bring automated visual regression testing and other innovative e2e testing practices to the project (like BDD).

Reporting Ceph issues from the Ceph-Dashboard

Description

When a Ceph user hits an issue, they usually have to gather a lot of info from the
command-line interface and manually open an issue in the Ceph defect tracker.
This projects aims to provide Ceph users with the ability to report issues directly from
the Ceph-Dashboard UI, and attach all the available information to the report.

Steps to evaluate an applicant for the project:
    – Launch a containerized Ceph cluster (e.g.: rhcs-dashboard/ceph-dev)
    – Modify one back-end REST controller (Python) to display an extra piece of information
    – Modify the corresponding front-end component (Angular) accordingly

Ceph Orchestrators Integration tests using Gherkin language

Description

This project will create a test framework that will take care of creating different laboratory environments using VMS. The framework will be able to execute tests written in Gherkin language to create and test the different functionalities of a Ceph cluster. The project aims to provide to the Ceph project a very easy way to create new e2e and integration tests for the orchestrators

RGW: S3 SDK compatability

Description

s3-tests uses a limited subset of Boto to test RGW functionality. Write new tests that attempt to cover all lines of various S3 SDKs to test SDK compatibility issues. This will cover as many SDKs that implement S3 as possible, starting with Boto, Boto3, and transitioning to Go. Explicitly would be measuring test cases code coverage of the SDKs and correct responses (AWS S3 vs. RGW).

Optimizing Ceph Testing

Ceph is a large scale distributed system, which requries extensive testing. Thousands of test jobs run on hundreds of nodes every day in the sepia lab.

A huge amount of machine time is used to validate changes before they are merged to Ceph. These test suites can take hours once they start, and due to demand may be queued for days before beginning to run.

The goal of this project is to optimize the test suites and how they are run to improve development velocity.

There are a couple ways to do this:

 

1. Optimize how tests are run by identifying long running tests and examining timing across historical test runs and optimize common areas (see timing.yaml for past runs)

2. Analyze and optimize the suites to ensure the test coverage is meaningful. This could be done by exploring correlations between different tests and historical pass/fail. Considering ways to maintain the same coverage using less total machine time by changing suite structure.Suites are described here: https://github.com/ceph/ceph/blob/master/qa/README. The rados suite is a useful place to start, having the largest combination of configurations

Replace cephadm's SSH python libarary

Cephadm uses https://pypi.org/project/execnet/ to connect to remote hosts. Unfortunately execnet is no longer in active development. cephadm needs to connect to 1000s of hosts per SSH. The idea is to replace execnet with a different python libary that provides better scalability and better user experience.