Skip to main content

Sardou TOSCA Library

Project description

TOSCA in Swarmchestrate

This repository is home to TOSCA in the Swarmchestrate project, which will use TOSCA v2.0 to describe applications and capacities managed in a Swarmchestrate Universe.

Sardou TOSCA Library

Sardou validates and extracts info from a Swarmchestrate TOSCA template.

Prerequisites

  • Python 3.10+
  • Puccini: The current stable version can be found here Go-Puccini 0.22.x
    • Minimum GLIBC 2.34 (Ubuntu 22.04 or higher)

Install Puccini on Linux by:

wget https://github.com/tliron/go-puccini/releases/download/v0.22.7/puccini_0.22.7_linux_amd64.deb && \
sudo dpkg -i puccini_0.22.7_linux_amd64.deb || sudo apt --fix-broken install -y && \
rm -f puccini_0.22.7_linux_amd64.deb

Installation

Install using pip pointed at this GitHub repo. PyPI package coming soon.

pip install git+https://github.com/Swarmchestrate/tosca.git

Usage

Import the Sardou TOSCA Library

from sardou import Sardou # note the uppercase F

Create a new Sardou object, passing it the path to your Swarmchestrate TOSCA template. This will validate the template. If there are errors or warnings, they will be presented here.

>>> tosca = Sardou("my_app.yaml")
Processed successfully: my_app.yaml 

Grab the QoS requirements as a Python object. You could wrap this as a dictionary and dump to JSON or YAML.

>>> tosca.get_qos()
[{'energy': {'type': 'swch:QoS.Energy.Budget', 'properties': {'priority': 0.3, 'target': 10}}}...

Grab the Resource requirements as a Python object. You could dump this to JSON or YAML.

>>> tosca.get_requirements()
{'worker-node': {'metadata': {'created_by': 'floria-tosca-lib', 'created_at': '2025-09-16T14:51:24Z', 'description': 'Generated from node worker-node', 'version': '1.0'}, 'capabilities': {'host': {'properties': {'num-cpus': {'$greater_than': 4}, 'mem-size': {'$greater_than': '8 GB'}}}, ...

You can traverse YAML maps using dot notation if needed.

>>> tosca.service_template.node_templates
{'swarm': {'type': 'swch:Swarm', 'directives': ['substitute']}, ...

Devs

It is recommended that developers open a GitHub Codespace on this repository, which includes dependencies and a Makefile for running Puccini manually.

TOSCA Template Validation with Puccini

This is an added feature that provides a Python validation library and script to check whether TOSCA service templates are valid using the Go-Puccini parser.

Validation Library (lib/validation.py )
  • A library that defines the validate_template() function to validate a single TOSCA YAML file.
  • Returns True if the template is valid, False if not.
Validation Script (run_validation.py)
  • A script that searches the templates/ folder and validates all .yaml files in one run.
  • Prints total successes/failures and exits with code 1 if any file fails.

Run:

  • python3 run_validation.py

Contact

Contact Jay at Westminster for support with TOSCA and/or this repository.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sardou-0.2.3.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sardou-0.2.3-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file sardou-0.2.3.tar.gz.

File metadata

  • Download URL: sardou-0.2.3.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for sardou-0.2.3.tar.gz
Algorithm Hash digest
SHA256 91f20a12964f14a63282eccd8b9755e515e8d0f774ffa5f15b2e789abac11afe
MD5 6aa4ea9ec834130b558f24a1dbffe192
BLAKE2b-256 0c4d9f4bee40b4f878c7c215edc88c7cd48a5c985274d77943f6564a5ac8d1fd

See more details on using hashes here.

File details

Details for the file sardou-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: sardou-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 5.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for sardou-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7fbf9c728dffceeb8547ff377762164192604d5896c2939739798bd475e5484d
MD5 917d0c5ad402410f761e86172494f44b
BLAKE2b-256 85844f583e7b38d9ca576422817ca29683755739bad9c8213b0ed2a83a6292f5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page