Hamsta currently lacks a standardized network interface that would allow other systems accessing its capabilities. There is a custom network interface with text-parsing based protocol that is poorly documented and needs to be implemented on the client side to be usable. This interface does not use any standardized way of communication or library.
This project suggests to add a standardized web service interface (let us call it API) to Hamsta. Expected attributes are following.
- Standardized interface (i.e. described and known outside of our department).
- Uses tested library.
- Usable by any type of frontend (web, command line, desktop or smartphone application, ...).
- Usable by any type of interfacing system.
The project is divided into several steps.
- Select interface protocol.
- Select (backend) implementation library.
- Define available interface functions.
- Add library integration.
- Implement interface functions and do testing.
- Document the interface.
Ideas for the interface protocol are following.
- XML-RPC
- JSON-RPC
- SOAP
The idea of adding the interface is old. Part of this project idea comes from FATE #315109. But generally this project is to support needed architectural changes in Hamsta.
Pavel Kacer (pkacer@suse.com) is responsible for this project. The stakeholders are QA Automation team members and project manager.
There is no code. All decisions and implementation have to be made, yet.
This project is part of:
Hack Week 10
Activity
Comments
Similar Projects
Create object oriented API for perl's YAML::XS module, with YAML 1.2 Support by tinita
Description
YAML::XS is a binding to libyaml and already quite old, but the most popular YAML module for perl. There are two main issues:
- It uses global package variables to influence behaviour.
- It didn't implement the loading of types like numbers and booleans according to the YAML spec (neither 1.1 nor 1.2).
Goals
Create a new interface which works object oriented. Currently YAML::XS exports a list of functions.
- The new API will allow to create a YAML::XS object containing configuration influencing the behaviour of loading and dumping.
- It keeps the libyaml parser and emitter structs in memory, so repeated calls can save the creation of those structs
- It will by default implement the YAML 1.2 Core Schema, so it is compatible to other YAML processors in perl and in other languages
- If I have time, I would like to add the merge
<<
key feature as an option. We could then use it in openQA as a replacement for YAML::PP to be faster.
I already created a proof of concept with a minimal functionality some weeks before this HackWeek.
Resources
- Work is currently happening on the oop branch
- Experimental release waiting for user feedback: https://github.com/perlpunk/yaml-libyaml-pm/releases
- Diff