Skip to content

Instantly share code, notes, and snippets.

Last active November 24, 2022 10:15
Show Gist options
  • Save meet59patel/7da2568cddb6b918e251350728ea7e53 to your computer and use it in GitHub Desktop.
Save meet59patel/7da2568cddb6b918e251350728ea7e53 to your computer and use it in GitHub Desktop.
GSoC-2020 with Percona - Documented

Google Summer of Code 2020 @Percona

Refactor PMM-Framework

About the Project

PMM (Percona Monitoring and Management) is an open-source platform for managing and monitoring MySQL, Percona Server, PostgreSQL, MongoDB, and Percona XtraDB Cluster performance. PMM integrates open source tools like Prometheus, Grafana, Clickhouse, etc. to facilitate different features. PMM-framework is the internal automated testing framework, used to set up PMM with various databases and their multiple instances, perform load tests, and wipe everything after tests are done. PMM-Framework also incorporates multiple other scripts and tools for further extended functionalities.
The core objectives of this project are to refactor PMM-framework and introduce new features, fix bugs, make it user friendly and so forth.

In the earlier phase of the project, I introduced major refactor and made the PMM-framework more robust and useful, providing all the necessary fixes and improving code readability. Provided multiple methods to install and setup PMM-server and PMM-client.
In the latter phase, I prepared a user friendly CLI based tool to use pmm-framework, namely PMM-Framework-cli. Node Package of the same is published to NPM : PMM-Framework-CLI

Read more about the project at Percona Community Blog



My work on PMM-Framework can be found at GSoC Project Branch on pmm-qa and work on PMM-Framework-CLI can be found here.

  1. 7693d36 - Default Docker tag:dev-latest; parameterise Percona/Perconalab Dockerhub org

  2. b359906 - Added PMM2-client installation using yum/apt

    • Pull Request #310
    • installs latest public release of pmm2-client using percona-release repository by default
  3. 4998f71 - Change CLI options passing configuration, refactored DB configuration to functions

    • Improve options passing functionality in script using getopt
    • Refactor mysql/mongodb/postgresql configuration into separate functions
  4. 73981d7 - Added --dev repo installation support for PMM-Client, fix indentations

  5. Pull Request #326 - pmm-framework major refactor

    • 90659c2 - Refactor pmm-server-docker setup
    • 3e79c93 - remove OVA/AMI server cleanup
    • c8c7751 - Fix install_client() - Tarball installation
    • 78f73fa - Add filecheck for & download if needed
    • 65cfa89 - Update flag descriptions, fix indentations
    • 1753e14 - Remove all OVA/AMI/AWS configurations & flags, fix indentations
    • d6c83ea - Removed unused flag: --is-bats-run
    • 24f6e2d - Remove unused vars: SUSER, SPASS
  6. Pull Request #334 - Update with master, installation refactor, ssl flag fix

    • c13dc2b - Add independent setup_server() function to setup only PMM-Server
    • 8550e66 - Refactor pmm installation, --setup-server and --setup-client options added
    • 8db441f - Update branch GSOC-2020 with master branch, Fix merge conflicts
    • 87128f2 - Add --ssl flag (to enable SSL on pmm-server)
  7. Pull Request #335

    • e968e1d - Fixed permissions, remove unnecessary sanity check, AddClient error hotfix
  8. Pull Request #341 - Pulled new changes from percona/pmm-qa/master branch to GSOC-2020 branch

  9. Pull Request #343 - PMM-Framework Documentation

  10. Pull Request #345 - Create : ms,ps,md,modb,pgsql,pxc

  11. Contributions on pmm-framework-cli : Commits · Percona-Lab/pmm-framework-cli
  12. Miscellaneous contributions: GitHub Gist
  13. Fetch DockerHub tags - shell script


It has been a fantastic experience working under Percona for the Google Summer of Code. Mentors have been very appreciating, friendly, very responsive, and supportive throughout the program. During the project, I learned and experimented with so many tools and technologies and experienced crucial decision-making and time management. Bash Scripting, Docker, NodeJS, Linux, Networking, Databases, Ansible, SSH, Jenkins Pipelines are among the technologies I learned and experimented with. Having great support from the mentors' side, I could implement all the targets with utmost momentum and incorporate more things into the project's scope. Of course, there have been many technical hurdles as well, coming up with the solutions for the same has taught me a lot. I'm grateful for having a chance to make a real impact in the open-source community of Percona.

Overall, it has been an absolutely amazing experience working with Percona and a special thanks to the mentors Puneet Kala, Nailya Kutlubaeva, Vasyl Yurkovych of Percona for guiding me throughout. I will continue to be the part of open-source community of Percona post GSoC.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment