{"id":15050020,"url":"https://github.com/xlab-si/xopera-opera","last_synced_at":"2025-04-10T02:13:16.019Z","repository":{"id":37401137,"uuid":"170151522","full_name":"xlab-si/xopera-opera","owner":"xlab-si","description":"xOpera orchestrator compliant with TOSCA YAML v1.3 in the making","archived":false,"fork":false,"pushed_at":"2022-12-27T10:45:23.000Z","size":1977,"stargazers_count":35,"open_issues_count":29,"forks_count":14,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-03-24T03:43:57.889Z","etag":null,"topics":["ansible","orchestration","python","tosca"],"latest_commit_sha":null,"homepage":"https://xlab-si.github.io/xopera-docs/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xlab-si.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-02-11T15:22:43.000Z","updated_at":"2024-07-03T16:07:36.000Z","dependencies_parsed_at":"2023-01-31T03:16:02.902Z","dependency_job_id":null,"html_url":"https://github.com/xlab-si/xopera-opera","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlab-si%2Fxopera-opera","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlab-si%2Fxopera-opera/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlab-si%2Fxopera-opera/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlab-si%2Fxopera-opera/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xlab-si","download_url":"https://codeload.github.com/xlab-si/xopera-opera/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247694878,"owners_count":20980733,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","orchestration","python","tosca"],"created_at":"2024-09-24T21:24:18.450Z","updated_at":"2025-04-10T02:13:15.997Z","avatar_url":"https://github.com/xlab-si.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xOpera TOSCA orchestrator\nxOpera orchestration tool compliant with TOSCA YAML v1.3 in the making.\n\n[![PyPI](https://img.shields.io/pypi/v/opera)](https://pypi.org/project/opera/)\n[![Test PyPI](https://img.shields.io/badge/test%20pypi-dev%20version-blueviolet)](https://test.pypi.org/project/opera/)\n[![cicd](https://github.com/xlab-si/xopera-opera/actions/workflows/ci_cd.yaml/badge.svg)](https://github.com/xlab-si/xopera-opera/actions/workflows/ci_cd.yaml)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/4e287640ae2ea2b04163/test_coverage)](https://codeclimate.com/github/xlab-si/xopera-opera/test_coverage)\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/opera)](https://pypi.org/project/opera/)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/xlab-si/xopera-docs/158ae10a3178e689a55ff2f993cf2d90c935c530/docs/images/xopera-black-text-side-mid.svg\" width=\"60%\" height=\"60%\" title=\"xOpera logo\"\u003e\n\u003c/p\u003e\n\n| Aspect                         | Information                               |\n| ------------------------------ |:-----------------------------------------:|\n| Tool name                      | [opera]                                   |\n| Documentation                  | [xOpera documentation]                    |\n| Orchestration standard         | [OASIS TOSCA]                             |\n| Implementation tools           | [Ansible]                                 |\n| Contact us                     | [xopera@xlab.si]                          |\n\n## Table of Contents\n  - [Introduction](#introduction)\n  - [Prerequisites](#prerequisites)\n  - [Installation and Quickstart](#installation-and-quickstart)\n  - [License](#license)\n  - [Contact](#contact)\n  - [Acknowledgement](#acknowledgement)\n\n## Introduction\n`opera` aims to be a lightweight orchestrator compliant with [OASIS TOSCA]. \nThe current compliance is with the [OASIS TOSCA Simple Profile in YAML Version 1.3]. \n`opera` implements the TOSCA standard with [Ansible] automation tool where Ansible playbooks can be used as \norchestration actuators within the TOSCA interface operations.\n\n*We are currently testing experimental support for [TOSCA Version 2.0], which will become the main version after \nTOSCA 2.0 is released.*\n\n## Prerequisites\n`opera` requires Python 3 and a virtual environment. \nIn a typical modern Linux environment, we should already be set. \nIn Ubuntu, however, we might need to run the following commands:\n\n```console\n$ sudo apt update\n$ sudo apt install -y python3-venv python3-wheel python-wheel-common\n```\n\n## Installation and Quickstart\nThe orchestration tool is available on PyPI as a package named [opera]. \nApart from the latest [PyPI production] version, you can also find the latest opera [PyPI development] version, which \nincludes pre-releases so that you will be able to test the latest features before they are officially released.\n\nThe simplest way to test `opera` is to install it into Python virtual environment:\n\n```console\n$ mkdir ~/opera \u0026\u0026 cd ~/opera\n$ python3 -m venv .venv \u0026\u0026 . .venv/bin/activate\n(.venv) $ pip install opera\n```\n\nTo test if everything is working as expected, we can now clone xOpera's\nGitHub repository and try to deploy a hello-world service:\n\n```console\n(.venv) $ git clone git@github.com:xlab-si/xopera-opera.git\n(.venv) $ cd xopera-opera/examples/hello\n(.venv) $ opera deploy service.yaml\n[Worker_0]   Deploying my-workstation_0\n[Worker_0]   Deployment of my-workstation_0 complete\n[Worker_0]   Deploying hello_0\n[Worker_0]     Executing create on hello_0\n[Worker_0]   Deployment of hello_0 complete\n```\n\nIf nothing went wrong, new empty file has been created at `/tmp/playing-opera/hello/hello.txt`.\n\nTo delete the created directory, we can undeploy our stuff by running:\n\n```console\n(.venv) $ opera undeploy\n[Worker_0]   Undeploying hello_0\n[Worker_0]     Executing delete on hello_0\n[Worker_0]   Undeployment of hello_0 complete\n[Worker_0]   Undeploying my-workstation_0\n[Worker_0]   Undeployment of my-workstation_0 complete\n```\n\nAnd that is it. \nFor more startup examples please visit [examples folder], or go to [xopera-examples] repository if you wish to explore \ndeeper with more complex xOpera examples. \nIf you want to use just xOpera TOSCA parser go to [xopera-tosca-parser] repository. \nIf you want to use opera commands from an API take a look at [xopera-api] repository. \nYou can also take a look at the [xOpera SaaS] component, which is designed for business partners and enterprise users.\nTo find more about xOpera project visit our [xOpera documentation].\n\n## License\nThis work is licensed under the [Apache License 2.0].\n\n## Contact\nYou can contact the xOpera team by sending an email to [xopera@xlab.si].\n\n## Acknowledgement\nThis project has received funding from the European Union’s Horizon 2020 research and innovation programme under Grant \nAgreements No. 825040 ([RADON]), No. 825480 ([SODALITE]) and No. 101000162 ([PIACERE]).\n\n[opera]: https://pypi.org/project/opera/\n[OASIS TOSCA]: https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=tosca\n[xOpera documentation]: https://xlab-si.github.io/xopera-docs/\n[Ansible]: https://www.ansible.com/\n[xopera@xlab.si]: mailto:xopera@xlab.si\n[OASIS TOSCA Simple Profile in YAML Version 1.3]: https://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.3/TOSCA-Simple-Profile-YAML-v1.3.html\n[TOSCA Version 2.0]: https://docs.oasis-open.org/tosca/TOSCA/v2.0/TOSCA-v2.0.html\n[PyPI production]: https://pypi.org/project/opera/#history\n[PyPI development]: https://test.pypi.org/project/opera/#history\n[examples folder]: examples\n[xopera-examples]: https://github.com/xlab-si/xopera-examples\n[xopera-tosca-parser]: https://github.com/xlab-si/xopera-tosca-parser\n[xopera-api]: https://github.com/xlab-si/xopera-api\n[xOpera SaaS]: https://xlab-si.github.io/xopera-docs/saas.html\n[Apache License 2.0]: https://www.apache.org/licenses/LICENSE-2.0\n[RADON]: http://radon-h2020.eu\n[SODALITE]: http://www.sodalite.eu/\n[PIACERE]: https://www.piacere-project.eu/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxlab-si%2Fxopera-opera","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxlab-si%2Fxopera-opera","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxlab-si%2Fxopera-opera/lists"}