Skip to content

Seconlay - /səˈkɒnleɪ/

What: Build a GUI for Seconlay Organizer: Leander Kohler, Luke Weston, Georg Murzik

  • Dedicated Repository: https://gitlab.com/alasca.cloud/scl/hackathon-2026
  • Teams:
    • Cyberus: SCL API using svelte
    • Pacifico: Compute API using raclette
  • Temporary SCL API endpoint that we can use: https://export-modified-shore-kong.trycloudflare.com
    • eg: https://export-modified-shore-kong.trycloudflare.com/api/v1/scs
  • Temporary Compute API endpoint: that we can use: https://fires-mainly-luis-shopzilla.trycloudflare.com
    • eg: curl https://fires-mainly-luis-shopzilla.trycloudflare.com/compute/v1/vms
    • see https://gitlab.com/alasca.cloud/scl/scl-management/-/blob/main/nix/integration-test/compute-api.nix?ref_type=heads#L58 for our intgration test examples (e.g. images that workl)

Compute API

General

  • High level description: https://scl-management-a78dba.gitlab.io/architecture/node_api/#compute-api
  • OpenAPI spec: https://scl-management-a78dba.gitlab.io/references/compute-openapi/redoc-3b24fa6c.html#tag/VM-Management/paths/1compute1v1~1vms/get
  • Code path:
    • https://gitlab.com/alasca.cloud/scl/scl-management/-/tree/main/compute_api
    • cargo run --bin compute-api

Demo Volume

Boot Volume

"remote_image": {
  "size_mib": 4096,
  "url": "http://sclApiNode:9999/ubuntu-22.04-server-cloudimg-amd64.raw",
  "image_type": "raw"
}

Cloud Init Volume

{
    "user-data": {
        "system_info": {
            "default_user": {
                "name": "seven"
            }
        },
        "password": "seven",
        "chpasswd": {
            "expire": false
        },
        "ssh_pwauth": true
    },
    "network": {
        "version": 2,
        "ethernets": {
            "id0": {
                "match": {
                    "name": "enp*"
                },
                "addresses": ["192.168.10.42/24"],
                "gateway4": "192.168.10.1"
            }
        }
    }
}

Takeaways

  • Seconlay can't be used on Apple HW :(
  • SCL API
    • ResourceVersion is singed i64
  • Compute API
    • Harmonized PUT and POST endpoints (very annoying)
    • More detailed OpenAPI
      • e.g. alias: key not defined or non-empty string ->
      • indicate that at least 1 boot_volume is required (e.g. better -> LLM)
      • Update endpoint docs to indicate "Create or Update X" instead of just "Create X"