xhplconsole-api

command module
v0.0.0-...-d24d52a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 20, 2020 License: GPL-3.0 Imports: 5 Imported by: 0

README

xhplconsole-api

REST API for xhplconsole DB logging

About

This API is a part of deployxhpl, a CI/CD proof-of-concept for running XHPL on baremetal computes. It logs XHPL test output to a local SQL database (MariaDB) via serialised JSON. See runxhpl for corresponding the API client.

This is very much a work-in-progess. For XHPL tests, automatically modifying or deleting a record is not the best idea (at the institutional level, at least). So currently, this API is a barebones implemenation including GET and POST requests. Time permitting, the whole CRUD (and use cases) will be implemented.

This project is not supported.

Features

  • GET/POST XHPL test runs to SQL DB

Installing

❯ go get github.com/JustAddRobots/xhplconsole-api
❯ cd github.com/JustAddRobots/xhplconsole-api
❯ go build
❯ ./xhplconsole-api

The default endpoint is locahost:3456/v1/machines

This POC has some specific environment requirements:

It requires access to a local DB (schema below). It also uses a local INI config file to resolve the DB password.

MariaDB [xhplconsole]> SHOW COLUMNS FROM xhpltest;
+---------------------------+-------------+------+-----+---------------------+----------------+
| Field                     | Type        | Null | Key | Default             | Extra          |
+---------------------------+-------------+------+-----+---------------------+----------------+
| id                        | int(6)      | NO   | PRI | NULL                | auto_increment |
| uuid                      | char(36)    | YES  |     | NULL                |                |
| serial_num                | varchar(64) | YES  |     | NULL                |                |
| log_id                    | varchar(40) | YES  |     | NULL                |                |
| cpu_vendor                | varchar(32) | YES  |     | NULL                |                |
| cpu_family_model_stepping | text        | YES  |     | NULL                |                |
| cpu_core_count            | int(4)      | YES  |     | NULL                |                |
| cpu_flags                 | text        | YES  |     | NULL                |                |
| lscpu                     | longtext    | YES  |     | NULL                |                |
| cpuinfo                   | longtext    | YES  |     | NULL                |                |
| dmidecode                 | longtext    | YES  |     | NULL                |                |
| meminfo                   | longtext    | YES  |     | NULL                |                |
| test_name                 | varchar(32) | YES  |     | NULL                |                |
| test_cmd                  | text        | YES  |     | NULL                |                |
| time_start                | datetime    | YES  |     | NULL                |                |
| time_end                  | datetime    | YES  |     | NULL                |                |
| test_params               | longtext    | YES  |     | NULL                |                |
| test_metric               | varchar(32) | YES  |     | NULL                |                |
| test_status               | varchar(16) | YES  |     | NULL                |                |
| test_log                  | mediumtext  | YES  |     | NULL                |                |
| log_time                  | timestamp   | NO   |     | current_timestamp() |                |
+---------------------------+-------------+------+-----+---------------------+----------------+

Usage

❯ cd github.com/JustAddRobots/xhplconsole-api
❯ ./xhplconsole-api

Example from Python interpreter, logs generated from runxhpl.

❯ python3
>>> import requests
>>> import json
>>> with open("/tmp/xhpllogs.json", "r") as f:
...     s = f.read()
>>> m = json.loads(s)
>>> r = requests.post("http://hosaka.local:3456/v1/machines", json=m)
>>> r = requests.get("http://hosaka.local:3456/v1/machines/89")
>>> r.status_code
200
>>> m = r.json()
>>> m["test_cmd"]
'mpirun --allow-run-as-root -mca btl_vader_single_copy_mechanism none -np 4 xhpl-x86_64'

Todo

  • Add UPDATE/DELETE and use cases
  • Add collections for DIMMs and CPUs
  • Add collections for arch/CPU/SIMD
  • Add collections for test params

License

Licensed under GNU GPL v3. See LICENSE.md.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL