The Linux Foundation Projects
Skip to main content
Blog | Feilong | Open Mainframe Summit

Feilong: The Open Source API for z/VM Automation (Video)

By | July 6, 2022

In his Open Mainframe Summit 2021 session, Mike Friesenegger, Solutions Architect at SUSE, presented Feilong, what it is  the mission of the project, the community benefits, and the overall architecture of the tool. If you missed it, watch the video or read the recap below:

What Is Feilong?

In Mandarin, “feilong” translates to “flying dragon.” This “flying dragon” is the icon for an open source project that consists of APIs for automating the provisioning of clouds on the IBM Z systems.  Feilong also lives in the clouds, since it provides infrastructure as service automation.

 

The Mission of the Project

Feilong’s mission is to develop the REST API to simplify the interaction with the IBM z/VM hypervisor. Why is this necessary? Generally speaking, z/VM can be a really tough environment to wrap your head around. Inexperienced developers and professionals will make mistakes, so it’s handy to have a tool that can automate and simplify much of that work. 

Community Benefits

Feilong has a strong codebase to use, contribute, and develop, due to IBM’s contribution to the project. The RESTful API makes using z/VM particularly useful for developers without knowledge of z/VM, which can be quite a complex scenario. 

All of this can be put together to enable self-serving automation of VMs, networking, and storage. 

Overall Architecture

The overall architecture of Feilong can be divided into three main components or layers: 

  • The REST API layer
  • The transition layer
  • The zHCP layer

Let’s now cover each layer in turn. 

The REST API Layer

The REST API layer, as the name suggests, consists of an API that follows the REST architectural pattern. The language of this API is Python, and OpenStack consumes it, as you’ll soon see. 

The Transition Layer

The next layer is the transition layer. As with the previous layer, it’s based on the Python language. The transition layer accepts requests from the REST API layer and handles the logical processing. 

In other words, this layer decides what needs to be done: what image needs to be used, what v-switch connection needs to be created, what z/VM host needs to be communicated with in order to create the virtual machines, and so on. 

Once the transition layer finishes, it makes a call to the next layer in the list: the smcli layer. 

The smcli (zHCP) Layer

The zHCP layer accepts the request from the transition layer. This is the only layer that is in C, and it uses a C-based wrapper of SMAPI. It handles requests such as: 

  • timeouts
  • async id
  • any errors in SMAPI

Summary

Feilong, as a tool, operates at the infrastructure level. It’s quite technical, and because of these two factors, it’s highly unlikely that the end user will have access to it. 

However, they can use the interface provided by OpenStack to crate and provision their virtual machines. Then, OpenStack can issue the commands to the REST API layer, which kicks everything in motion. 

The VM is then deployed, setting in motion several actions: 

  • It creates an image.
  • It creates a disk.
  • The disk is brought online.
  • It formats the disk.
  • The image is installed on the disk.
  • And so on

What’s Next for the Project?

  • Graduate from incubation to active status. The project has the potential to grow.
  • Project contributions. It needs contributions from third-party contributors.
  • Update documentation. The documentation is good, but it needs updates.
  • Sponsor an OMP summer mentorship project related to Feilong.
  • Increase the Feilong membership and regularly schedule project meeting attendance.

This has been recap of a session from Open Mainframe Summit 2021. If you’d like to learn more about Open Mainframe Summit 2022, hosted in Philadelphia, PA on September 21-22, please click here: https://events.linuxfoundation.org/open-mainframe-summit/ .

This post was written by Carlos Schults. Carlos is a consultant and software engineer with experience in desktop, web, and mobile development. Though his primary language is C#, he has experience with a number of languages and platforms. His main interests include automated testing, version control, and code quality.