The Linux Foundation Projects
Skip to main content
Blog | Feilong | Mentorship

Mentorship: Improve Feilong Packaging Progress

By | August 8, 2024August 21st, 2024

Written by Aazam Thakur, Open Mainframe Project 2024 Summer Mentee

Hey folks! I’m delighted to share my progress so far as an Open Mainframe Project mentee. Feilong is a Software Development Kit (SDK) for managing z/VM resources. It provides a set of APIs to operate these resources, including guest, image, network, volume etc. It comes with a python client library, but can be used from other languages. The goal of my project is to improve the feilong packaging process to make deployment easier.

A Bit About Me

Before diving into the intricacies and challenges I’ve faced, here’s a little background about myself. My name is Aazam Thakur, and I’m a senior year engineering student majoring in Artificial Intelligence & Data Science. Participating in LFX has always been one of my goals during my degree.

Getting Started

Working on an incredible project under the guidance of amazing mentors? Who wouldn’t be excited! It’s a prestigious opportunity that I am grateful for. Among the various organizations and projects, Open Mainframe Project and specifically the Feilong project caught my eye. The primary reason was its heavy incorporation of mainframes and various Linux distros, areas of strong interest for me since I frequently tinkered with my Ubuntu distribution. When I got the interview news, I was thrilled. I applied to many organizations each batch, so getting an interview felt like a victory. Receiving the acceptance mail was an even greater joy. I was determined to make the most of this opportunity and began preparing studiously.

Diving into the Project

As I delved deeper into the world of mainframes and VMs, the journey became both challenging and rewarding. I appreciate the time and effort my mentors put into answering my numerous questions. With remote mentorship and three mentors guiding me, I had around-the-clock support whenever I faced a hurdle. This not only helped me immensely but also improved my overall efficiency and flexibility in handling multiple project-related tasks, from documentation changes to testing updated scripts.

The Kickoff

My mentorship began with a high-level overview of the project details and how to tackle them. The crux of our project revolved around testing the updated packages on the z/VM environment on an s390x mainframe for three different Linux distributions (RHEL, SLES, and Ubuntu). We used OBS as the platform for building and distributing the packages.

Initial Hurdles

The first challenge? We hadn’t yet received access to an IBM mainframe. This didn’t deter our progress; I was suggested to work on an L1CC (Linux One Cloud Community) account, which simulates most mainframe behaviors. I started with RHEL as the documentation (which also needed a makeover) used it, despite my proficiency in Ubuntu. Many commands were outdated, so thanks to my mentor Eric, we spent the first week updating and reorganizing them.

OBS and L1CC

Feilong is split into two parts: zthin and zvmsdk. Each needs to be individually built and installed, followed by testing the web server. This process is repeated for each distribution, three times in total. With no mainframe access initially, we used a second L1CC account as our test VM, allowing us to implement changes without risks.

While building zthin/zvmsdk RPMs, I shared them with the second VM instance to test. This back-and-forth process involved obtaining results from testing and trying to automate as much of the installation as possible, keeping user-friendliness in mind.

Using OBS

OBS (Open Build Service) served as a one-stop shop for building and deploying packages for all three distributions. Initially, everything seemed fine until we discovered OBS does not support RHEL 9. Thanks to my mentor Mike Friesenegger, Solution Architect – Alliance and Integrated Systems at SUSE, we overcame this setback by substituting AlmaLinux.

OBS has its own CLI called `osc`, which allows us to locally build packages for different distributions and architectures. Using it enabled faster iterations of locally testing updated scripts and spec files for the distros. As I learned more about RHEL and RPM packaging, transitioning to SLES became easier. Handling logs, firewall, iptables, Apache server, and its mod-wsgi were new and intriguing implementations to learn and apply.

Accessing the z/VM Mainframe

When we finally gained access to a second-level z/VM environment, I was elated. I could now conduct final testing for the distributions. After a long and informative call with my mentors, demoing the do’s and don’ts, I began exploring the environment. It was another rabbit hole with CMS, CP, Tmux, and the jump host. There were new commands to learn, run, and test the packages in the coming weeks.

Wrapping Up

The past few weeks have been grueling, filled with frustrations and obstacles that seemed insurmountable. The daily grind of building, modifying, and testing packages, each with its own nuances, was draining. Yet, there was always a silver lining. Being tenacious by nature allowed me to excel and look forward to the next task.

Within a month, nearly the first half of my summer, I learned how to package for these distros. The satisfaction of having finished with the published packages for RHEL and SLES in OBS, updating their documentation, and building for Ubuntu motivates me to keep going. Absorbing tips and tricks from my industry-veteran mentors has been my favorite part. Without their support, this journey would have been hectic and futile.

Last but not least, I’d like to extend my gratitude to the entire Open Mainframe Project team for making this possible.

Stay tuned

Mentees will be blogging about their experiences. Stay tuned here and the Open Mainframe Project social channels for updates.