{"id":38660912,"url":"https://github.com/sonata-nfv/tng-sdk-project","last_synced_at":"2026-01-17T09:38:35.595Z","repository":{"id":57476003,"uuid":"118467113","full_name":"sonata-nfv/tng-sdk-project","owner":"sonata-nfv","description":"The 5GTANGO SDK tool to manage network service projects.","archived":false,"fork":false,"pushed_at":"2023-10-25T19:18:52.000Z","size":288,"stargazers_count":5,"open_issues_count":1,"forks_count":4,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-10-28T16:32:03.087Z","etag":null,"topics":["5g","5gtango","nfv","sdk","sdn","sonata"],"latest_commit_sha":null,"homepage":"http://www.5gtango.eu","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/sonata-nfv.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":"2018-01-22T14:20:31.000Z","updated_at":"2023-02-16T07:33:48.000Z","dependencies_parsed_at":"2022-09-07T17:33:23.328Z","dependency_job_id":null,"html_url":"https://github.com/sonata-nfv/tng-sdk-project","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/sonata-nfv/tng-sdk-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonata-nfv%2Ftng-sdk-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonata-nfv%2Ftng-sdk-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonata-nfv%2Ftng-sdk-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonata-nfv%2Ftng-sdk-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sonata-nfv","download_url":"https://codeload.github.com/sonata-nfv/tng-sdk-project/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sonata-nfv%2Ftng-sdk-project/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28505565,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["5g","5gtango","nfv","sdk","sdn","sonata"],"created_at":"2026-01-17T09:38:31.661Z","updated_at":"2026-01-17T09:38:35.578Z","avatar_url":"https://github.com/sonata-nfv.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Join the chat at https://gitter.im/sonata-nfv/Lobby](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/sonata-nfv/Lobby)\n[![Build Status](https://jenkins.sonata-nfv.eu/buildStatus/icon?job=tng-sdk-project-pipeline/master)](https://jenkins.sonata-nfv.eu/job/tng-sdk-project-pipeline/job/master/)\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"https://github.com/sonata-nfv/tng-api-gtw/wiki/images/sonata-5gtango-logo-500px.png\" /\u003e\u003c/p\u003e\n\n# tng-sdk-project\n\nThis repository contains the `tng-sdk-project` component that is part of the European H2020 project [5GTANGO](http://www.5gtango.eu) NFV SDK. This component is responsible for managing network service workspaces and projects on the developer's machine. It allows preparing structured 5GTANGO projects containing service descriptions, which can then be validated, packaged, and processed by other 5GTANGO SDK tools.\n\nThe seed code of this component is based on the `son-cli` toolbox that was developed as part of the European H2020 project [SONATA](http://sonata-nfv.eu).\n\n## Installation\n\nRequires Python 3.5+ and `setuptools`.\n\nFor simple, automatic installation and usage:\n\n```bash\n# latest release from PyPi\n$ pip install tngsdk.project\n```\n\n```bash\n# latest version from GitHub master\n$ pip install git+https://github.com/sonata-nfv/tng-sdk-project.git\n```\n\nAlternatively, for obtaining the source code, installation, and development:\n\n```bash\n$ git clone https://github.com/sonata-nfv/tng-sdk-project.git\n$ cd tng-sdk-project\n$ sudo python3 setup.py install\n```\n\nIt is a good practice to first create a new virtual environment in which all 5GTANGO SDK tools can be installed. You can do this as follows:\n\n```sh\n# get the path to your Python3 installation\nwhich python3\n\n# create a new virtualenv\nvirtualenv -p \u003cpath/to/python3\u003e venv\n\n# activate the virtualenv\nsource venv/bin/activate\n```\n\nSometimes you might have to upgrade the version of your installed `pip` packages if they are outdated. This can be done with:\n\n```bash\npip install \u003cpackage-name\u003e --upgrade\n```\n\n## Usage\n\n### CLI\n#### Workspace\nTo start working, you need a workspace that holds your configuration files. The default location is `~/.tng-workspace/`, but it may be at any location and there can also be multiple workspaces.\n\n```bash\n$ tng-workspace       # initializes a new workspace at the default location\n$ tng-workspace --workspace path/to/workspace     # inits a workspace at a custom location\n```\n\n#### Project managament\nOnce you have a workspace, you can create projects with the `tng-project` command.\nYou can also add or remove files from the project (wildcards allowed) or check the project status.\n\n```bash\n$ tng-project -p path/to/project                # creates a new project at the specified path\n$ tng-project -p path/to/project --add file1    # adds file1 to the project.yml\n$ tng-project -p path/to/project --add file1 --type text/plain  # adds file1 with explicit MIME type\n$ tng-project -p path/to/project --remove file1 # removes file1 from the project.yml\n$ tng-project -p path/to/project --status       # shows project overview/status\n```\n\nThe `--workspace` option allows to specify a workspace at a custom location. Otherwise, the workspace at the default location is used.\nFor both `tng-workspace` and `tng-project` the option `--debug` makes the output more verbose.\n\nSince the structure of projects and descriptors changed from SONATA (v3.1) to 5GTANGO (v5.0), `tng-project` also provides a command to automatically translate old to new projects.\nFor more information see the [corresponding wiki page](https://github.com/sonata-nfv/tng-sdk-project/wiki/Translating-SONATA-SDK-projects-to-5GTAGNO-SDK-projects).\n\n```bash\n$ tng-project -p path/to/old-project --translate   # translates the project to the new structure\n```\n\n#### Descriptor generation (CLI)\nThis tool also includes a CLI for descriptor generation. \nIts functionality is mostly consistent with the [GUI version](https://github.com/sonata-nfv/tng-sdk-descriptorgen) but might be preferred by advanced users.\n\nThe descriptor generator is integrated in the project management tool \nsuch that additional arguments are passed to the descriptor generator\nand are used to generate suitable descriptors in a new project:\n\n```bash\n$ tng-project -p path/to/project --author abc --vnfs 2 \\  \n  --image_names img1 img2 --image_types docker docker     # creates a new project with descriptors for 2 VNFs with the specified author and images\n```\n\nThe descriptorgen CLI can also be used separately as follows:\n\n```bash\n$ tng-descriptorgen --author author.name --vnfs 3   # generate NSD and VNFDs for service with 3 VNFs\n$ tng-descriptorgen --author author.name --vnfs 2 \\\n  --image_names img1 img2 --image_types docker docker  # generate descriptors for 2 VNFs with specific images\n$ tng-descriptorgen --tango -o tango-project        # generate only 5GTANGO descriptors in a folder \"tango-project\"\n$ tng-descriptorgen --osm -o osm-project            # generate only OSM descriptors in a folder \"osm-project\"\n```\n\nFor more information, use `tng-descriptorgen -h`.\n\n### Service mode with REST API\n\nIn addition to the CLI, the `tng-sdk-project` tool can also be started in \"service mode\" and be used via its REST API. This enables simple integration with other tools or frontend services.\n\n#### Run on bare metal\n\n```bash\n# terminal 1\n$ tng-project -s    # starts the tool in service mode (running forever)\n```\n\nThis will start the tool in service mode running in the terminal forever until stopped with Ctrl+C.\n\n\n#### Run in Docker container\n\n##### Locally-build images\n\nThe simplest option is using Docker Compose. \n\n```bash\ndocker-compose up\n```\n\nAlternatively, you can also build and run the Docker container manually.\nThe commands here don't attach to the volume, i.e., projects are not stored persistently and lost after restart.\n\n```bash\npipeline/build/build.sh\ndocker run --rm -d -p 5098:5098 --name tng-sdk-project registry.sonata-nfv.eu:5000/tng-sdk-project\n```\n\n##### Image from DockerHub\n\nThe Docker image is also available on [DockerHub](https://hub.docker.com/r/sonatanfv/tng-sdk-project):\n\n```bash\ndocker pull sonatanfv/tng-sdk-project:dev\ndocker run --rm -d -p 5098:5098 --name tng-sdk-project sonatanfv/tng-sdk-project:dev\n```\n\nThis will run the tool in service mode in a detached Docker container, i.e., in the background (check with `docker ps`).\nSee the [wiki page on Docker deployment](https://github.com/sonata-nfv/tng-sdk-project/wiki/docker-deployment) for additional details.\n\n#### Calling the REST API\n\nYou can find the **Swagger API specification [here](https://sonata-nfv.github.io/tng-doc/?urls.primaryName=5GTANGO%20SDK%20Project%20API%20v1)**. Additionally, see the examples below.\n\nShowing, adding, deleting projects:\n```bash\n# terminal 2\n$ curl -X POST localhost:5098/api/v1/projects            # create a new project\n$ curl -X GET localhost:5098/api/v1/projects             # show all projects\n$ curl -X POST localhost:5098/api/v1/projects \\\n-d author=alice -d vendor=eu.tango -d vnfs=3             # new project with custom-generated descriptors\n$ curl -X POST localhost:5098/api/v1/projects \\\n-d vnfs=2 -d image_names=\"img1 img2\"                     # you can specify image names/types as white space-separated list in quotation marks (\"\", not ''!) \n$ curl -X GET localhost:5098/api/v1/projects/{uuid}      # show details of the specified project\n$ curl -X DELETE localhost:5098/api/v1/projects/{uuid}   # delete the specified project\n```\n\nShowing, adding, deleting project files:\n```bash\n# terminal 2\n$ curl -X GET localhost:5098/api/v1/projects/{uuid}/files   # show files of the specified project\n$ curl -X POST localhost:5098/api/v1/projects/{uuid}/files \\\n    -H \"Content-Type: multipart/form-data\" \\\n    -F file=\"@requirements.txt\"                             # add new file to the project\n$ curl -X POST localhost:5098/api/v1/projects/{uuid}/files \\\n    -H \"Content-Type: multipart/form-data\" \\\n    -F file=\"@LICENSE\" -F file_type=\"text/plain\"            # add new file with specific MIME type\n$ curl -X DELETE localhost:5098/api/v1/projects/{uuid}/files \\\n    -d filename=\"requirements.txt\"                          # remove the specified file\n$ curl -X GET localhost:5098/api/v1/projects/{uuid}/{file_name} # show content of the specified file of specified project\n```\n\n## Documentation\n\nSee the [wiki](https://github.com/sonata-nfv/tng-sdk-project/wiki) for further documentation and details.\n\n## Dependencies\n\ntng-sdk-project only depends on Python packages, which are listed in and can be installed through [`setup.py`](setup.py).\n\n## Development\n\nTo contribute to the development of this 5GTANGO component, you may use the very same development workflow as for any other 5GTANGO Github project. That is, you have to fork the repository and create pull requests.\n\n### Setup development environment\n\n```bash\n$ python setup.py develop\n```\n\n### CI Integration\n\n### Run tests manually\n\nYou can also run the test manually on your local machine. To do so, you need to do:\n\n```bash\n$ pytest -v\n$ pycodestyle .\n```\n\n## License\n\nThis 5GTANGO component is published under Apache 2.0 license. Please see the LICENSE file for more details.\n\n---\n#### Lead Developers\n\nThe following lead developers are responsible for this repository and have admin rights. They can, for example, merge pull requests.\n\n- Stefan Schneider ([@stefanbschneider](https://github.com/stefanbschneider))\n- Manuel Peuster ([@mpeuster](https://github.com/mpeuster))\n\n#### Feedback-Chanel\n\n* Please use the GitHub issues to report bugs.\n* You may use the mailing list [sonata-dev@lists.atosresearch.eu](mailto:sonata-dev@lists.atosresearch.eu)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsonata-nfv%2Ftng-sdk-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsonata-nfv%2Ftng-sdk-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsonata-nfv%2Ftng-sdk-project/lists"}